procedure te groot if then else functies

Status
Niet open voor verdere reacties.

aris85

Gebruiker
Lid geworden
25 mrt 2010
Berichten
34
Hi allen,

Ik wil postcode omzetten in provinciecode. Nu zoek je dan in heel veel range en heb ik daar een macro voor geschreven. Mijn bestand is groot. 93071 regels en de provincie codes dat zijn er ook heel wat gezien de diversiteit in postcodes. Wat kan ik aanpassen zodat ik toch op een snelle manier de provinciecode kan toevoegen? Dank!

Dim i As Integer

i = 2

While i < 93071

If Cells(i, 20) >= 3218 And Cells(i, 20) <= 3225 Then Cells(i, 22) = "Zuid-Holland" Else
If Cells(i, 20) >= 4796 And Cells(i, 20) <= 4796 Then Cells(i, 22) = "Noord-Brabant" Else
If Cells(i, 20) >= 7152 And Cells(i, 20) <= 7152 Then Cells(i, 22) = "Gelderland" Else
If Cells(i, 20) >= 8000 And Cells(i, 20) <= 8044 Then Cells(i, 22) = "Overijssel" Else

i = i + 1

Wend
 
Niemand die weet hoe je deze code kan omschrijven? Of een andere manier heeft om provincies bij postcodes te plaatsen?
 
Test deze eens. Ik kom uit op 200sec.
Code:
Sub tst()
't = Timer
    sq = [T2:T93071]
    For i = 1 To UBound(sq)
    Select Case sq(i, 1)
        Case 3218 To 3225
            sn = sn & "Zuid-Holland" & "|"
        Case Is = 4796
            sn = sn & "Noord-Brabant" & "|"
        Case Is = 7152
            sn = sn & "Gelderland" & "|"
        Case 8000 To 8044
            sn = sn & "Overijssel" & "|"
        Case Else
            sn = sn & "|"
    End Select
    Next
    [V2].Resize(UBound(sq)) = Application.Transpose(Split(sn, "|"))
'MsgBox Timer - t
End Sub
 
Laatst bewerkt:
Ik heb deze code geprobeerd maar weet niet waar ik nu de provinciecode wegschrijf? In de eerste code kijk ik of een cel leeg is zo niet dan wordt de provincie erbij gezocht.

In de code door warm bakkertje wordt waar de code gezocht?
In de code door warm bakkertje wordt waar de code weggeschreven?
 
Net hetzelfde als in jouw code nl. het nr wordt gecontroleerd in kolom 20 (T) en daarna wordt de provinciecode geschreven in kolom 22 (V).
 
Moet je die dan niet nog definieren? Nu zie ik nl geen 20 en 22 terug?
 
Bereik met codes
Code:
sq = [T2:T93071]
Kolom waar de provincies in worden weggeschreven
Code:
[V2].Resize(UBound(sq)) = Application.Transpose(Split(sn, "|"))
 
Nu snap ik m! Heb mijn eigen code beetje kunnen omzeilen door i als long te definieren. Maar nu heb ik een hele lange lijst van postcodes en provinciecodes en dus gebruik ik jouw code. Maar dan krijg ik bij de laatste code, daar waar provincies worden weggeschreven typen komen niet overeen met elkaar.
 
Het werkt. Ik deel het bestand gewoon op in twee delen. Dank voor je uitleg en je tijd.
 
Post anders je bestandje eens met je kolom met Postcodes en je lijst met Provincies.
Ben eigenlijk wel benieuwd waarom het niet in 1X gaat, want in XL2003 ging hij zonder probleem over 65536 rijen.
 
Het bestand is te groot, maar is een kolom met 81.000 records waarin een 4 cijferige postcode staat. en dit is de macro:


[SQL]Sub provinciecode()

