いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)2つの配列の全要素が等しいか比較する

 Googleスプレッドシートで、2つの配列(行列)の全ての要素が等しいかどうかを判定する方法についてです。

  • 「=AND(ARRAYFORMULA(配列1=配列2))」ですべての要素が等しいかどうか判定できます。
  • 「=OR(ARRAYFORMULA(配列1=配列2))」で等しい要素が1つ以上あるかどうか判定できます。

手順

f:id:accs2014:20200705135826p:plain:right:w450

 画像では、2行目と3行目にそれぞれ4つの値からなる配列が並んでいます。
 これらが等しいかどうかを比較することとし、まずは次の2つの式を試してみます。

 C5,C6セル

=ARRAYFORMULA(C2:F2=C3:F3)
=C2:F2=C3:F3

 これらはいずれも2つの配列全体を比較しているように見えます。しかし……
 

f:id:accs2014:20200705135830p:plain:right:w450

 結果はこうなります。
 最初の式では4つの値が返ってきています。これは1要素(1セル)ずつ比較した結果がそれぞれ返ってきているからです。
 そして2番目の式では1つの値しか返ってきていません。これは最初の要素(C2セルとC3セル)を比較した結果しか返っていないからです。

 
f:id:accs2014:20200705135834p:plain:right:w450

 以上を踏まえて今度は次の2つの式を入力します。

 C5,C6セル

=AND(ARRAYFORMULA(C2:F2=C3:F3))
=OR(ARRAYFORMULA(C2:F2=C3:F3))

 最初の式は、4つの要素の比較結果がすべてTRUEであればTRUEを返します。
 2番目の式は、4つの要素の比較結果のいずれかがTRUEであればTRUEを返します。
 
f:id:accs2014:20200705135837p:plain:right:w450

 結果はこうなります。
 つまり配列(行列)を一括して比較する演算はないので各要素の比較を踏まえてチェックする必要がある、ということです。

 なお「=」は英大文字(A)と英小文字(a)を区別しませんので、区別する場合はEXACT関数による比較が必要です。
 一方でEXACT関数は文字列半角数字('1)と数値の半角数字(1)を区別しません(「=」は区別します)。この辺りの特性については次の記事をご覧ください。

www.officeisyours.com