チョコミントアイス

お世話になります。

エクセル365を使用しています。

<sheet1>
Aセル  Bセル    Cセル    Dセル  Eセル
商品   入荷日    配送日   経由地1 経由地2
いちご  2024/1/1  2024/1/10  千葉県  東京都
ばなな  2024/1/1  2024/1/10  長野県  秋田県
りんご  2024/1/3  2024/1/20  青森県  東京都
ばなな  2024/3/3  2024/3/24  福島県  山梨県
いちご  2024/6/5  2024/6/15  福島県  東京都
いちご  2024/7/12 2024/7/31  千葉県  長野県 




(続く)

上記のような一覧があります。
sheet2で別のsheetより、商品・販売日・重さ・箱の大きさなどの管理台帳が表示されるようにしています。
・sheet2で表示されている「商品」の「販売日」が、shee1のB・Cセルの入荷日~配送日のどこの期間に該当するか
・該当した「商品」の、sheet1のD・Eセルを、sheet2に表示するようにしたい

例)
<sheet2>
Aセル  Bセル   Cセル  Dセル
商品   販売日   経由地1 経由地2
いちご  2024/6/8 福島県  東京都

・「商品」いちご 「販売日」2024/6/8 = sheet1のBセル2024/6/5~Cセル2024/6/15の期間に該当する
・該当した、sheet1のDセル「福島県」を、sheet2のCセルに表示/sheet1のEセル「東京都」をsheet2のDセルに表示

といったことがやりたいのですが、それが可能な計算式を教えてほしいです。
よろしくお願いします。

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

  • うーん・・・

    早速の回答、ありがとうございます。
    複数該当した場合どうするか、と危惧して下さりありがとうございます。
    商品ごとに入荷後1カ月以内は再度入ってこない、3カ月は再度入ってこない・・・ことになっているので大丈夫だと思います。

    教えて頂いたFILTER関数で、参考のページなどを見ながら組んでみたのですが・・・
    =FILTER(Sheet1!A3:E34,('sheet2'!B2>=Sheet1!C3:C34)*('sheet2'!A2<=Sheet1!B3:B34)*(A2=Sheet1!A3:A34))
    と入力してみたのですが #CALC! と表示されてしまいます。

    日付範囲の <> の向きが違うのかと思い、それぞれの向きを逆にもしてみましたが #FALSE と表示されてしまいます。

    式の書き方など教えて頂けると大変助かります。

    No.1の回答に寄せられた補足コメントです。 補足日時:2024/08/07 13:51
  • うーん・・・

    早々の回答ありがとうございます。
    とても分かりやすく、丁寧な解説で初心者の私でも理解しやすかったです。

    再度の質問なのですが、sheet2の一覧がご提示いただいた一覧に変わるといった認識で間違いないでしょうか?
    であれば、sheet2は「関係のない物は表示しない」としているので、ご提示の一覧はsheet3で表示、sheet3の中で該当した物を(判定が 〇 の物だけ)sheet2で表示する。
    といった形になるのですが・・・
    (sheet2は商品に関する管理内容が4行目以降ズラズラと続くので、〇ではなかったら空白とする、という式にもできません・・・)

    sheet3の一覧の中から、Dセルが「〇」の、Eセル、Fセルを摘出して
    sheet2のC2セル(経由地1)、D2セル(経由地2)に表示させる
    この場合はどういった式にすればよろしいでしょうか?
    教えて頂けると助かります。

    No.2の回答に寄せられた補足コメントです。 補足日時:2024/08/07 15:30
  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (3件)

No1です。



>参考のページなどを見ながら組んでみたのですが・・・
私の環境は2019なので、No1の参考ページ以上の情報は持ち合わせていないのですが・・・
(というか、MSの説明サイトなので、それ以上の解説もないでしょうけれど)

ご質問のはっきりしたレイアウト(行数等)が不明なのですが、検索値となる日付があるのはB列ではないのでしょうか?
以下は、あくまでも想像ですが、Sheet2のC2セルに

=FILTER(Sheet1!D:E,(Sheet1!A:A=A2)*(Sheet1!B:B<=B2)*(Sheet1!C:C>=B2),"")

とすれば、求める結果がスピルされませんか?

複数の結果が抽出されるような可能性には配慮していません。
日付は全てシリアル値(=エクセルの日付形式のデータ)で入力されているものと仮定しています。
    • good
    • 0

データの抽出ならVLOOKUPが便利です



Sheet2から行きましょう。
まず、商品名を同じ並びにします
A列の「商品」の下に
=Sheet1!A2
※=を入力し、Sheet1の「商品」の一個下のセルを選択でも可
と入力し、セルをコピーしてSheet1の商品の数だけ下に張り付けてください

次に販売日が入荷日~出荷日の期間に収まっているかになります
そもそも参照する販売日がないと話にならないので、
販売日の隣に列を追加して判定する列を作りましょう
数式は
=IF(B2>=Sheet1!B2,IF(B2<=Sheet1!C2, "〇","出荷日を超過しています"), "入荷日より前です")
と入力し、セルをコピーしてSheet1の商品の数だけ下に張り付けてください

出荷日より小さければ「入荷日より前です」と返し、
出荷日より大きければ「出荷日を超過しています」と返す条件式です
覚えましょう

次にC列~の経由地ですが、
B列の処理で一列増やしたのでD列~になります
D列には
=VLOOKUP(A2,Sheet1!A:E,4,FALSE)
と入力し、
E列には、
=VLOOKUP(A2,Sheet1!A:E,5,FALSE)
と入力し、セルをコピーしてSheet1の商品の数だけ下に張り付けてください

VLOOKUPの使い方を軽く説明しますと

VLOOKUP(検索したいセル,検索範囲,検索範囲の左から何番目の列が欲しい,FALSE)
です。
今回で言うと、「Sheet1のA列~E列」の中の「Sheet1のA列」の値が「いちご」と同じだったら「Sheet1のD列」の値を取ってきてくれ
という意味になります。
VLOOKUPは[検索したいセル]と[検索範囲]の一番左の列の値とを比較します。

しかし、今回の表では「A列」の値が「いちご」のセルが無限にあるので、一番下にある「いちご」の「Sheet1のD列」の値を取って来てしまい話になりません。
そういう場合は、各商品に「ID」を振り分けるのが一般的です。

Sheet1とSheet2のどちらにも左端に新しく列を挿入し、
A列  B列
商品ID 商品 ・・・
とし、検索したいセルを商品IDに、セル範囲を一列大きくすると、任意の商品の経由地が取得できます。

列を追加したので↑の数式で指定しているセルの列も一個ずらさないとエラーになるので気を付けてください。
A→B B→C のように置き換えてください
「エクセル365 IF??計算式を教えてく」の回答画像2
この回答への補足あり
    • good
    • 0

こんにちは



365ならFILTER関数で抽出できると思いますが、複数該当した場合にどうするおつもりなのでしょうね・・・
https://support.microsoft.com/ja-jp/office/filte …
この回答への補足あり
    • good
    • 0

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