プロが教える店舗&オフィスのセキュリティ対策術

エクセルのデータ抽出について質問です。
上の一覧表から
下のように日付を指定して◯の参加者を抽出したいのですが、
関数の使い方がわかりません。
知っている方がいれば教えて欲しいです。

「エクセルのデータの抽出について」の質問画像

A 回答 (3件)

こんにちは



画像がよく見えないので、「日付を入力するセル」がよくわかりませんが、B15セルに入力するとそれに対応する参加者名を下方に抽出するものと解釈しました。

もしもExcel 365環境なら、B17セルに
=FILTER(A3:A13,OFFSET(A3:A13,,MATCH(B15,2:2,0)-1)="〇","")
の式を入力すれば、該当するものがスピルされます。

Excel 2010以降であれば、B17セルに
=IFERROR(INDEX(A:A,AGGREGATE(15,6,ROW($A$3:$A$13)/(OFFSET($A$3:$A$13,,MATCH($B$15,$2:$2,0)-1)="〇"),ROW(A1))),"")
を入力して、下方にフィルコピー。

※ 日付の入力値は2行目と15行目は同じ形式であると仮定しています。
 (シリアル値ならシリアル値。文字列なら文字列)
※ 式中の「〇」の文字は異字体がいくつかありますので、シートで使用されている「〇」と同じ字体であることが必要です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました!
とても丁寧な解説でわかりやすかったです。
本当に助かりました!

お礼日時:2022/09/16 15:02

手段を関数(というか数式)に限定するならバージョン情報は必須です。


書かないとせっかく回答してもそれが無駄になる可能性が高いです。

=FILTER(A3:A13,BYROW(FILTER(B3:L13,BYCOL(B2:L2,LAMBDA(_a,OR(C15:D15=_a)))),LAMBDA(_b,OR(_b="○"))))

バージョンが古いならクエリでやったほうがいいと思います。
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございました。
参考にさせていただきます。

お礼日時:2022/09/16 15:02

バージョンによってはFILTER関数で一発です。



Excel 2021/365から使用できる関数ですので、該当バージョンなら
素直にFILTER関数の使い方を調べることを薦めます。

・・・

古いバージョンでも動作するように工夫すると、こんな感じになります。

=IFERROR(INDEX($A$3:$A$13,SMALL(NOT(OFFSET($A$3,,MATCH(B$15,$B$2:$L$2,0),11,1)="")*(ROW(OFFSET($A$3,,MATCH(B$15,$B$2:$L$2,0),11,1))-2),11-COUNTA(OFFSET($A$3,,MATCH(B$15,$B$2:$L$2,0),11,1))+ROW($A1))),"")

配列数式になっているので
 Ctrl+Shift+Enter
で数式を確定してください。

(´・ω・`)
ハッキリ言っておきますが、この数式は
 【 理 解 で き な い な ら 使 う べ き で は な い 】。
なぜなら、表の仕様が変わったときに自分で修正できないからです。
なにせ、本来ならCOUNTA関数を使って求める定数の「11」を「数値」で指定していたりするのです。この「11」の出所が分からないとか十分あり得る。

=IFERROR
   (
   INDEX
     (
     $A$3:$A$13
     ,SMALL
       (
       NOT(OFFSET($A$3,,MATCH(B$15,$B$2:$L$2,0),11,1)="") * (ROW(OFFSET($A$3,,MATCH(B$15,$B$2:$L$2,0),11,1))-2)
       ,11 - COUNTA(OFFSET($A$3,,MATCH(B$15,$B$2:$L$2,0),11,1)) + ROW($A1)
       )
     )
   ,""
   )

とりえあえず、理解しやすいよう分解しましたが解説はしません。
たぶんもっとスマートなやり方があるはずですので、そういう数式を参考にすると良いでしょう。
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございました。
参考にさせていただきます。

お礼日時:2022/09/16 15:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!