選択した文字を基点にして、テキスト文字列から複数の文字を抽出します。
たとえば、製品 SKU の先頭に決まった長さのコードが付いている場合、MID 関数を使ってコードの後の文字を抽出できます。
構文
MID(Text, Start position [, Number of characters])
引数
引数 | データ型 | 説明 |
Text (必須) | テキスト ライン アイテム、テキスト定数、または一般式を使用できます。 | 文字抽出元のテキストです。 |
Start position (必須) | 数値 ライン アイテム、プロパティ、又は式を使用できます。 | テキスト文字列の数値形式の開始位置です。選択した開始位置の文字も含めて文字が抽出されます。 テキスト文字列にない開始位置、または負の数値を使用した場合、関数は空白の結果を返します。 |
Number of characters | 数値 ライン アイテム、プロパティ、又は式を使用できます。 | テキスト文字列から抽出する文字数です。 この引数を省略した場合、MID 関数は Start position 引数で指定した位置の文字を返します。 この引数に負の数値かゼロを使用した場合、MID 関数は空の結果を返します。 この引数が Text 引数の文字数よりも大きい場合、MID 関数は文字列の文字だけを返します。 |
MID 関数は結果をテキスト形式で返します。
計算エンジンの機能の違い
Polaris では、複合文字を含むものや、基本多言語面 (BMP) 以外の文字を含むものなど、すべてのテキスト値で MID 関数が想定通りに動作します。
Classic エンジンでは MID 関数で以下のように長さが考慮されます。
- BMP 内の Unicode 文字は 1 文字分
- BMP 外の Unicode 文字は 2 文字分
- 複合文字 (例: アクセントや発音区別符がある文字) の長さはコンポーネント数と等しい
構文の例
MID(Product SKU, 4, 10)
この例では、商品を区別するための文字列のリストが「Product SKU」というライン アイテムに含まれています。各 SKU の先頭には、製品カテゴリーを表す 3 文字が付いています。製品 SKU のこの 3 文字の後には、製品を区別するための 5 ~ 10 文字の一意の文字列があります。
この式では、Text 引数に「Product SKU」ライン アイテム、Start position 引数に 4 、Number of characters 引数に 10 を使用しています。そのため、この式は製品 SKU の先頭から 4 文字目以降の一意の文字列を返します。さらに、それぞれの一意の文字列について最大 10 文字まで返し、10 文字に満たない場合でもすべての文字が含まれます。
同等の操作が行える Excel の関数
例
MID 関数のシンプルな例
この例では、「Location code」ライン アイテムに 8 文字のコードがあります。コードの各部分は 2 文字で構成されており、ハイフンで区切られています。先頭と二つ目の文字は都市、四つ目と五つ目の文字は地域、七つ目と八つ目の文字は国を表しています。
地域コードを抽出するために、この例では Start position 引数に 4 を使用し、Number of characters 引数に 2 を使用しています。そのため、この式は四つ目の文字の後にある 2 文字 (地域コード) を抽出します。これをモデルの別の部分に使用したり、エクスポートしたりできます。
Sapporo | Hakodate | Tokyo | Hachiōji | Kyoto | Uji | Naha | Okinawa | |
Location code | 01-01-JP | 02-01-JP | 01-13-JP | 02-13-JP | 01-26-JP | 01-26-JP | 01-47-JP | 02-47-JP |
MID(Location code, 4, 2) | 01 | 01 | 13 | 13 | 26 | 26 | 47 | 47 |
NAME 関数を組み合わせた、リスト アイテムへの MID の使用
NAME 関数を使ってリスト アイテムをテキストに変換することで、変換したリスト アイテムに MID 関数を使用できます。ITEM 関数を使って、NAME 関数で使用できるリスト アイテムを返すこともできます。
この例では前の例と同じデータを使いますが、今回は「Location code」ライン アイテムがリスト形式になっています。そのため、MID 関数で使用するためにテキスト形式に変換する必要があります。
Sapporo | Hakodate | Tokyo | Hachiōji | Kyoto | Uji | Naha | Okinawa | |
Location code | 01-01-JP | 02-01-JP | 01-13-JP | 02-13-JP | 01-26-JP | 01-26-JP | 01-47-JP | 02-47-JP |
MID(NAME(Location code), 4, 2) | 01 | 01 | 13 | 13 | 26 | 26 | 47 | 47 |
文字列の末尾からのテキストの抽出
LENGTH 関数と MID 関数を組み合わせて使用することで、文字列の末尾から指定した文字数だけ文字を抽出できます。テキスト文字列の先頭の文字が固定されていないものの、末尾の文字が一定である場合はこの使い方が便利です。
これを行うには以下を実行します。
- Text 引数でテキスト形式のライン アイテム、テキスト定数、又は一般式を指定します。
- Start position 引数で、括弧で囲んだ式を使用します。
- LENGTH を使用して、Text 引数の各値の文字数を指定します。
- 負の数値を使って、文字列の末尾から先頭に向かって何文字のテキストを抽出するかを指定します。
- Number of characters 引数には抽出する文字数を指定します。
この例では、「Product Code」ライン アイテムにコードがあります。コードは、ワインの種類、識別番号、地域番号という順番で構成されています。ワインの種類に使われる単語の長さはワインによって異なるため、「Product Code」ライン アイテムの先頭から何文字目に識別番号が来るかも決まっていません。
この表の一番下にあるライン アイテムには、上記の手順を示した式が含まれています。つまり、商品コードの末尾から指定した文字数の文字列を抽出します。
Sauvignon Blanc | Chianti | Riesling | Merlot | Pinot Noir | Zinfandel | |
Product Code | White-101-FR | White-102-BR | White-103-AU | Red-201-ES | Red-202-AR | Red-203-NZ |
MID(Product Code, (LENGTH(Product Code) -6), 3) | 101 | 102 | 103 | 201 | 202 | 203 |