プロが教える店舗&オフィスのセキュリティ対策術

エクセルの関数についての質問です。
入力シート、データシートを含めて、シートが4つあります。データ!H列には、20年前から2020年までの月末の日付が、土日祝を避けて、後ろ倒しで表示されています。入力!A1には、三桁のコードを入力、入力!A2には、上記の期間でカレンダー通りの月末日を入力しています。困っているのは、データ!H列の月末日が、暦通りではない後ろ倒しの場合です。IFと VLOOKUPで数式を作成しましたが、上手くいきません。(※入力シート!A1が007の場合だけ、後ろ倒しの月末日が必要。※ A10は、入力!A2を表示。)、検索方法がFALSEだと、返される月とエラーになる月が出てしまう。TRUEにしたところ、エラーは避けられるけど、検索値未満の最大数を返してしまいます。例えば、〇〇年9月30だと、8月31日を返すという具合に。(10月2日が欲しいのに・・)
数式は、下記で作成してみました。

=IF(入力!A1="007",VLOOKUP(A10,H10:H200,1,TRUE,偽

TRUEで検索値未満の最大値(入力月の1ヶ月前)を返すやり方で前倒し用コードだと、上手くいくのですが、007の時が分からないです。FALSEで検索して、偽でEDATE関数で、後ろ倒し日を出す良い方法があるのか、詳しい方、教えてください。

質問者からの補足コメント

  • 訂正箇所が御座います。申し訳御座いません。
    ◾️訂正1
    (※入力シート!A1が007の場合だけ、後ろ倒しの月末日が〜)

    (※入力シート!A1が007の場合だけ、後ろ倒
    しの日付が〜)

    ◾️訂正2
    TRUEで検索値未満の最大値(入力月の1ヶ月前)を返すやり方

    TRUEで検索値未満の最大値を返すやり方

      補足日時:2018/09/16 14:54
  • tatsuさん、ありがとうございます。入力!A1が007以外のコードの時に、FALSEが表示されてしまうのです。
    ちなみに数式が入っているセルの一行上のセルに通常前倒し用の数式があります。イフ関数は必要ないから、H列をVLOOKUPで検索するという普通の式です。
    ※列は2つあり、前倒しした月末日(E列)、後ろ倒しの月末日(H列 ※コード007用)の2種類です。1つのセルにまとめる数式があれば、教えてください。

      補足日時:2018/09/16 17:00

A 回答 (3件)

検索範囲がH10:H100なのがよくわかりませんが(20年前から2020年までH10:H200に格納できないはず)、それは正しいとします。


=IF(入力!A1="007",IFERROR(VLOOKUP(A10,H10:H200,1,FALSE),VLOOKUP(EOMONTH(A10,1)-1,H10:H200,1,TRUE)))
では、いかがでしょうか。
FALSEで検索してエラーなら翌月の末日の1日前の日付でTRUEで検索しなおします。
    • good
    • 1

なんちゃって回答で申し訳ないのですが、こんなのはどうでしょう。

+15のところは適当に調整してください。

=IF(入力!A1="007",VLOOKUP(A10+15,H10:H200,1,TRUE),偽)
    • good
    • 1
この回答へのお礼

ありがとうございました。そのやり方も参考にして作りました。うまくいって良かったです!

お礼日時:2018/09/16 19:55

>tatsuさん、ありがとうございます。

入力!A1が007以外のコードの時に、FALSEが表示されてしまうのです。
>ちなみに数式が入っているセルの一行上のセルに通常前倒し用の数式があります。
>イフ関数は必要ないから、H列をVLOOKUPで検索するという普通の式です。

>※列は2つあり、前倒しした月末日(E列)、後ろ倒しの月末日(H列 ※コード007用)の2種類です。1つのセルにまとめる数式があれば、教えてください。
上記が正しいなら、
①A1が007の時、H列検索で、
A1が007以外の時、E列検索です。

②>イフ関数は必要ないから、H列をVLOOKUPで検索するという普通の式です。
が正しいなら、A1が007以外の場合H列を検索しています。

①が正しいなら、A1=007以外は、E列検索です。
②が正しいなら、A1=007以外は、H列検索です。
結局、どちらの列を参照しているのでしょうか。

>※列は2つあり、前倒しした月末日(E列)、後ろ倒しの月末日(H列 ※コード007用)の2種類です。1つのセルにまとめる数式があれば、教えてください。
まとめること以前にどうなさりたいのかを、明確にしていただけますか。

念のため確認ですが、
①E列の有効範囲は、何行から何行までですか?
②E列の日付は昇順で並んでいる前提であってますか。
③前倒しした月末日とは、例えば6月30日が祝日の場合、6月29日を登録するということであってますか。
④H列の有効範囲は、何行から何行までですか?
⑤H列の日付は昇順で並んでいる前提であってますか。
⑥後ろ倒しした月末日とは、例えば6月30日が祝日の場合、7月1日を登録するということであってますか。
    • good
    • 0
この回答へのお礼

ありがとうございました。助かりました!列検索をイフ関数の偽でもう一度やり直してうまくいきました!間違えて質問してしまい、申し訳ございませんでした。

お礼日時:2018/09/16 19:51

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