アプリ版:「スタンプのみでお礼する」機能のリリースについて

同じかと思うのですが、
式Aは問題なく通って、式Bは「value」のエラーになります。
ただし、式Bも配列数式として入力すると通ります。
違う点はyearが入るだけですが、理由を教えてください。
宜しくお願いします。

式A
=INDEX(sht1!D$7:D$26,MATCH(sht2!B7,sht1!A$7:A$26,0),0)

式B
=INDEX(sht1!G$12:G$35,MATCH(YEAR(sht2!B245),YEAR(sht1!A$12:A$35),0),0)

A 回答 (1件)

こんにちは



エクセルの関数では、通常の数式内で配列計算に対応しているものとそうでないものがあります。

ご提示の式の場合、
>YEAR(sht1!A$12:A$35)
は、通常の式の中では(代表値として)YEAR(sht1!A$12) として評価されます。
仮に、YEAR(sht2!B245)とYEAR(sht1!A$12)の値が一致していたとしても、エラーになります。
理由としては、 YEAR(sht1!A$12)の値は単純数値となるので(セル範囲としては評価されずに)エラーになっていると考えられます。

例えば、単純な数値の例として
 =MATCH(2023,2023,0)
はエラーになりますが、
 =MATCH(2023,{2023},0)
であれば、1を返すことから理解できるものと思います。


ご質問のケースでは、ご提示の式を配列数式として設定することで、明示的に配列計算を指定できるので、
>YEAR(sht1!A$12:A$35)
を配列として評価してくれるようになるので、質問者様の期待通りの結果になるものと思います。

ちなみに、配列数式にしなくても計算できるようにする方法もあります。
>YEAR(sht1!A$12:A$35)
の部分を
 INDEX(YEAR(sht1!A$12:A$35),)
に変えることで、エクセルが配列として認識するようになりますので、配列数式の設定をしなくても計算できるようになると思います。
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
全く納得です。
yearが範囲を取れないのですね。
それを無いものねだりしていたと。
なので、配列数式はこのyearに効いていたのですね。

また、indexで置き換えれば、
範囲指定が可能なので配列数式にしなくても。
全て了解です。

スッキリしました。
こまごまと良く分かる説明、大変お世話になりました。

お礼日時:2023/03/21 13:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!