Googleドキュメントのスプレッドシートで簡単なセット操作を行う方法は?


10

セルB1:B3にいくつかの名前があり、にあるすべての名前の完全なリストがあるとすると、に表示されないA1:A4名前のリストを生成できますか?A1:A4B1:B3

たとえば、セルA1:A4に「A」、「B」、「C」、「D」があり、B1:B3「A」、「C」、「D」が含まれている場合、「B」を取得します。

関数リストを調べましたが、その方法がわかりませんでした。

更新:ランスの助けを借りて、私が思いついた式は次のとおりです。

FILTER(A1:A4, A1:A4<>B1, A1:A4<>B2, A1:A4<>B3)

これで正しい結果が得られますが、まだ問題があります。問題は、私の細胞B1:Bxが拡大する可能性があることです。私はスポーツチームを管理しており、Googleドキュメントのフォームを使用してユーザーが送信します。彼らは選択リストから名前を選択し、ラジオボタンの[はい](プレイできます)または[いいえ](外出中)を選択します。ここで達成したいのは、スプレッドシートに応答していない人を表示することです。目標は、新しい送信が行われるたびにこのリストを自動的に更新することです。残念ながら、スプレッドシートに新しい行が入力されると、数式が台無しになります。これに対する解決策があるかどうかはわかりません。

Update 2:回避を見つけました。IからセルをコピーしB1:Bx、別の領域にC1:Cx第一、その後、上記の式を用いるが、反対C1:Cx。今でもB1:Bx展開され、式はまだ有効です。


拡張問題の解決策は、名前付き範囲を使用することです。ただし、フィルターを正しく設定するには、おそらく多少の作業が必要になります。
ランスロバーツ

@ランス、回避策を見つけ、投稿を再度更新しました。ありがとう。
grokus

1
すばらしい質問です。この答えを自分で検索しているときに見つけました。あなたの回避策はかなり良いですが、私は最終的にあなたが探していたものを正確に手に入れたと思います。以下の私の答えをチェックしてください。
Anthony DiSanti 2015

回答:


4

ワウ、私はあなたに正確な解決策を手に入れようとしていました、Google Docsはとてもイライラしています。スクリプトループシティ。

これを行うには、FILTERワークシート関数を使用します。arrayCondition_1は、複製されない各行に真の値を与える関数の式です。MATCH機能が使えないことがわかりました。


1
Googleドキュメントを扱う場合、Chromeを使用する方がはるかに優れていることがわかりました。
grokus

今日は頭がおかしいですが、覚えていれば、来週、この機会に解答を受け取ります(それまでに答えが見つからない場合)。
ランスロバーツ

大丈夫です。FILTERを使用して、思い通りの結果を得ることができました。ありがとう。
grokus 2010

@grokus、すばらしい。将来の読者の参考のために、使用した式を投稿してください。
ランスロバーツ

元の投稿を更新しました。
grokus 2010

4
=FILTER(A:A, NOT(COUNTIF(B:B, A:A)))

COUNTIFcolumnの各プレーヤーがcolumnにA表示さBれる回数をカウントし、カウントの配列を返します。

NOT 数値をブール値(trueまたはfalse)にキャストし、その逆を取ります。

FILTERB列応答リストに表示されたプレーヤーを削除します。

ここでのトリックはNOT、カウントをブール値にキャストすることです。プレーヤーが応答していない場合、それらは応答リストに0回表示されます。回答があった場合は、1回以上表示されます(おそらく、もう一度アンケートを送信して回答を変更しようとしているプレーヤーです)。0はにキャストしFalse、他のすべての数値はにキャストしTrueます。そのためTrue、マップに応答したプレーヤーとまだ応答していないプレーヤーがマップしFalseます。 NOT次に逆を取り、まだ応答していないプレイヤーのマスクを提供します。

このソリューションは、空白の行や重複した提出を含む可能性のある提出の増加するリストをサポートしています。質問で説明されている特定の範囲に制限するには、以下を使用します。=FILTER(A1:A4, NOT(COUNTIF(B:B,A1:A4)))


genius 20charlimit
Fadeway

0

これを簡単に行う方法を示すスプレッドシートを次に示します。

Googleスプレッドシートでの操作の設定

連合は ={setA; setB}

違いは =filter(setA, iferror(MATCH(setA, setB, false)))

交差点は =filter(setA; MATCH(setA, setB, false))

説明 setAsetB名前付き範囲にすることも、通常の範囲表記を使用することもできます。名前付き範囲は、これをより明確にします。

Unionは、両方の範囲を並べて作成された新しい範囲です。

交差(次に簡単)は、それらが存在setAするsetB場所のインデックスを探し、それによってsetAをフィルタリングすることに依存します。

違いは似setAていますが、インデックスを見つけることsetBができないメンバーのみを選択するようにフィルタリングします。

追加クレジット

重複排除を伴うユニオンは単にsetA +(setB-setA)なので、上記によって

={setA;filter(setB, iserror(MATCH(setB,setA,false)))}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.