Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

EXCELのテーブルを利用した動的リスト作成

解決したいこと

TBL_売上管理内に動的リストを作成したいです。
TBL_売上管理の受付日、媒体名から該当する種類リストを表示したいです。

以下、使いたいテーブル内容

【TBL_売上管理】
列 受付日、媒体名、種類...

【MST_媒体】
列 媒体名、並び順
MST_媒体.PNG

【MST_媒体別買取手数料】
列 媒体名、種類、買取割合、買取価格、事務手数料、契約開始、契約終了
MST_媒体別買取手数料.PNG

エラー内容

キャプチャ.PNG

自分で試したこと

試しに別シートで以下のFILTER関数をしたところうまくいきました。
B1に受付日、C1に媒体名を入れています。

=FILTER(MST_媒体別買取手数料[種類],(MST_媒体別買取手数料[媒体名]=$C1)*(MST_媒体別買取手数料[契約開始]<=$B1)*($B1<=MST_媒体別買取手数料[契約終了]))

上記関数を元に、TBL_売上管理の種類入力欄の入力規則(リスト)に以下を入力しましたがうまくいきませんでした。

=INDIRECT("FILTER(MST媒体別買取手数料[種類],(MST媒体別買取手数料[媒体名]=TBL売上管理[@媒体名])*(MST媒体別買取手数料[契約開始]<=TBL売上管理[@受付日])*(TBL売上管理[@受付日]<=MST媒体別買取手数料[契約終了]))")

動的リストについていろいろ検索をかけてみたのですが、やりたいことに合致するものが見つけられませんでした。
そもそもFILTERでやるべきことではないのでしょうか?
どうかご教授いただけますと幸いです。

0

1Answer

INDIRECT関数は、引数の中の文字列の範囲を参照する関数ですので、引数の中に値が入っているとうまくいきません。
(多分、こういったサイトのテクニックを参考にしたのだと思いますが、あらかじめリストとなる範囲に名前が付いている場合にしか使えないテクニックです。
動的配列の結果を直接リストの条件に使うことはできないような感じなので、例えばこんな感じでしょうか。

試しにプロトタイプを作ってみました。参考にしてください。

  1. 欄外に作業列を確保しておく
  2. その列に上記のようなFILTER関数の式を入れておく
    image.png
  3. 欄外の作業列を入力規則で指定する(この際に、セル範囲が可変であることを表す#を付けておく)
    image.png
1Like

Comments

  1. @iamchikin5925

    Questioner

    ご回答ありがとうございます!
    現在、別作業に移ってしまいましたので手が空き次第、ご教授いただきました方法でやってみたいと思います。

Your answer might help someone💌