• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Filter関数を用いた結果、何も検索されなかった場合)

Filter関数を用いた結果、何も検索されなかった場合

このQ&Aのポイント
  • Filter関数を使用して検索を行った結果、何も該当しなかった場合の処理方法について質問です。
  • プログラムを実行したところ、セルが空のままになりました。追加の条件文を書き加えたところ、エラーが発生しました。
  • 具体的なエラーメッセージによると、型が一致しないためエラーが発生しています。Filter関数の戻り値について明確な値が分からず、問題が発生しています。ご教示いただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.1

Filterの結果がどうなるのか理解できていないと思います。 Filterの結果は複数件数の可能性がありますので配列(Array)で結果が返ります。 よって該当データがなくてもエラーになりません。 該当データがあったのか、無かったのかの判断は配列が何件あるかを調べれば良いです。 該当件数を調べるのは「UBound」を使用してください。 makojiさんのデータを例にすると   UBound(Filter(a, 8)) … -1   UBound(Filter(a, 3)) … 0 になります。 プログラム的には  If UBound(Filter(a, 8)) = -1 Then    ActiveCell.Offset(1, 0).Value = False  Else    ActiveCell.Offset(1, 0).Value = True  End If

makoji
質問者

お礼

ありがとうございます。 私は何か勘違いをしていたようで、検索結果が1個の場合、   If Filter(a,3)=23 then のようなコード、つまりaという配列から3を含む要素を抽出したところ1個だけで、しかもその値が23である場合には、Filter関数の戻り値が配列であることを忘れて、普通の変数のように扱って良いと思っておりました。 ところが今上記のコードを試してみると、   コンパイルエラー   型が一致しません。 とのエラーが出ます。 これと同じく、検索結果が0個の場合も、要素数0個の配列を返すだけで、何かのエラーメッセージを返したりはしないということですね。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A