質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

1回答

2760閲覧

Excelのスピル範囲演算子を使うと"#VALUE!"エラーとなる数式の直し方(TRANSPOSE/FILTER/INDIRECT/TEXTJOIN)

Shau

総合スコア2

0グッド

0クリップ

投稿2022/12/27 12:50

前提

環境

Excel Online

参加表

以下のようなテーブルを作っています。
※名前・メールアドレスはダミーデータです。

イメージ説明図1:参加表テーブル

以下のようにデータを入力しています。

  • 参加者列に名前
  • メールアドレス列にメールアドレスを入力する
  • それ以降の列を日付で追加する
  • 各参加者の行の参加できる列にを記載する

メールアドレスのとりまとめ

日別で○のついた参加者のメールアドレスを取りまとめ、コピペでメール宛先を設定するために以下の流れを考えています。

  1. 日付を[参加表]テーブルの[#見出し]から取得
    TRANSPOSE(FILTER(参加表[#見出し],ISNUMBER(TEXT(参加表[#見出し],"yyyymmdd")+0)))
  2. 1.で取得した日付から、[参加表]テーブルの日付列を参照
    INDIRECT("参加表["&{1.で取得した日付}&"]"
  3. 2.で取得した[参加表]の日付列にがついている行の[メールアドレス]列を取得
    FILTER(参加表[メールアドレス], {2.で取得した日付列}="○" )
  4. 3.で取得した[メールアドレス]列の配列を連結(これをコピペしてメール宛先を設定)
    TEXTJOIN(";",TRUE, {2.で取得した[メールアドレス]列の配列})

これにより、以下の画像のような出力を想定しています。

イメージ説明図2:想定の出力

これを実現するために、以下の数式を利用しています。

列名数式
日付TRANSPOSE(FILTER(参加表[#見出し],ISNUMBER(TEXT(参加表[#見出し],"yyyymmdd")+0)))
メールアドレスまとめTEXTJOIN(";",TRUE,FILTER(参加表[メールアドレス],INDIRECT("参加表["&{日付列のセル}#&"]")="○"))

発生している問題

メールアドレスのとりまとめにといて、2.の部分の数式に対して以下の現象が出ています。

  1. スピル範囲演算子を利用した場合に#VALUE!エラーになる。
  2. スピル範囲演算子を利用しない場合は想定の出力(図2)が表示される。

イメージ説明図3:スピル範囲演算子の有無による動作の違い

実現したいこと

問題点にある 1. の問題点を解決し、スピル範囲演算子を利用した数式を実現したいです。

2.の場合はスピル範囲演算子を利用しないと日付列の行数分この数式をコピーをする必要があったり、事前に多くの行数に数式を設定しておくなどが必要であり、それらを回避したいと考えています。

試したこと

補足情報

スピルを使いだしたのがつい最近なので、認識間違っているかもしれません。
基本的な見落としでしたら申し訳ありませんが、ご回答をお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

INDIRECTの引数に配列は渡せないので、BYROW関数で行毎に処理するようにすればどうでしょう。

EXCEL

1=BYROW(G3#,LAMBDA(d,TEXTJOIN(";",TRUE,FILTER(参加表[メールアドレス],INDIRECT("参加表["&d&"]")="○",""))))

=BYROW(G3#,LAMBDA(d,TEXTJOIN(";",TRUE,FILTER(参加表[メールアドレス],INDIRECT("参加表["&d&"]")="○",""))))


ちなみに、日付列は、下記の式でもいいですね。

EXCEL

1=TRANSPOSE(DROP(参加表[#見出し],,2))

DROPは2022年8月アップデートで追加された関数です。

Microsoft、「Excel」に14の新関数を追加 ~文字列・配列操作が簡単に - 窓の杜

投稿2022/12/27 16:32

編集2022/12/27 16:48
hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Shau

2022/12/29 13:00

ご回答ありがとうございます。 > INDIRECTの引数に配列は渡せない この知識が足りていませんでした。ありがとうございます。 提案いただいたBYROWを利用した数式で想定の挙動を実現できました。 また、日付部分のDROPを利用した回答方法もシンプルで分かりやすい対処法で助かりました。 解決しましたので、ベストアンサーとさせていただきます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問