# Field Calculater

840
9
01-24-2014 12:03 AM New Contributor
Dear tech Support Team,
I am working on table i want some correction in script for calculating field
I have Data in Grid_code field in the form of 1 to 6
In grid_code field there is value 1 to 6 i want 1 is convert as Very low, 2 Is Low, 3 is Moderate, 4 is High and 5 is Very high in Class field i am using following script

Dim Output as String
If [Class] = 1  Then
Output = "Very Low"
Elseif [Class] = 2 Then
Output = "Low"
Elseif [Class] = 3  Then
Output = "Moderate"
Elseif [Class] = 4  Then
Output = "High"
Elseif [Class] = 5  Then
Output = "Very High"
Elseif [Class] = 6  Then
Output = "Extreme"
Else
Output = "xxx"
end if

Thanks & Regards
Abhishek Misra
Tags (3)
1 Solution

Accepted Solutions by MVP Honored Contributor

Ok. I missed that your code had at least 3 syntax errors. I overlooked them, because the syntax is so basic. “AND” is a Logical Operators used to link expressions that evaluate to True or False (See this link for logical operator help<http://msdn.microsoft.com/en-us/library/4ah2h0k3(v=vs.84).aspx>). You have to use “>=” not “= >” (See this link for comparison operators<http://msdn.microsoft.com/en-us/library/9hck4s70(v=vs.84).aspx>). You have to use “ElseIf” not “Else If” (See this link for If Else Then syntax<http://msdn.microsoft.com/en-us/library/5h27x7e9(v=vs.84).aspx>). You should study this MSDN website and learn more about VB Script syntax.

If <= 1000 Then

Output = "I"

Elseif > 1000 AND <= 3000 Then

Output = "II"

Elseif > 3000 AND <= 5000 Then

Output = "III"

Elseif > 5000 AND <= 10000 Then

Output = "IV"

Elseif > 10000 Then

Output = "V"

Else

Output = "xxx"

End If

9 Replies Frequent Contributor III
If you only need to do this once or twice your over thinking it.

Simple perform a selection for all feature 1 then field calculate "Very Low"

Or create a coded domain for that attribute

1   Very Low
2   Low

Etc.

That way down the road whenever someone enters the 1, 2, 3 etc... the field will populate with the desired text.  And it will appear as a drop down selection when editing.

Dear tech Support Team,
I am working on table i want some correction in script for calculating field
I have Data in Grid_code field in the form of 1 to 6
In grid_code field there is value 1 to 6 i want 1 is convert as Very low, 2 Is Low, 3 is Moderate, 4 is High and 5 is Very high in Class field i am using following script

Dim Output as String
If [Class] = 1  Then
Output = "Very Low"
Elseif [Class] = 2 Then
Output = "Low"
Elseif [Class] = 3  Then
Output = "Moderate"
Elseif [Class] = 4  Then
Output = "High"
Elseif [Class] = 5  Then
Output = "Very High"
Elseif [Class] = 6  Then
Output = "Extreme"
Else
Output = "xxx"
end if

Thanks & Regards
Abhishek Misra by MVP Honored Contributor
The code you have written should work if you get rid of the line that says Dim Output as String.  VB Script does not use DIM anymore and it is not even necessary if you are using VBA with ArcMap 9.3 (but then the ElseIf needs to be changed to Else If for VBA).  Make sure you do the calculate to a text field with enough characters to accept the values you want it output and the make sure the field expression is the word Output.  If the Class field is numeric you can't use the field calculator to overwrite that field to a text value and would have to create a new field.

```If [Class] = 1  Then
Output = "Very Low"
Elseif [Class] = 2 Then
Output = "Low"
Elseif [Class] = 3 Then
Output = "Moderate"
Elseif [Class] = 4 Then
Output = "High"
Elseif [Class] = 5 Then
Output = "Very High"
Elseif [Class] = 6 Then
Output = "Extreme"
Else
Output = "xxx"
End If```

Expression: Output New Contributor

Dear Richard

once again i am stuck in a similar kind of script please help me my script is

If [Area_ha]= < 1000  Then

Output = "I"

Else if [Area_ha] > 1000 & [Area_ha]= < 3000 Then

Output = "II"

Else if [Area_ha] > 3000 & [Area_ha]= < 5000 Then

Output = "III"

Else if [Area_ha] > 5000 & [Area_ha]= < 10000 Then

Output = "IV"

Else if [Area_ha] > 10000 Then

Output = "V"

Else

Output = "xxx"

end if

Thanks & Regards

Abhishek by MVP Honored Contributor

Abhishek:

Please see the revision below. You cannot use the & for AND in a logical expression. That only works for concatenating strings. New Contributor

but i am unable to understand your point i want to calculate field in between 1000 to 3000 as II

so what kind of logical expression will be use for this

Regards

Abhishek Frequent Contributor II

Abhishek,

You have to use the word AND in your script not the ampersand '&' symbol:

Else if [Area_ha] > 1000 AND [Area_ha]= < 3000 Then

Regards

Anthony by MVP Honored Contributor

Ok. I missed that your code had at least 3 syntax errors. I overlooked them, because the syntax is so basic. “AND” is a Logical Operators used to link expressions that evaluate to True or False (See this link for logical operator help<http://msdn.microsoft.com/en-us/library/4ah2h0k3(v=vs.84).aspx>). You have to use “>=” not “= >” (See this link for comparison operators<http://msdn.microsoft.com/en-us/library/9hck4s70(v=vs.84).aspx>). You have to use “ElseIf” not “Else If” (See this link for If Else Then syntax<http://msdn.microsoft.com/en-us/library/5h27x7e9(v=vs.84).aspx>). You should study this MSDN website and learn more about VB Script syntax.

If <= 1000 Then

Output = "I"

Elseif > 1000 AND <= 3000 Then

Output = "II"

Elseif > 3000 AND <= 5000 Then

Output = "III"

Elseif > 5000 AND <= 10000 Then

Output = "IV"

Elseif > 10000 Then

Output = "V"

Else

Output = "xxx"

End If New Contributor

Thanks Richerd Script is working fine

Regards

Abhishek New Contributor
Thanks now Script is working fine
Abhishek Misra

The code you have written should work if you get rid of the line that says Dim Output as String.  VB Script does not use DIM anymore and it is not even necessary if you are using VBA with ArcMap 9.3 (but then the ElseIf needs to be changed to Else If for VBA).  Make sure you do the calculate to a text field with enough characters to accept the values you want it output and the make sure the field expression is the word Output.  If the Class field is numeric you can't use the field calculator to overwrite that field to a text value and would have to create a new field.

```If [Class] = 1  Then
Output = "Very Low"
Elseif [Class] = 2 Then
Output = "Low"
Elseif [Class] = 3 Then
Output = "Moderate"
Elseif [Class] = 4 Then
Output = "High"
Elseif [Class] = 5 Then
Output = "Very High"
Elseif [Class] = 6 Then
Output = "Extreme"
Else
Output = "xxx"
End If```

Expression: Output 