1. ホーム
  2. excel

Excelで数式だけで一意の値を取得する

2023-11-05 11:12:19

質問

Excel で一意な値のリストを数式で計算する方法をご存知ですか?

垂直方向の範囲に値がある場合 "red" , "blue" , "red" , "green" , "blue" , "black"

そして、結果として "red , "blue" , "green" , "black" +最終的に他の2つの空白セル。

SMALLまたはLARGEとINDEXを組み合わせて計算されたソートされたリストを得る方法をすでに見つけています。

どのように解決するのですか?

これは古いもので、いくつかの解決策がありますが、私が思いついたのは より短く、より簡単な式 を思いつきました。これは、通りすがりの誰かにとって役に立つかもしれません。

私は色のリストに Colors (A2:A7)、そして 配列式 をセルに入れる C2 はこれ( 固定 ):

=IFERROR(INDEX(Colors,MATCH(SUM(COUNTIF(C$1:C1,Colors)),COUNTIF(Colors,"<"&Colors),0)),"")

使用方法 Ctrl+Shift+Enter で数式を入力します。 C2 に入力し、C2 を下にコピーして C3:C7 .

サンプルデータ{"red" "blue" "red" "green" "blue" "black"} で説明します。

  1. COUNTIF(Colors,"<"&Colors) は、データ {4;1;4;3;1;0} の各項目より小さい値の数を配列 (#1) で返します (黒=0項目より小さい、青=1項目、赤=4項目)。これを翻訳すると ソート値 に変換されます。
  2. COUNTIF(C$1:C...,Colors) は、ソートされた結果にすでに含まれている各データ項目に対して1を持つ配列 (#2) を返します。C2 では {0;0;0;0;0} を返し、C3 では {0;0;0;0;0;1} を返します。これは "black" がソートで最初に、データで最後にあるためです。C4 {0;1;0;0;1;1} では "black" を示し、 "blue" の出現はすべて既に存在しています。
  3. SUM k-番 のソート値を返します。これは、既に存在する小さい値の出現をすべて数えることによって行われます(配列#2の合計)。
  4. MATCH はk番目のソート値の最初のインデックスを見つけます(配列#1のインデックス)。
  5. IFERROR を隠すだけです。 #N/A エラーを隠すだけです。

ユニークアイテムの数を知るには、次のようにします。 正規の計算式 :

=SUM(IF(FREQUENCY(COUNTIF(Colors,"<"&Colors),COUNTIF(Colors,"<"&Colors)),1))