Excel の IF 関数で「引数が多すぎます」

Excel の IF 関数で「引数が多すぎます」

関数が多すぎるというエラーが繰り返し表示されます。私が実現しようとしているのは、特定の列 (月曜日から日曜日) に時間が記載されている場合、日付 (セル Y1) から正しい日数を引いた値を取得することです。なぜうまくいかないのでしょうか?

=IF(M3<>"", $Y$1-6, "",IF(N3<>"", $Y$1-5, "", IF(O3<>"", $Y$1-4, "",IF(P3<>"", $Y$1-3, "",IF(Q3<>"", $Y$1-2, "", IF(R3<>"", $Y$1-1, "",IF(S3<>"", $Y$1, "")))))))

答え1

ネストされた if は親 IF の FALSE の場所に配置されます。

=IF(M3<>"", $Y$1-6,IF(N3<>"", $Y$1-5,IF(O3<>"", $Y$1-4,IF(P3<>"", $Y$1-3,IF(Q3<>"", $Y$1-2, IF(R3<>"", $Y$1-1,IF(S3<>"", $Y$1,"")))))))

しかし、そうは言っても、それをさらに合理化することは確かに可能です。

=$Y$1-7-MATCH(TRUE,INDEX(M3:S3<>"",),0)

INDEX は MATCH に TRUE/FALSE の配列を返します。MATCH は、その配列内の最初の TRUE の相対位置を返します。これを 7 から減算して、Y1 から減算する正しい値を取得します。

関連情報