# match - スクリプトおよびチャート関数

match 関数は、最初のパラメータを後続のすべてのパラメータと比較し、一致する数式の数値の位置を返します。比較では大文字と小文字が区別されます。

構文:

match( str, expr1 [ , expr2,...exprN ])

戻り値データ型： 整数

ヒント メモ大文字と小文字を区別せずに比較する場合は、mixmatch 関数を使用します。大文字と小文字を区別せずにワイルドカードを使用して比較する場合は、wildmatch 関数を使用します。

引数

| 引数 | 説明 |
| --- | --- |
| str | 評価される文字列。 |
| expr1 | 有効な数値表現を確認する最初の数式。 |
| expr2 | 有効な数値表現を確認する 2 番目の数式。 |
| expr3 | 有効な数値表現を確認する 3 番目の数式。 |

例: チャートの数式

| 例 | 結果 |
| --- | --- |
| `match( ColorCode,'Blue','Black' )` | この数式は、`ColorCode` 項目に一致するインデックスを返します。`ColorCode` の値が `Blue` の場合、`1` を返します。`ColorCode` の値が `Black` の場合、`2` を返します。一致するものが見つからない場合は、`0` が返されます。 |
| `match( Region, 'North', 'East' )` | この数式は、`Region` 項目に一致するインデックスを返します。`Region` の値が `North` の場合、`1` を返します。`Region` の値が `East` の場合、`2` を返します。一致するものが見つからない場合は、`0` が返されます。 |

このトピックの例のいくつかは、インライン ロードを使用しています。詳細については、「[インライン ロードを使用したデータのロード](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)」を参照してください。

## 例 - match を使用して製品を分類する

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)

#### チャートの数式

概要

データ セットには製品データが含まれています。 消耗品である製品を識別し、分類しようとしています。

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「`Example`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の次の項目:

  * `ProductID`

  * `ProductName`

  * `ProductCategory`

ロード スクリプト

```
Example:
LOAD * INLINE [
ProductID, ProductName, ProductCategory
1, "Laptop", "Electronics"
2, "Banana", "Fruits"
3, "Shampoo", "Toiletries"
4, "TV", "Electronics"
5, "Apple", "Fruits"
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `ProductID`

* `ProductName`

* `ProductCategory`

次のメジャーを作成します:

* `=match(ProductCategory,'Toiletries', 'Fruits')`、`ProductCategory` の値が `Toiletries` または `Fruits` であるインデックスを返します。

* `=If(match(ProductCategory, 'Toiletries', 'Fruits'), 'Consumable', 'Other')`、`ProductCategory` の値が `Toiletries` または `Fruits` であるインデックスを返します。どちらかが見つかった場合は、`Consumable` が返されます。見つからなかった場合は、`Other` が返されます。

結果テーブル

| ProductID | ProductName | ProductCategory | match(ProductCategory,'Toiletries', 'Fruits') | If(match(ProductCategory, 'Toiletries', 'Fruits'), 'Consumable', 'Other') |
| --- | --- | --- | --- | --- |
| 1 | Laptop | Electronics | 0 | Other |
| 2 | Banana | Fruits | 2 | Consumable |
| 3 | Shampoo | Toiletries | 1 | Consumable |
| 4 | TV | Electronics | 0 | Other |
| 5 | Apple | Fruits | 2 | Consumable |

`match` 関数は、最初のメジャー内の検索文字列のインデックスを返します。2 番目のメジャーでは、この結果が `If` 関数で使用され、製品を `Consumable` または `Other` に分類します。

## 例 - match を使用してクライアント データを評価および分類する

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)

#### チャートの数式

概要

データ セットにはクライアント データが含まれています。地域と業種カテゴリが分類要件を満たすクライアントを特定し、分類しようとしています。

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「`Example`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の次の項目:

  * `ClientID`

  * `ClientName`

  * `Region`

  * `Industry`

ロード スクリプト

```
Example:
LOAD * INLINE [
ClientID, ClientName, Region, Industry
1, "Acme Corp", "North", "Manufacturing"
2, "Beta Ltd", "East", "Technology"
3, "Gamma Inc", "West", "Retail"
4, "Delta LLC", "North", "Technology"
5, "Epsilon GmbH", "South", "Healthcare"
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `ClientID`

* `ClientName`

* `Region`

* `Industry`

次のメジャーを作成します:

`=IF(match(Region, 'North', 'East') AND match(Industry, 'Technology', 'Manufacturing'), 'Target Segment', 'Secondary Segment')`、検索文字列のインデックスを返します。見つかった場合は、`Target Segment` が返されます。見つからなった場合は、`Secondary Segment` が返されます。

結果テーブル

| ClientID | ClientName | Region | Industry | IF(match(Region, 'North', 'East') AND match(Industry, 'Technology', 'Manufacturing'), 'Target Segment', 'Secondary Segment') |
| --- | --- | --- | --- | --- |
| 1 | Acme Corp | North | Manufacturing | Target Segment |
| 2 | Beta Ltd | East | Technology | Target Segment |
| 3 | Gamma Inc | West | Retail | Secondary Segment |
| 4 | Delta LLC | North | Technology | Target Segment |
| 5 | Epsilon GmbH | South | Healthcare | Secondary Segment |

`match` 関数はテキストを検索し、追加の分析やデータ分類を実行するために使用できるインデックスを返します。例えば、`Acme Corp` は、`Region` と `Industry` の両方の項目について、`match` 関数の検索条件を満たしているため、`Target Segment` として分類されます。

## 例: match を使用したロード スクリプト

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)

