VBA または VBScript を使用した経験があり、スクリプト構文を十分に理解している場合は、[フィールド演算 (Calculate Field)] ツールか [フィールド演算 (Calculate Fields)] (複数) ツールの [式のタイプ] パラメーターで [VBScript] オプションを使用します。 このオプションは、VBScript 計算で [フィールド演算 (Calculate Fields)] ツールを使用するレガシー モデルや ArcGIS Desktop のスクリプトもサポートしています。
このトピックでは、VBScript ベースの [フィールド演算 (Calculate Field)] を中心に取り上げます。 Python の例の詳細については、「フィールド演算 (Calculate Field) の Python の例」をご参照ください。 Arcade 式の詳細については、「ArcGIS Arcade ガイド」をご参照ください。 SQL 式の詳細については、「フィールドの計算」をご参照ください。
注意:
VBScript では、どのデータ タイプも明示的に宣言することができません。すべての変数は暗黙的に Variant になります。 「Dim x as String」のようなステートメントは削除するか、「Dim x」のように単純化する必要があります。
単純な演算
短い式だけでさまざまな演算ができます。
VBScript の文字列関数
文字列は、VBScript の一連の文字列関数でサポートされています。これには、Left、InStr、Chr などがあります。 次に、フィールド演算でよく使用される文字列関数を使用した VBScript の例を示します。
文字列の左から順に、指定された数の文字を返すには、Left 関数を使用します。
Expression:
Left([MyField], 1)
文字列の右から順に、指定された数の文字を返すには、Right 関数を使用します。
Expression:
Right([MyField], 1)
開始位置と、任意の文字数を使用し、文字列から指定された数の文字を返すには、Mid 関数を使用します。
Expression:
Mid([MyField], 14, 4)
ある文字列が別の文字列に最初に出現した位置を返すには、InStr 関数を使用します。
Expression:
InStr([MyField], " ")
指定されたサブ文字列を別のサブ文字列で置換した文字列を返すには、Replace 関数を使用します。
Expression:
Replace([MyField], "#", "!")
指定された文字コードに関連付けられている文字を返すには、Chr 関数を使用します。
次の例では、改行文字を感嘆符に置換します。
Expression:
Replace([MyField], Chr(13), "!")
2 つのフィールド値を結合するには、& 演算子を使用します。
Expression:
[MyField1] & " " & [MyField2]
単純な関数の例
VBScript では、数を処理するためのツールがいくつか提供されます。
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
x + y | x に y を加算 | 1.5 + 2.5 | 4.0 |
x - y | x から y を減算 | 3.3 - 2.2 | 1.1 |
x * y | x に y を乗算 | 2.0 * 2.2 | 4.4 |
x / y | x を y で除算 | 3 / 2 | 1.5 |
x \ y | x を y で除算 (整数の除算) | 3 \ 2 | 1 |
x MOD y | x を y で除算した剰余 | 8 MOD 3 | 2 |
x ^ y | x の y 乗 | 2 ^ 3 | 8 |
フィールドの値に 2 を掛けます。
[Rank] * 2
VBScript での論理を使用したフィールド演算
論理パターンをコード ブロックに含めるには、If、ElseIf、および Else ステートメントを使用します。
フィールドの値に基づいて分類します。
Expression:
density
Code Block:
Dim density
If [POP90_SQMI] < 100 Then
density = "low"
ElseIf [POP90_SQMI] < 300 Then
density = "medium"
Else
density = "high"
End If