COMPARE 関数はテキスト値を比較します。比較対象のテキスト値が同じ場合は 0 が返されます。一つ目のテキスト値の方が大きい場合は 1 が返され、一つ目のテキスト値の方が小さい場合は -1 が返されます。
テキスト値が同じ場合の条件付き書式のベースとして COMPARE を使用できます。
構文
COMPARE(Text to compare 1, Text to compare 2 [, Comparison mode] [, Locale])
引数
引数 | データ型 | 説明 |
Text to compare 1 (必須) | テキスト | 比較対象の最初のテキスト値 |
Text to compare 2 (必須) | テキスト | 比較対象の二つ目のテキスト値 |
Comparison mode | キーワード | 使用する比較モード。 使用できるキーワードは IDENTICAL、PRIMARY、SECONDARY、TERTIARY です。 以下の「Comparison mode 引数のキーワード」セクションにはさらに詳しい情報があります。 |
Locale | キーワード | 使用するロケール。一部の言語にのみ影響します。 ISO 639 コードと ISO 3166 コードでは利用可能なロケールが異なります。 |
COMPARE 関数は数値を返します。
Comparison mode 引数のキーワード
各キーワードの説明は以下のとおりです。
キーワード | 説明 |
IDENTICAL | Text to compare 1 引数と Text to compare 2 引数を比較して、あらゆる点で相互に一致するかどうかを確認します。 |
PRIMARY | Text to compare 1 引数と Text to compare 2 引数の基本文字を比較します。 選択したロケールに従って、テキスト値のアルファベット順が左から右に比較されます。 二つのテキスト値の先頭文字が同じで、いずれか一方の文字数の方が多い場合、文字数が多い方の文字列が大きいとみなされます。 |
SECONDARY | Text to compare 1 引数と Text to compare 2 引数の基本文字およびアクセントを比較します。 二つのテキスト値の基本文字が同じ場合、アクセントを含むテキスト値の方が大きいとみなされます。 |
TERTIARY | Comparison mode 引数を省略した場合のデフォルトのキーワードです。 Text to compare 1 引数と Text to compare 2 引数の基本文字、アクセント、大文字/小文字を比較します。 二つのテキスト値の基本文字とアクセントが同じで、いずれか一方に大文字が含まれている場合、大文字が含まれているテキスト値の方が大きいとみなされます。 |
計算エンジンの機能の違い
Polaris では COMPARE 関数を使用できません。
Classic エンジンでは使用できます。
構文の例
COMPARE(Top Salesperson North, Top Salesperson South)
追加情報
テキスト値の比較方法
Unicode や Java での照合と同様、あるテキスト値が別のテキスト値より大きい/小さいとみなされるかどうかは複数の条件に左右されます。
Comparison mode キーワードでは、テキスト値の基本文字、アクセント、大文字/小文字がそれぞれ比較されます。ただし、この動作は選択したロケールによって異なります。
キーワードとして SECONDARY か TERTIARY を使用してテキスト値のアクセント又は大文字/小文字を比較した場合、COMPARE 関数ではそれより前の条件も適用されます。たとえば、TERTIARY を使用してテキスト値の大文字/小文字を比較する場合、最初に基本文字とアクセントが比較されます。
Locale 引数の効果
Locale 引数では、Java 8 で利用可能なロケールに対応する ISO 言語コードを使用できます。次のいずれかを使用できます。
- en、fr、de、tr などの、2 文字の ISO 639 言語コード
- ISO 639 言語コードと ISO 3166 国コードを組み合わせた 4 文字のコード (en-us、fr-be、de-at、tr-tr など)。ただし、Anaplan では、en_us、fr_be、de_at、tr_tr となるように、ハイフン (-) をアンダースコア (_) に置き換える必要があります。
Locale 引数は特定の言語でしか機能しません。たとえば、コードが tr のトルコ語がこれに含まれます。トルコ語には「i」という文字に小文字 (ドットありとドットなし) と大文字 (ドットありとドットなし) の四つのバージョンがあります。
COMPARE 関数の Locale 引数によって、英字における位置など、文字の基本的なプロパティが変わる場合があります。以下は Locale 引数が COMPARE 関数に及ぼす影響のいくつかの例です。
- 言語コードが英語を表す「en」の場合、デンマーク語の文字「ø」は「o」の基本文字とみなされます。言語コードがデンマーク語を表す「da」の場合、「ø」の基本文字はアクセント付き文字とみなされず、アルファベット順では「z」の後になります。
- 言語コードが「sv」のスウェーデン語の場合、「v」と「w」は同じ文字とみなされます。
- 言語コードが「lt」のリトアニア語の場合、アルファベット順で「y」の方が「j」より前になります。
同等の操作が行える Excel の関数
例
デフォルトの比較動作の例
この例では列に時間があります。行にはライン アイテムが三つあります。最初の二つのライン アイテムには、「All Regions」と「North」で最も営業成績が高い従業員が表示されています。三つ目のライン アイテムには、「North」地域で最も営業成績が高い従業員が「All Regions」と同じかどうかを確認するために COMPARE を使用する式があります。
Jan 21 | Feb 21 | Mar 21 | |
Top Sales All Regions | Peter | Rashid | Jenny |
Top Sales North | Peter | Peter | John |
Top Sales in North?
| 0 | 1 | -1 |
この式では、Locale 引数のデフォルトの動作である、ISO 369 言語コード「en」を使用しています。
「Jan 21」では、「All Regions」と「North」の両方でテキスト値が「Peter」となっています。「All Regions」と「North」でテキスト値が同じであるため、COMPARE では値として 0 が返されています。
Feb 21 では「All Regions」のテキスト値が「Rashid」で、「North」のテキスト値が「Peter」となっています。「Rashid」と「Peter」で先頭の文字が異なるため、COMPARE 関数ではこれらの文字を比較します。アルファベット順では「P」よりも「R」の方が順番が後であるため、テキスト値「Rashid」の方が大きいとみなされ、式では値として 1 が返されます。
Mar 21 では「All Regions」のテキスト値が「Jenny」で、「North」のテキスト値が「John」となっています。「Jenny」と「John」では先頭の文字がどちらも「J」であるため、比較では無視されます。つまり、それぞれのテキスト値の二つ目の文字が比較されます。アルファベット順では「o」よりも「e」の方が順番が前であるため、式ではテキスト値「John」の方が大きいとみなされ、値として -1 が返されます。
PRIMARY を使用した比較の例
Comparison mode 引数にキーワードとして PRIMARY を使用すると、COMPARE 関数では二つのテキスト値における基本文字の違いを比較します。
Jan 21 | Feb 21 | Mar 21 | |
Chosen Employee 1 | Tim | Tim | Tim |
Chosen Employee 2 | Tim | Tom | Tam |
COMPARE(Chosen Employee 1, Chosen Employee 2, PRIMARY) | 0 | -1 | 1 |
SECONDARY を使用した比較の例
Comparison mode 引数にキーワードとして SECONDARY を使用すると、COMPARE 関数で次の処理が行われます。
- 二つのテキスト値における基本文字の違いを比較する。
- 基本文字に違いがない場合は、二つのテキスト値のアクセントを比較する。
Jan 21 | Feb 21 | Mar 21 | |
Chosen Employee 1 | Soren | Soren | Søren |
Chosen Employee 2 | Soren | Søren | Soren |
COMPARE(Chosen Employee 1, Chosen Employee 2, SECONDARY) | 0 | -1 | 1 |
TERTIARY を使用した比較の例
Comparison mode 引数にキーワードとして TERTIARY を使用すると、COMPARE 関数で次の処理が行われます。
- 二つのテキスト値における基本文字の違いを比較する。
- 基本文字に違いがない場合は、二つのテキスト値のアクセントを比較する。
- 基本文字またはアクセントに違いがない場合は、二つのテキスト値の大文字/小文字を比較する。
Jan 21 | Feb 21 | Mar 21 | |
Chosen Employee 1 | Frank | frank | Frank |
Chosen Employee 2 | Frank | Frank | frank |
COMPARE(Chosen Employee 1, Chosen Employee 2, TERTIARY) | 0 | -1 | 1 |
すべての Comparison mode キーワードを使用した例
こちらの例は、Comparison mode 引数が異なると COMPARE が返す結果がどのように変化するかを示したものです。
Primary difference | Secondary difference | Tertiary difference | |
Text 1 | b | á | Á |
Text 2 | a | a | á |
COMPARE('Text 1', 'Text 2', PRIMARY) | 1 | 0 | 0 |
COMPARE('Text 1', 'Text 2', SECONDARY) | 1 | 1 | 0 |
COMPARE('Text 1', 'Text 2', TERTIARY) | 1 | 1 | 1 |
Locale 引数の使用例
Locale 引数を使用すると、一部のコードでは COMPARE 関数における文字の処理方法が変化します。たとえば、スウェーデン語の言語コードである sv を使用した場合、「w」と「v」は同じ基本文字とみなされます。
Region | |
英語 | Sweden |
Swedish | Sveden |
COMPARE(English, Swedish, PRIMARY) | 1 |
COMPARE(English, Swedish, PRIMARY, sv) | 0 |