• ベストアンサー

エクセルのHLOOKUP関数について

エクセルの表で、○のついた箇所の日付を休みの欄に自動で日付を入力したいのです。 =HLOOKUP("○",B1:F7,1,FALSE) でやってみましたが、○が表示されてしまいます。 どのように対処したらよろしいでしょうか。

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

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

HLOOKUP関数では範囲指定された中で最上端の行を検索して、その検索された行で指定された行番号のセルの値を求めるものです。 お示しの式では○のある行が1行目に有って、その列の1行目を返すという式になっています。1行目には○が有りませんのでエラーの表示になってしまいますね。 お示しのケースではINDEX関数を使うのがおすすめです。 1行目に日付が有って、左から何列目の日付を求めるかということになります。 次のような式をA2セルに入力し下方にドラッグコピーすることで求めることができます。 =IF(COUNTIF(B2:F2,"○")=0,"",INDEX(B$1:F$1,MATCH("○",B2:F2,0))) 式の意味はB2セルからF2セルの間に○が無い場合には空のセルにしなさい、そうでない場合にはB2セルからF2セルの間で○のあるセルの位置をB列から何番目にあるのかを求め、その上の1行目にあるデータ(日付)を表示しなさいとの意味になります。 A列にはシリアル値が表示されますのでA列を選択して右クリックし、「セルの書式設定」の「表示形式」で「日付」から好みの表示にしてください。

その他の回答 (1)

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

こんばんは! HLOOKUP関数は、範囲指定した1行目を検索値として、検索値と一致する列の何行目を返すか? という関数になりますので、 今回の場合はINDEX関数を使用した方が良いと思います。 尚、同じ場内に「○」は一つしかない!という前提です。 A2セルに =INDEX(B$1:F$1,,SUMPRODUCT((B2:F2="○")*COLUMN($A$1:$E$1))) という数式を入れオートフィルで下へコピーしてみてください。 尚、エラー処理はしていません。m(_ _)m

関連するQ&A