't = Timer
sq = [T60001:T80915]
For i = 1 To UBound(sq)
Select Case sq(i, 1)
Case 1000 To 1299
sn = sn & "Noord-Holland" & "|"
Case 1300 To 1379
sn = sn & "Flevoland" & "|"
Case 1380 To 1383
sn = sn & "Noord-Holland" & "|"
Case 1390 To 1393
sn = sn & "Utrecht" & "|"
Case 1394
sn = sn & "Noord-Holland" & "|"
Case 1396
sn = sn & "Utrecht" & "|"
Case 1398 To 1425
sn = sn & "Noord-Holland" & "|"
Case 1426 To 1427
sn = sn & "Utrecht" & "|"
Case 1428 To 1429
sn = sn & "Zuid-Holland" & "|"
Case 1430 To 2158
sn = sn & "Noord-Holland" & "|"
Case 2159 To 3381
sn = sn & "Zuid-Holland" & "|"
Case 3382 To 3464
sn = sn & "Utrecht" & "|"
Case 3465 To 3466
sn = sn & "Zuid-Holland" & "|"
Case 3467 To 3769
sn = sn & "Utrecht" & "|"
Case 3770 To 3794
sn = sn & "Gelderland" & "|"
Case 3795 To 3836
sn = sn & "Utrecht" & "|"
Case 3837 To 3888
sn = sn & "Gelderland" & "|"
Case 3890 To 3899
sn = sn & "Flevoland" & "|"
Case 3900 To 3999
sn = sn & "Utrecht" & "|"
Case 4000 To 4119
sn = sn & "Gelderland" & "|"
Case 4120 To 4125
sn = sn & "Utrecht" & "|"
Case 4126 To 4129
sn = sn & "Zuid-Holland" & "|"
Case 4130 To 4139
sn = sn & "Utrecht" & "|"
Case 4140 To 4146
sn = sn & "Zuid-Holland" & "|"
Case 4147 To 4162
sn = sn & "Gelderland" & "|"
Case 4163 To 4169
sn = sn & "Zuid-Holland" & "|"
Case 4170 To 4199
sn = sn & "Gelderland" & "|"
Case 4200 To 4209
sn = sn & "Zuid-Holland" & "|"
Case 4211 To 4212
sn = sn & "Gelderland" & "|"
Case 4213 To 4213
sn = sn & "Zuid-Holland" & "|"
Case 4214 To 4219
sn = sn & "Gelderland" & "|"
Case 4220 To 4249
sn = sn & "Zuid-Holland" & "|"
Case 4250 To 4299
sn = sn & "Noord-Brabant" & "|"
Case 4300 To 4599
sn = sn & "Zeeland" & "|"
Case 4600 To 4671
sn = sn & "Noord-Brabant" & "|"
Case 4672 To 4679
sn = sn & "Zeeland" & "|"
Case 4680 To 4681
sn = sn & "Noord-Brabant" & "|"
Case 4682 To 4699
sn = sn & "Zeeland" & "|"
Case 4700 To 5299
sn = sn & "Noord-Brabant" & "|"
Case 5300 To 5335
sn = sn & "Gelderland" & "|"
Case 5340 To 5765
sn = sn & "Noord-Brabant" & "|"
Case 5766 To 5817
sn = sn & "Limburg" & "|"
Case 5820 To 5846
sn = sn & "Noord-Brabant" & "|"
Case 5850 To 6019
sn = sn & "Limburg" & "|"
Case 6020 To 6029
sn = sn & "Noord-Brabant" & "|"
Case 6030 To 6499
sn = sn & "Limburg" & "|"
Case 6500 To 6584
sn = sn & "Gelderland" & "|"
Case 6584 To 6599
sn = sn & "Limburg" & "|"
Case 6600 To 7399
sn = sn & "Gelderland" & "|"
Case 7400 To 7739
sn = sn & "Overijssel" & "|"
Case 7740 To 7766
sn = sn & "Drenthe" & "|"
Case 7767 To 7799
sn = sn & "Overijssel" & "|"
Case 7800 To 7949
sn = sn & "Drenthe" & "|"
Case 7950 To 7955
sn = sn & "Overijssel" & "|"
Case 7956 To 7999
sn = sn & "Drenthe" & "|"
Case 8000 To 8049
sn = sn & "Overijssel" & "|"
Case 8050 To 8054
sn = sn & "Gelderland" & "|"
Case 8055 To 8069
sn = sn & "Overijssel" & "|"
Case 8070 To 8099
sn = sn & "Gelderland" & "|"
Case 8100 To 8159
sn = sn & "Overijssel" & "|"
Case 8160 To 8195
sn = sn & "Gelderland" & "|"
Case 8196 To 8199
sn = sn & "Overijssel" & "|"
Case 8200 To 8259
sn = sn & "Flevoland" & "|"
Case 8260 To 8299
sn = sn & "Overijssel" & "|"
Case 8300 To 8322
sn = sn & "Flevoland" & "|"
Case 8323 To 8349
sn = sn & "Overijssel" & "|"
Case 8350 To 8354
sn = sn & "Drenthe" & "|"
Case 8355 To 8379
sn = sn & "Overijssel" & "|"
Case 8380 To 8387
sn = sn & "Drenthe" & "|"
Case 8388 To 9299
sn = sn & "Friesland" & "|"
Case 9300 To 9349
sn = sn & "Drenthe" & "|"
Case 9350 To 9399
sn = sn & "Groningen" & "|"
Case 9400 To 9499
sn = sn & "Drenthe" & "|"
Case 9500 To 9999
sn = sn & "Groningen" & "|"

Case Else
sn = sn & "|"
End Select
Next
[V60001].Resize(UBound(sq)) = Application.Transpose(Split(sn, "|"))
'MsgBox Timer - t
End Sub


[/SQL]
 
Enkel de kolom met postcodes en inpakken met winzip of Winrar.
 
Ik heb het programma niet waarmee ik deze kan inpakken. Hoop ik later te doen als je wil
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan