• 締切済み

EXCEL関数の配列の考え方について

EXCEL関数の配列について、ご教授願います。 具体的には、集計作業で条件を絞り込む時、例えば、列Aでは文字列「あ」又は「い」を含み、列Bでは文字列「う」、「え」、または「お」を含むデータ数を集計する場合、 =SUMPRODUCT((A1:A100={"あ","い"})*(B1:B100={"う","え","お"}))・・・(1) 私はいつもこの方法を使用しています。この場合、列Aでの条件数(「あ」「い」の2つ)と列Bでの条件数(同3つ)が異なっている場合でも、特に問題は起こりません。 但し、これを下記のように書き換えます。 =SUMPRODUCT(ISNUMBER(FIND({"あ","い"},A1:A100))*ISNUMBER(FIND({"う","え","お"},B1:B100)))・・・(2) (2)式は(1)式と同じ意味を示すはずですが、こちらは#N/Aでエラーとなります。調べてみたところ、列Aの条件数(2つ)と列Bの条件数(3つ)が異なる場合(どちらかの条件数が1の場合を除く)、エラーになるという事実は判明しましたが、計算式内部でどのような処理が行われた結果、そうなったのか、全く分かりませんでした。恐らく、EXCELの配列や行列式の考え方が両者で異なっているからだと思うのですが、ネットで調べてもその答えらしきものを見つけることができませんでした。  これについて、ご存知の方、どうぞご教授下さいます様、お願い致します。

みんなの回答

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>=SUMPRODUCT((A1:A100={"あ","い"})*(B1:B100={"う","え","お"}))・・・(1) >私はいつもこの方法を使用しています。この場合、列Aでの条件数(「あ」「い」の2つ)と列Bでの条件数(同3つ)が異なっている場合でも、特に問題は起こりません。 一般に、配列同士の演算では、要素の数を同じにしないとエラーが出ますが、今回のような二次元配列の列数が違う配列同士を掛け算した場合も、当然のことですが、正しい計算はできません。 ちなみに、数式によっては、その部分を配列(範囲)として認識できない関数(例えばOFFSET関数など)と、そのまま配列として認識できる関数がありますので、関数によっては数式での配列が有効にならないことがありますが、このことと勘違いされているのでしょうか。

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

>=SUMPRODUCT((A1:A100={"あ","い"})*(B1:B100={"う","え","お"}))・・・(1) この数式は合っていますか?目的の計算ができないと思いますが。 片方の「あ、い」は、検索数20個で、もう片方は、検索数が30個ですから、両方をかけ合わせたら、片方は、ブランク(Null値)だから、エラーになってしまいます。#N/A!になるはずです。 >=SUMPRODUCT(ISNUMBER(FIND({"あ","い"},A1:A100))*ISNUMBER(FIND({"う","え","お"},B1:B100)))・・・(2) は、 =SUMPRODUCT(ISNUMBER(FIND(A1:A100,"あい"))*ISNUMBER(FIND(B1:B100,"うえお"))) ということだと思います。

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

関連するQ&A