• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関数の中に関数を入れたいが…)

Excel関数の中に関数を入れた場合のエラーと戻り値の問題

このQ&Aのポイント
  • Excelの関数の中に関数を入れると、エラーが発生する場合があります。
  • 特に、SUMIF関数やSUMPRODUCT関数の中でPHONETIC関数を使用すると、エラーメッセージが表示されます。
  • また、関数の中に関数を入れた場合に、正しい戻り値が得られないことがあります。

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

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

皆さんの回答に勘違いがあるようなので参考までに。 まずPHONETIC関数の戻り値ですが、基本はふりがな情報が返りますが、数式で表示された文字列などではふりがな情報を取得できません(数字の1なども同じです)。 またPHONETIC関数の引数を範囲指定した場合は、そのふりがな文字列を連結した結果を返します。 したがって、ふりがな情報のないデータの文字列(Officeクリップボードを使うかワードにコピー貼り付けしそのデータをエクセルに貼り付け戻す)を連結するのに使用することができます。 しかし、関数で取得した文字列は上述のようにふりがな情報はありませんので、ご質問の期待した結果を得ることはできません。 次にSUMIFやCOUNTIF系の関数では、引数の範囲部分は配列を含めて指定できない関数です。 したがって、ご質問のような通常の範囲以外のデータを入力するとエラー表示が出るわけです。 一方、MATCH関数などは範囲の部分に配列を代入することができます(関数によって使える場合と使えない場合がありますので試行錯誤で確認するしかありません)。 さらにSUMPRODUCT関数でエラーが出るのは数式の範囲の一部にエラー値が入っている場合とA2:E2に数値以外が入っている場合だけですので、例示の数式では「0」が返ることになるわけです(PHONETIC(A1:E1)=C7の配列がすべてFALSEになるため)。

msMike
質問者

お礼

懇切丁寧なご説明、お蔭様で納得することができました。 誠にありがとうございました。

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

その他の回答 (2)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>B7 では「入力した数式は正しくありません」と叱られ、 SUMIF関数の第1引数の範囲にPHONETIC関数を使えないのが原因でしょう。 >D7 では叱られはしなかったけど、戻り値が 28 でなく 0 になってしまいました。 SUMPRODUCT関数の引数としては有効ですが、(PHONETIC(A1:E1)=C7)→("アンズアンズアンズアンズアンズ")=アンズ)*1→0となりますので、0*A2:E2→{0,0,0,0,0}の合計は0になります。

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

>なぜ B7 で叱られ、D7 では 0 になってしまうのか、教えてください。 「PHONETIC(A1:E1)」の結果は "アンズアンズアンズアンズアンズ"と言う15文字の文字列 です。 SUMIFの最初の引数には「文字列ではなく、セルの範囲を指定しなければならない」ので =SUMIF(PHONETIC(A1:E1),C7,A2:E2) は =SUMIF("アンズアンズアンズアンズアンズ",C7,A2:E2) と書いたのと同じになりますから、エラーになります。 一方 =SUMPRODUCT((PHONETIC(A1:E1)=C7)*(A2:E2)) は =SUMPRODUCT(("アンズアンズアンズアンズアンズ"=C7)*(A2:E2)) と書いたのと同じになりますから、結果は0になります。 試しに、C7に「アンズアンズアンズアンズアンズ」と入力してみましょう。SUMPRODUCTの方の結果が28になる筈です。 要点は PHONETIC(A1:E1)の結果は、配列ではなく、単なる1つの文字列になる と言うことです。

msMike
質問者

補足

》 SUMIF関数の第1引数の範囲にPHONETIC関数を使えないのが原因でしょう まぁ、それで納得することにします。(^_^) しかしながら、SUMPRODUCT関数の場合を考えてみます。 私の添付図の1行目の左端(A1)から、全角アルファベット A、K、U、i、s を入力します。 次に、セル A3 に式 =MOD(CODE(A1),10) を入力して、此れを右方にズズーッとドラッグ&ペーストします。(3行目はすべて数値の 5 ) このとき、次式の戻り値は当然 28 になります。 =SUMPRODUCT((A3:E3=5)*(A2:E2)) そこで、上式中の「A3:E3」の場所に「MOD(CODE(A1:E1),10)」を代入した式 =SUMPRODUCT((MOD(CODE(A1:E1),10)=5)*(A2:E2)) の戻り値は、私の期待通り 28 を呈します。 此方のSUMPRODUCTは期待通りで、質問の場合のSUMPRODUCTは期待外れなのはなぜなのでしょうか?

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

関連するQ&A