Wenn dann Abfrage, Python oder VBA, Feldberechnung

Hallo,

ich brauche Hilfe bei der Feldberechnung in der Attributtabelle. Ich brauche soetwas wie eine "wenn dann" Abfrage. Eine Spalte [WTF] enthält Dezimalwerte von 0 bis 18, auf Basis dieser möchte ich eine neue Spalte [LAWA] nach folgenden Bedingungen füllen: Wenn "0 bis 0,5" dann "1", wenn "0,51 bis 1" dann "2", wenn "1,01 bis 2" dann "3" usw. bis Klasse 5.

In Excel klappt diese Abfrage wie folgt: =WENN(B2>4;5;WENN(B2>2;4;WENN(B2>1;3;WENN(B2>0,5;2;WENN(B2>0;1;"Fehler")))))

Nur in VBA bzw. Python bekomme ich das nicht hin!
In Excel rechnen und dann anknüpfen geht nicht, da die Tabelle ca. 4 Mio Einträge hat. Und bei Excel bei ca. 1 Mio. schluss ist.

Danke an alle die helfen können.

Gruß
So sollte es gehen:

VBA (Advanced anhaken):

Pre-Logic VBA-Script Code
-------------------------------
dim val as double
dim output as long
val = [WTF]
if val >= 0 and val <= 0.5 then
output = 1
elseif val >= 0.51 and val <= 1 then
output = 2

'... Rest ergaenzen

elseif val >= 4.51 and val <= 5 then
output = 10
else
output = 0
end if

-------------------------------
Lawa =
-------------------------------
output
-------------------------------
Falls du ArcGIS 10 hast, musst du oben "as double" und "as long" löschen (VBScript).
Hallo,

danke für den Tip. Ich habe es inzwischen mit Hilfe eines Kollegen ganz ähnlich gelöst. Ich hatte ein Python Script gefunden welches nicht lief, da ich Dezimalzahlen mit einem Komma und nicht mit einem Punkt getrennt habe (daran merkt man mein laienhaftes Programmierverständnis).

Insgesamt sieht es nun so aus mit VB (ArcGIS 10):

DIM WIDM

if [WTF] < 0.5 Then
WIDM = 1
elseif ([WTF] >= 0.5 and [WTF] < 1) Then
WIDM = 2
elseif ([WTF] >= 1.01 and [WTF] < 2) Then
WIDM = 3
elseif ([WTF] >= 2.01 and [WTF] < 4) Then
WIDM = 4
elseif [WTF] >4 Then
WIDM = 5
end if

Und so mit Python:

pre logic script code=

def Reclass(WTF):
if (WTF >= 0 and WTF <= 0.5):
return 1
elif (WTF > 0.51 and WTF <= 1):
return 2
elif (WTF > 1.01 and WTF <= 2):
return 3
elif (WTF > 2.01 and WTF <= 4):
return 4
elif (WTF > 4.01):
return 5

unteres Fenster: Reclass(!WTF!)

Viele Grüße und ich hoffe, es hilft noch anderen weiter!

Gruß, Marc