Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12417 / 13646 ツリー ←次へ | 前へ→

【10584】複数のIF関数について質問です。 miro 04/2/3(火) 1:58 質問
【10585】Re:複数のIF関数について質問です。 かみちゃん 04/2/3(火) 7:45 回答
【10601】Re:複数のIF関数について質問です。 miro 04/2/3(火) 11:31 お礼
【10604】Re:複数のIF関数について質問です。 かみちゃん 04/2/3(火) 12:47 回答
【10615】Re:複数のIF関数について質問です。 miro 04/2/3(火) 17:42 お礼

【10584】複数のIF関数について質問です。
質問  miro  - 04/2/3(火) 1:58 -

引用なし
パスワード
   こんばんは。
数日前にこちらの質問箱で質問させてもらいまして、
答えも頂いたのですが。
ちょっと応用したところどうもうまくいかないので検索しても
答えが見つからなかったのでもう一度質問させて頂きます。

セル内M1からM6までには日付データが入っています。
セル内N1からN6までには文字が書き込まれています。
そして例えばですがM1には2月3日N2には結婚記念日と入っています。
セルA1に
=IF(M1=TODAY(),N1,"")
と書き込みますと、ちゃんとセルA1には2月3日当日には結婚記念日と
表示されます。
しかし、このIF関数を応用してセルA1にM1からM6のIF関数を入れて
おきたいのですがどうもうまくいきません…。
間違っていたコードは
=IF(M1:M6=TODAY(),N1:N6,"")とか
=IF(M1=TODAY(),N1,"")=IF(M2=TODAY(),N2,"")=IF(M3=TODAY(),N3,"")=IF(M4=TODAY(),N5,"")=IF(M6=TODAY(),N6,"")などなど色々試しました…。

複数のデータをIF関数で表示といったことは不可能なのでしょうか?
どなたかわかる方がいましたら教えてくださいお願い致します(*- -)(*_ _)

【10585】Re:複数のIF関数について質問です。
回答  かみちゃん  - 04/2/3(火) 7:45 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>間違っていたコードは
>=IF(M1:M6=TODAY(),N1:N6,"")とか
>=IF(M1=TODAY(),N1,"")=IF(M2=TODAY(),N2,"")=IF(M3=TODAY(),N3,"")=IF(M4=TODAY(),N5,"")=IF(M6=TODAY(),N6,"")などなど色々試しました…。
>
>複数のデータをIF関数で表示といったことは不可能なのでしょうか?

VBAの話ではなく、一般操作でできるのですが・・・
IF関数を複数使う場合を「入れ子」と言いますが、これは、最大7個までです。
(ヘルプIFの解説参照)
で、どのように使うかというと、
=IF(M1=TODAY(),N1,IF(M2=TODAY(),N2,IF(M3=TODAY(),N3,IF(M4=TODAY(),N5,IF(M6=TODAY(),N6,"")))))
しかし、以下のようにすると、よりスマートに目的のことは達成できると思います。
=VLOOKUP(TODAY(),M1:N6,2,FALSE)

※気になったのですが、「IF(M4=TODAY(),N5,"")」は正しいですか?「IF(M4=TODAY(),N4,"")」という式ではないでしょうか?もし、違うのであれば、VLOOKUP関数は使えません。

【10601】Re:複数のIF関数について質問です。
お礼  miro  - 04/2/3(火) 11:31 -

引用なし
パスワード
   >かみちゃんさん
>こんにちは。かみちゃん です。
どうもおはようございます。早い時間からのご返信ありがとうございます。

>VBAの話ではなく、一般操作でできるのですが・・・
>IF関数を複数使う場合を「入れ子」と言いますが、これは、最大7個までです。
>(ヘルプIFの解説参照)
すみません知識不足でした・・・これからはペルプの方も隅々まで見たいと思います。
>で、どのように使うかというと、
>=IF(M1=TODAY(),N1,IF(M2=TODAY(),N2,IF(M3=TODAY(),N3,IF(M4=TODAY(),N5,IF(M6=TODAY(),N6,"")))))
>しかし、以下のようにすると、よりスマートに目的のことは達成できると思います。
>=VLOOKUP(TODAY(),M1:N6,2,FALSE)
ありがとうございますm(_ _)m 両方試して見たところばっちり表示されました。
しかしVLOOKUPだと値が指定した日付以外には#N/Aと表示されてしまったので
IF関数の方を使っていこうと思います。

>※気になったのですが、「IF(M4=TODAY(),N5,"")」は正しいですか?「IF(M4=TODAY(),N4,"")」という式ではないでしょうか?もし、違うのであれば、VLOOKUP関数は使えません。
ごめんなさい…急いで書き込みしていたせいか、「IF(M4=TODAY(),N5,"")」は、
「IF(M4=TODAY(),N4,"")」の間違いでした。どうもお騒がせしました。
そしてご回答ありがとうございました(m__)m

【10604】Re:複数のIF関数について質問です。
回答  かみちゃん  - 04/2/3(火) 12:47 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>しかしVLOOKUPだと値が指定した日付以外には#N/Aと表示されてしまったので
>IF関数の方を使っていこうと思います。

IF文だと条件は7個しか書けません。(ANDとORを使えばそれ以上の条件も書けますが、結果は7個しか得られません。)
そこで、VLOOKUP関数を使った場合の#N/Aを回避する方法ですが、次のようにISNA関数も一緒に使います。
=IF(ISNA(VLOOKUP(TODAY(),M1:N6,2,FALSE)),"",VLOOKUP(TODAY(),M1:N6,2,FALSE)
)
とすれば、#N/Aは表示されなくなります。
これだと、スマートですし、7個という制約もなくなります。

【10615】Re:複数のIF関数について質問です。
お礼  miro  - 04/2/3(火) 17:42 -

引用なし
パスワード
   >かみちゃんさん
>こんにちは。かみちゃん です。
どうもこんにちは。さらにご返信ありがとうございます!!

>IF文だと条件は7個しか書けません。(ANDとORを使えばそれ以上の条件も書けますが、結果は7個しか得られません。)
そうなんですよね、先ほどの返信の時に勉強しました^^
しかし今作っているソフトで必要なデータが先ほどの6つのデータ+1つのデータ
なんですよ・・・m(_ _)m
だからスマートではないのですが、丁度入ったのでIF文の方を使わせて頂きました・・・。

>そこで、VLOOKUP関数を使った場合の#N/Aを回避する方法ですが、次のようにISNA関数も一緒に使います。
>=IF(ISNA(VLOOKUP(TODAY(),M1:N6,2,FALSE)),"",VLOOKUP(TODAY(),M1:N6,2,FALSE)
>)
>とすれば、#N/Aは表示されなくなります。
>これだと、スマートですし、7個という制約もなくなります。
そしてこの返信内容を見まして確かにやはりスマートですよね…。
ISNA関数…また知らない関数が出てきました、勉強になります(*- -)(*_ _)
このソフト制作課題は勉強も兼ねて作っているのでやっぱりこっちの関数を使わせて
頂くことにします☆

どうもご丁寧な解説ありがとうございます。
また機会があればよろしくお願い致します(m__)m

12417 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free