#### ロード スクリプト

概要

match を使用してデータのサブセットをロードできます。たとえば、関数内の数式の数値を返すことができます。次に、その数値に基づいてロードされるデータを制限できます。一致がない場合、Match 関数は 0 を返します。よって、この例に適合しないすべての数式は 0 を返し、`WHERE` ステートメントによるデータ ロードから除外されます。

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 2 つのデータ テーブルにロードされるデータセットは、次のように呼ばれます。

  * `Transactions`: トランザクション項目を含みます

  * `Transaction_Buckets`: 2 つの新しい項目 `Customer` と `Color Code Blue and Black` を作成します。`where` ステートメントは、`match` 関数から結果をロードします。

ロード スクリプト

```
Transactions:
Load * Inline [
transaction_id, transaction_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, m, orange
3752, 20180916, 5.75, 1, 5646471, S, blue
3753, 20180922, 125.00, 7, 3036491, l, Black
3754, 20180922, 484.21, 13, 049681, xs, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black
];
 
/*
Create new table called Transaction_Buckets
Create new fields called Customer, and Color code Blue and Black
Load Transactions table.
Match returns 1 for 'Blue', 2 for 'Black'. 
Does not return a value for 'blue' because match is case sensitive.
Only values that returned numeric value greater than 0 
are loaded by WHERE statement into Transactions_Buckets table.
*/
 
Transaction_Buckets:
Load
 customer_id,
 customer_id as [Customer], 
 color_code as [Color Code Blue and Black]
Resident Transactions
Where match(color_code,'Blue','Black') > 0; 
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `[Color Code Blue and Black]`

* `Customer`

ロード スクリプトで matchmatch 関数を使用した出力を示す結果テーブル

| Color Code Blue and Black | Customer |
| --- | --- |
| Black | 203521 |
| Black | 3036491 |
| Blue | 2038593 |

## 例: match を使用したチャートの数式

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)

#### チャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「Example」というデータ テーブルにロードされるデータセット。

* データ テーブル内の次の項目:

  * Cities

  * Count

ロード スクリプト

```
Example:
Load * inline [
Cities, Count
Toronto, 123
Toronto, 234
Toronto, 231
Boston, 32
Boston, 23
Boston, 1341
Beijing, 234
Beijing, 45
Beijing, 235
Stockholm, 938
Stockholm, 39
Stockholm, 189
zurich, 2342
zurich, 9033
zurich, 0039];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:

* Cities

次のメジャーを作成します:

* =match( Cities,'Toronto','Boston','Beijing','Zurich')、検索文字列のインデックスを返します。

* =match( Cities,'Toronto','Boston','Beijing','Stockholm','zurich')、検索文字列のインデックスを返します。

* =Cities & ' - ' & match ( Cities, 'Toronto','Boston', 'Beijing','Stockholm','zurich')、Cities 項目と検索文字列のインデックスを返します。

以下のテーブルの最初のメジャーは、Stockholm が match 関数の数式のリストに含まれていないため、Stockholm に対して 0 を返します。match の比較では大文字と小文字が区別されるため、Zurich に対しても 0 が返されます。

結果テーブル

| Cities | match( Cities,'Toronto','Boston','Beijing','Zurich') | match( Cities,'Toronto','Boston','Beijing','Stockholm','zurich') | Cities & ' - ' & match ( Cities, 'Toronto','Boston', 'Beijing','Stockholm','zurich') |
| --- | --- | --- | --- |
| Beijing | 3 | 3 | Beijing - 3 |
| Boston | 2 | 2 | Boston - 2 |
| Stockholm | 0 | 4 | Stockholm - 4 |
| Toronto | 1 | 1 | Toronto - 1 |
| zurich | 0 | 5 | zurich - 5 |

## 例: match を使用したカスタム ソート数式

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)

#### チャートの数式

概要

match を使用して、1 つの数式のカスタム ソートを実行できます。この例では、前の例と同じデータセットを使用します。

既定では、列はデータに応じて数値順またはアルファベット順に並べ替えられます。

既定の並べ替え順序を示す結果テーブル

| Cities |
| --- |
| Beijing |
| Boston |
| Stockholm |
| Toronto |
| zurich |

並べ替え順序を変更するには、次の手順を実行します。

1. プロパティ パネルで、グラフの [ソート] セクションを開きます。

2. カスタム ソートを適用する列の自動ソートをオフにします。

3. [数値によるソート] および [アルファベット順でソート] チェックボックスをオフにします。

4. [数式によるソート] を選択し、次に似た数式を入力します。

   =match( Cities, 'Toronto','Boston','Beijing','Stockholm','zurich')

   Cities 列のソート順序が変更されます。

matchmatch 関数を使用したソート順を示す結果テーブル

| Cities |
| --- |
| Toronto |
| Boston |
| Beijing |
| Stockholm |
| zurich |

## 詳細を見る

* [mixmatch - スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/mixmatch.htm)
* [wildmatch - スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/wildmatch.htm)