• ベストアンサー

index・match・vlook関数を使う??

H1セルの社員名の「田中よしこ」さんが、H2セルの現レベル「技術A」だった時に、A1:E8にある表の○がついている個所の社内研修をうける必要があります。 H1セルとH2セル内には関数が入っており、社員名が変わると、現レベルも“技術A~D”の表示が出るようになっています。 H5:H8セル内に、該当する必要研修の一覧を出すには、どのようにしたらよいのでしょうか? INDEX関数やVLOOK関数、MATCH関数について、サイトで色々見てみましたが良く分かりません。 どなたか、どうぞよろしくお願い致します!!

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No2です。 H5への入力の式は次の式で十分でしたね。 =IF(OR(COUNTIF(INDEX($1:$1,MATCH(H$2,$1:$1,0)):INDEX($10:$10,MATCH(H$2,$1:$1,0)),"○")=0,ROW(A1)>COUNTIF(INDEX($1:$1,MATCH(H$2,$1:$1,0)):INDEX($10:$10,MATCH(H$2,$1:$1,0)),"○")),"",INDEX($A$1:$A$10,SMALL(IF(INDEX($1:$1,MATCH(H$2,$1:$1,0)):INDEX($10:$10,MATCH(H$2,$1:$1,0))="○",ROW(A$1:A$10),""),ROW(A1))))

burakky
質問者

お礼

こんな関数、絶対に自分では思いつかないです。ありがとうございました!!できました!

その他の回答 (3)

  • CLOWN-6-
  • ベストアンサー率51% (17/33)
回答No.4

基本的にとあるデータをもとに特定のデータを一覧として出す事は難しいです。 この場合、マクロを使う必要が出てきてしまう場合もあります。 しかし今回の場合、技術Aの場合に呼び出す項目は決まっているようなので 「もし技術AならばH5のセルにサービスマナー(1)、H6のセルに実験(1)を記入する」と言った関数であれば可能です。 後は↑の関数に技術Aで無かった場合技術Bを場合、技術Cの場合とIF関数を入れ子していけば作成可能です。

burakky
質問者

お礼

ありがとうございました!

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

例えばH5セルには次の式を入力してから、式を確定する段階でCtrlキーとShiftキーを押しながらEnterキーを押します。 =IF(OR(COUNTIF(INDEX($1:$1,MATCH(H$2,$1:$1,0)):INDEX($1000:$1000,MATCH(H$2,$1:$1,0)),"○")=0,ROW(A1)>COUNTIF(INDEX($1:$1,MATCH(H$2,$1:$1,0)):INDEX($1000:$1000,MATCH(H$2,$1:$1,0)),"○")),"",INDEX($A$1:$A$1000,SMALL(IF(INDEX($1:$1,MATCH(H$2,$1:$1,0)):INDEX($1000:$1000,MATCH(H$2,$1:$1,0))="○",ROW(A$1:A$1000),""),ROW(A1)))) 式の両側には{  }がついて配列数式となります。その式を下方にオートフィルドラッグします。

noname#158634
noname#158634
回答No.1

惜しい。 VLOOKUPまでたどり着いたならそこからLOOKUP関数を見つけ出してほしかった。 INDEX・MATCH・VLOOKUPに思い当たっているということは、1行目の値がH2と一致する列を拾うまではできてますよね? LOOKUP関数なら、検索値より左の列にある値を拾えます。

burakky
質問者

お礼

ありがとうございました!

関連するQ&A