「みんな教えて! 選手権!!」開催のお知らせ

エクセルでA2~D10までに氏名、E列は日付をいれ、当番表をつくります。
氏名と日付を一覧にするため、氏名の表示されたG列、
下記の関数をH列に入れ当番日付を表示していますが、
C列、D列に入力した氏名の当番日付をH列に表示させるには、どうしたら良いのでしょうか?
当番表に氏名がない場合は空白セルとしています。

=IFERROR(IFERROR(VLOOKUP(G2,A2:E11,5,FALSE),VLOOKUP(G2,B2:E11,4,FALSE)),"")

「VLOOKUP関数を使い掃除当番表を作る」の質問画像

A 回答 (2件)

こんばんは!



>C列、D列に入力した氏名の当番日付をH列に表示させるには・・・
とありますが、A~D列という解釈で・・・

A~D列に重複はない!という前提です。

↓の画像でH2セルに
=IF(COUNTIF(A$2:D$11,G2),INDEX(E$2:E$11,SUMPRODUCT((A$2:D$11=G2)*(ROW(A$2:A$11)-1))),"")
という数式を入れ、フィルハンドルで下へコピーしています。
(セルの表示形式は「日付」にしてください)

こんな感じではどうでしょうか?m(_ _)m
「VLOOKUP関数を使い掃除当番表を作る」の回答画像1
    • good
    • 0
この回答へのお礼

tom04様

早速の回答ありがとうございます。
やはり、VLOOKUP関数には限界があるのですね・・・
複雑な数式ですが、人数が増えた場合も対応可能ですね(^_^;)

重複はない!についてなのですが、
2回目以降の当番が続くものとします。
C7・・・スネオ, D7・・・のびた
この時H列に1回目、I列に2回目と当番日付を表示させることは
可能でしょうか?

お礼日時:2015/01/28 23:36

No.1です。


>2回目以降の当番が続くものとします。
というコトですので・・・

配置は前回同様とします。
G列はあらかじめデータが表示されているとすると

H2セルに
=IF(COUNTIF($A:$D,$G2)<COLUMN(A1),"",INDEX($E$1:$E$100,SMALL(IF($A$1:$D$100=$G2,ROW($A$1:$A$100)),COLUMN(A1))))
配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は、
上記数式をドラッグ&コピー → H2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。
最後にH2セル(セルの表示形式は「日付」)のフィルハンドルで列・行方向にコピーしてみてください。

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

tom04さんへ

応用編にまでご回答いただき、ありがとうございます。
ただ、‘2回目以降の当番’用に教えていただきました数式だと
うまく表示することができませんでした。

せっかくですので、教えていただいた数式を理解して自分でも解決してみようと
思っております。

まずは、お礼まで。

お礼日時:2015/01/31 19:47

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報