• ベストアンサー

VLOOKUPについて

出来上がりの図 氏名 備考 該当 --------------------- A子 ****    A子       A子 **** B子 **** * B子 **** * C子 備考欄にすべて入力がある者だけ抽出したい場合、 (備考欄に一部でもブランクがある場合は抽出しない) VLOOKUP関数で出したいのですが どのように指定すればいいのでしょうか。 =VLOOKUP(A2,$A$2:$C$7,2,0) だと、A子の場合、一番上の備考欄に入力があるため データを拾ってきてしまい、A子も該当欄に*が入ってしまうのです。 氏名 備考 該当 --------------------- A子 **** *←本当は抽出したくない   A子    *←本当は抽出したくない   A子 **** *←本当は抽出したくない B子 **** * B子 **** * C子 どのように指定すればいいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! No.2です! 前回は理解しにくい方法でごめんなさいね。 D2セルに数式は =IF(B2="","",A2&1) としなくても =IF(B2="","",A2)  でも構いません。 結局B列が空白のものはカウントしたくないので 仮に全体の中の「○○子」さんの数とB列が空白でない「○○子」さんの数が同じであるかどうかを確認するための列ですので 自分で判別できるものなら何でも良かったのです。 最終的に作業列のE列には「○○子」さんが全部で何行あるか表示され、 D列にはB列が空白でない「○○子」さんの行に「しるし」が入りますので C列にはD・E列のカウント数が同じものに「*」を表示させてるという表です。 この程度でよろしかったでしょうか? 何度も失礼しました。m(__)m

kabos_pack
質問者

お礼

再度の丁寧なご説明ありがとうございました。 わかりやすかったです。 助かりました!!

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 参考になるかどうか判りませんが・・・ かなり泥臭い方法になります。 ↓の画像のように作業用の列を2列使わせてもらっています。 作業列D2セルに =IF(B2="","",A2&1) E2セルに =IF(A2="","",COUNTIF($A$2:$A$1000,A2)) 該当のC2セルに =IF(E2=COUNTIF($D$2:$D$1000,D2),"*","") という数式を入れ、C2~E2セルを範囲指定し、E2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 尚、数式は1000行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてみてください。 以上、参考になれば良いのですが、 的外れなら読み流してくださいね。m(__)m

kabos_pack
質問者

補足

さっそくのご回答ありがとうございます。 求めていたものと同じ表示がされました。 画像も載せていただいて、すごくわかりやすかったです。 再度の質問で恐縮ですが、 作業列のD列を作成するのはなぜなのでしょうか? D列とB列は同じ行に表示がありますよね? (D2とB2には表示があって、D3とB3には表示がない) 同じ表示形式のようなので、 C列の「該当」欄に関数を入力するとき、 =IF(E2=COUNTIF($B$2:$B$1000,B2),"*","") と入れたら、求めていた形になりませんでした。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

該当 の列に入れる式のことでしょうか? 参考までに =COUNTIF(A$2:A$100,A2)=SUMPRODUCT((A$2:A$100=A2)*(B$2:B$100<>"")) と入れて下までコピィしてみてください。 結果を * で表示したければ 上記の式をIF文に入れ込みます。

kabos_pack
質問者

補足

さっそくのご回答ありがとうございます。 結果はもとめていたものになりました。 でも、初心者なので、 教えていただいた関数がどういう意味を もつものなのかわかりません。 再度の質問になって恐縮ですが、意味をご教示願います。

関連するQ&A