式を使用して、列の重複をどのように見つけることができますか?


11

誰かが列の重複を見つけるための式を考え出しましたか?例えば:

a
b
c
d
b
d

=somefunction(A1:A6)

出力:

b
d

私は=unique()関数があることを知っています、それは基本的に=not_unique()関数です。コードを使用せずに構築できるかどうか疑問に思っていました。


ここでは、このスレッド内の1つの例があるstackoverflow.com/questions/19843406/...いくつかのアイデアであなたを得ることができ、このを見てみましょう。
Vembu

待ってください、あなたが探しているのはnot_unique関数ですよね?あなたはユニークな(重複)しないフィールドではなく、フィールドを探しているように見えるしているユニーク。
David Mulder

回答:


16

追加の列なしで可能な解決策は次のとおりです。

=FILTER(UNIQUE(A2:A7), ARRAYFORMULA( COUNTIF(A2:A7,UNIQUE(A2:A7))>1 ))

ここで準備された例を参照してください:重複を検索


3

(数式を使用して)私が見つけた唯一の方法は、新しいcount列を導入することです。

値がcolumn Aにリストされている場合は、rowから始めて2、数式=COUNTA(FILTER(A$2:A$7, A$2:A$7 = A2))を入力し、B2下にドラッグしてコピーします。これは与える:

| A: VALUE  | B: COUNT |
|-----------|----------|
|     a     |     1    |
|     b     |     2    |
|     c     |     1    |
|     d     |     2    |
|     b     |     2    |
|     d     |     2    |

各値の出現回数を取得したので、Aからの値で列をフィルタリングできますB。セルC2に数式を挿入し=UNIQUE(FILTER(A2:A7, B2:B7 > 1))ます。これは与える:

| A: VALUE  | B: COUNT | C: DUPS |
|-----------|----------|---------|
|     a     |     1    |    b    |
|     b     |     2    |    d    |
|     c     |     1    |         |
|     d     |     2    |         |
|     b     |     2    |         |
|     d     |     2    |         |

数式の説明

=COUNTA(FILTER(A$2:A$7, A$2:A$7 = A2))

  • filter句は、検査Aカラムを、セルと同じ値を持つセルが見つかったA2A2式をコピーする際、対応するセルに置き換えられます)。
  • counta 値をカウントします(非数値を含む)。

=UNIQUE(FILTER(A2:A7, B2:B7 > 1))

  • これfilterB、の値についてcolumn を調べ、column > 1から対応する値を返しますA。このunique関数は、各値を1回だけ返すことを確認するだけなのでb、たとえば2回取得することはありません。

ただし、よりエレガントな方法は、スクリプト関数を使用することです。

function dups(rows) {
  var values = {};
  var duplicates = [];
  for (var i = 0; i < rows.length; i++) {
    var value = rows[i][0];
    if (values[value] !== undefined && duplicates.indexOf(value) == -1) {
      duplicates.push(value);
    } else {
      values[value] = true
    }
  }
  return duplicates;
}

[ ツール]→[スクリプトエディター]に移動し、上記のコードを貼り付けて保存します。これで、=dups(A2:A7)どこにでも数式を入力して関数を呼び出すことができます。これは、で見つかった重複を返しますA2:A7


両方の可能性を示すサンプルスプレッドシートを設定しまし。自由に見てコピーしてください。


変数値= {}変数値= []である必要がありますか?
Jacob Jan Tuinstra

1
実は違う。values配列ではなく、キーと値のマップとして使用されるため、特定の値が既に処理されているかどうかを簡単に確認values[property]できます。
Vidar S. Ramdal 2015

1
あなたが配列にプッシュしていると思いました...コードをテストしましたが、d、d、d、d ...のように重複したエントリが表示され続けます。あなたが提供したフォーミュラソリューションはそれを行いません。
Jacob Jan Tuinstra 2015

1
オブジェクトを意味しました。
Jacob Jan Tuinstra 2015

1
@JacobJanTuinstraああ、はい-わかりました。コードを修正しました。
Vidar S. Ramdal、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.