いきなり答える備忘録

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

(Gスプレッドシート)UNIQUE関数で文字列や数値を比較する

 GoogleスプレッドシートのUNIQUE関数を使って値の重複を取り除くことができますが、このときの値の比較はかなり厳密なものとなっています。これを使って文字列や数値の一致/不一致の判定をすることを試してみます。

  • UNIQUE関数を使うことで、イコール演算子(=)やEXACT関数などより厳密に値を比較できます。

手順

 さて、画像ではC列とD列に記録されているさまざまな文字列や数値について同じかどうかを、E列とF列で比較しています。
 E列ではイコール演算子(=)を、F列ではEXACT関数(F列)を使って比較しており、EXACT関数は割とシビアに判定していますが、「文字列として入力されている半角数字」と「数値として入力されている半角数字」の区別がつきません(上から5つ目の例)。また、空文字列と空白セルの区別もつきません(下から5つ目の例)。別の記事(こちら)で、これらについても区別できる式を検討していますが、なかなか長くて面倒です。

f:id:accs2014:20201213230524p:plain:w650

 

 そこでアイデアを変えてみます。
 新たにG3セルに「=ROWS(UNIQUE(TRANSPOSE(C3:D3)))」と入力してみます。
 これは、2つの値をTRANSPOSE関数で縦に並べ替え、UNIQUE関数を適用し、その結果の行数をROWS関数で測っています。
 UNIQUE関数により2つの値が同じ(重複する)とみなされていれば結果は「1」になりますし、異なるとみなされれば「2」になるはずです。

f:id:accs2014:20201213230528p:plain:w780

 

 結果は「2」となりました。
 つまりUNIQUE関数はEXACT関数と同じく、英半角大文字と英半角小文字を異なるものとして評価しているというわけです。

f:id:accs2014:20201213230532p:plain:w700

 
 さらに式を下方にコピーしました。
 EXACT関数が同じとみなす、上から5つ目の例や下から5つ目の例についても異なるものとみなしているのがわかります。
 一方、下の4つの例(全く同じとみなすべき例)については「1」となり、当然ながら同じものとみなしています。
 はたして活用する機会があるかどうかわかりませんが、参考まで。

f:id:accs2014:20201213230536p:plain:w700

 

 ちなみに同じようなアイデアですが、COUNTUNIQUE関数を使って各行の値を数えると次のようになります。
 COUNTUNIQUE関数は空文字列や空白セルを数えることができないため、これらを比較したときにうまくいかない結果となっています。

f:id:accs2014:20201213230540p:plain:w700