web-dev-qa-db-ja.com

隣接する列に基づいてExcelで空白以外のセルを一覧表示する

列AとBが与えられた場合、列Cの行に空白以外のBセルがあるA値をリストします。

A     B     C
One         Two
Two   x     Four
Three
Four  x
...

私がこれまでに思いついた最高のものは

{=INDEX(A1:A4;MATCH(TRUE;B1:B4<>"";0))}

c1で「2」になりますが、どうすれば続行できますか?

注:これは私の問題の簡略版です:実際には、複数ありますBのような列なので、フィルタリングはオプションではありません。また、BとCが同じシートにないので、Bシートを編集するたびにCシートを自動的に更新したいので、コピー&ペーストも実用的ではありません。

2
warakawa

enter image description here

これはあなたの例で機能し、ヘッダー、より多くの列、またはより多くの行がある場合に簡単に適応させることができます。

=IFERROR(INDEX($A$1:$A$4,SMALL(IF(ISBLANK($B$1:$B$4),"",ROW($B$1:$B$4)-ROW($C$1)+1),ROW(C1)-ROW($C$1)+1)),"")

C1に数式を入力し、 Ctrl+Shift 次にを押します Enter。数式をC4に展開して、例の完全な結果を取得します。

ヘッダーまたは列を例に挿入できるようになりましたが、これは引き続き機能します。より多くの行を処理するには、範囲$A$1:$A$4$B$1:$B$4を適宜変更します

Microsoftサポートの記事 条件を満たすn番目の値の検索 も参照してください。

1
Calvin

リストを適切にフィルタリングしてみませんか? Bが空白でないすべての行について、列Bに基づいてリストをフィルタリングします。例:.

enter image description here

次に、列Cで必要な場合は、コピーして貼り付けます。 フィルターをかけると一部のセルが非表示になるため、フィルターをクリアするまでコピー/貼り付けが正しく表示されない場合があることに注意してください。

2
Raystafarian

さて、数式が必要な場合、これは簡単な例で機能します。他の列を含めるように拡張する方法が完全にはわかりません(ええ、これをまとめて石畳にしたことは認めます)。

これは配列数式なので、CSE(CtrlShftEnter)そして下にドラッグします。

=INDEX($A$2:$A$6,SMALL(IF($B$2:$B$6<>"",MATCH(ROW($B$2:$B$6),ROW($B$2:$B$6)),""),ROW(A1)))

これが最善の方法ではないことはわかっていますが、バリージェリー まで、 Excellll または誰かがやってくる、それが最高です[〜#〜] i [〜#〜]持っています。

0
Raystafarian