2列のどちらかが条件に合う行を残す
2つの名前列のどちらかがNで始まる行を抽出します。列ごとに絞り込んだ結果を保存し、行を識別するRowIDを残して縦結合する方法です。
LeftNameかRightNameのどちらかがNで始まる行を残したい場合、両列に同時に条件を設定すると、両方がNで始まる行だけになります。どちらかに合う行をすべて取り出すには、列ごとに絞り込んで保存し、2つの結果を縦結合します。その際、両方に入った同じ行は1件にまとめます。
片方の名前だけが条件に合う行も残す
架空のPeopleではP1とP5は名前とNoteが同じでも別の記録です。RowIDは読込前に用意した一意で固定の値で、2回の実行間で変えてはいけません。P3は両方の名前が条件に合います。この後、LeftNameで絞った結果をLeftBranch、RightNameで絞った結果をRightBranchという名前で保存します。
People
| RowID | LeftName | RightName | Note |
|---|---|---|---|
| P1 | Nora | Max | keep |
| P2 | Lina | Neil | keep |
| P3 | Nell | Nico | both |
| P4 | Eli | Ari | none |
| P5 | Nora | Max | keep |
条件別の結果を保存してまとめる
- Peopleだけを読み込みます。LeftNameのフィルターアイコンから「指定文字で始まる」を選び、Nを入力し「適用」を押します。RightNameには条件を付けません。全列を表示したままP1・P3・P5をLeftBranchとして保存します。
- 新しい作業で元のPeopleを読み直します。今度はRightNameだけに「指定文字で始まる」Nを指定して「適用」を押し、P2・P3をRightBranchとして保存します。前回の条件が残った表で続けないでください。
- 別の新しい作業に2つの保存ファイルを読み込みます。どちらもRowID・LeftName・RightName・Noteの4列を持つことを確認します。列の並び順は違っていても、同じ列名で対応します。RowIDを非表示にしたり振り直したりしません。
- シート上下の+接続点で2表をつなぎ、「完全に同じ行を1行だけ残す」を選びます。この段階ではLeftName・RightNameの元データ条件を再適用しません。
- 「結果のプレビュー」でP1・P2・P3・P5の4行を確認します。P3は1回だけ、異なるIDのP1とP5はそれぞれ1回残ります。
同じ名前の2件と両条件一致の1件を区別
すべてをそのまま追加すると3+2=5行となり、P3が2回出ます。同じ行を1つにすると4行です。P1とP5はRowIDが異なるため別々に残ります。どちらにも合わないP4は、どちらの保存結果にも含まれません。
| RowID | LeftName | RightName | Note |
|---|---|---|---|
| P1 | Nora | Max | keep |
| P2 | Lina | Neil | keep |
| P3 | Nell | Nico | both |
| P5 | Nora | Max | keep |
安定したRowIDが必要な理由
行を区別するIDがないと、P1とP5のように内容が同じ別の記録まで1件にまとまる場合があります。必要なら原本のコピーに固定のIDを付けてから始めてください。2回の絞り込みの間に元の値を変えると、同じIDでも内容が変わり、2行残ることがあります。
片方の結果が0行なら、空のファイルを読み込み直す必要はありません。もう片方の結果をそのまま使います。両方とも空なら該当行はありません。この方法は複数の作業を組み合わせるもので、1回の条件設定で列同士をOR指定する機能ではありません。
自分のファイルで始めましょう
JOIN SHEETを使ってみる ↗Excel・CSVの作業はPCでご利用ください。
新しいタブで開くため、作業中のデータは置き換わりません。
サンプルの検証日:
出典
Can you do an OR filter in excel? (Reddit r/excel)
原文はA列またはB列がNで始まる行をすべて取り出す方法を尋ねています。 上の表と手順は、この質問を参考に別途作成した架空の例です。質問者の実データや製品の利用体験ではありません。