フィールド演算 VBScript の例
VBA または VBScript を使用した経験があり、スクリプト構文を十分に理解している場合は、フィールド演算 ツールか フィールド演算 (複数) ツールの 式のタイプ パラメーターで VBScript オプションを使用します。 このオプションは、VBScript 計算で フィールド演算 ツールを使用するレガシー モデルや ArcGIS Desktop のスクリプトもサポートしています。
注意:
Windows 11 バージョン 24H2 では、VBScript はオンデマンドの機能となり、VBScript 機能が必要です。
VBScript オプションの使用を継続するには、次のいずれかを行います。
式のタイプを Python、Arcade または SQL に変換します。
Windows のシステム設定で VBScript のオプション機能を有効にします。
詳細については、「削除と非推奨のお知らせ」をご参照ください。
このトピックでは、VBScript ベースの フィールド演算 を中心に取り上げます。 Python の例の詳細については、「フィールド演算の Python の例」をご参照ください。 ArcGIS 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