とっておきの手土産を教えて

I2のセルに入力されている金額に対して特定の数字を出したいのですが、その特定の数字がM2に入力されている区分によって変わります。これを関数で表現したいのですが、「この関数に対して、多すぎる引数が入力されています」と出てしまいます。確認してみたのですが、いまいちどこのことか分からず。教えて頂けたらありがたいです。よろしくお願いします。

=IF(M2="建物の売却",
IF(I2<=500000, 1,
IF(I2<=750000, 2,
IF(I2<=1000000, 3,
IF(I2<=1250000, 4,
IF(I2<=1500000, 5,
IF(I2<=2000000, 6,
IF(I2<=2500000, 7,
IF(I2<=3000000, 8, 9)))))))),

IF(M2="土地の売却",
IF(I2<=500000, 1,
IF(I2<=750000, 2,
IF(I2<=1000000, 3,
IF(I2<=1250000, 4,
IF(I2<=1500000, 5,
IF(I2<=2000000, 6,
IF(I2<=2500000, 7,
IF(I2<=3000000, 8,
IF(I2<=4000000, 9,
IF(I2<=5000000, 10,
IF(I2<=6000000, 11,
IF(I2<=7000000, 12,
IF(I2<=8000000, 13,
IF(I2<=9000000, 14,
IF(I2<=10000000, 15, 16)))))))))))))),

IF(M2="物件の貸出し",
IF(I2<=300000, 1,
IF(I2<=400000, 2,
IF(I2<=500000, 3,
IF(I2<=600000, 4,
IF(I2<=700000, 5,
IF(I2<=800000, 6,
IF(I2<=900000, 7,
IF(I2<=1000000, 8, 9)))))))),

IF(M2="その他の契約",
IF(I2<=1000000, 1,
IF(I2<=1300000, 2,
IF(I2<=1600000, 3,
IF(I2<=1900000, 4,
IF(I2<=2200000, 5,
IF(I2<=2500000, 6,
IF(I2<=3000000, 7,
IF(I2<=5000000, 8,
IF(I2<=10000000, 9,
IF(I2<=15000000, 10, 11)))))))))),
))))

A 回答 (2件)

こんにちは



括弧の対応等や引数の数を正しく書けば、ご提示の式でも可能なはずです。
以前はIFのネストに制限がありましたが、現状は64までになったようです。
(お使いのバージョンによっても異なりますけれど・・)
ですので、きちんとチェックなされば良いものと考えられます。

とは言え、ご提示の方式は式も長く扱いにくいだけでなく、メンテナンスや変更の際にもわかりにくいものとなっていると考えられます。
(既にそうなっているから、ご質問なさっているのでしょうけれど、ご自身ですらやる気にならないものを、通りがかりの他人に頼むのもいかがなものかと思いますが・・・)


一方で、区分から区分値への変換を行いたいのなら、対応表を作成しておいて、それをVLOOKUPやMATCHなどで参照して変換する方式にしておいた方が、区分に変更等があった際にも表をメンテするだけで済むようになるので、視認性も良くわかりやすくなると考えられます。
ただし、ご提示の境界条件は「以下(<=)」となっていますが、組み込み関数の昇順の場合の境界条件は「以上(>=)」となっていますので、ご提示の条件に合わせるのには若干の工夫が必要にはなりますけれど・・・


変換表を利用する簡単な一例として、以下の図のようなものを考えてみました。
(あくまでも一例としての方法です。Office2019で検証済)

対応表を別シート等に作成しておきます。
・添付の例では、A1:E18を対応表としています。
 (添付図の都合上、同一シートにしてあります)
・対応する区分値は1~の連続数で固定のようなので、区分値は省略した表に
 してあります。
・桁数が多いので、万単位表示等の方がよさそうですが、ひとまずご提示のまま。
・I2セルに入力される値は、整数のみと仮定しています。
 (これを利用して、境界条件の読み替えをしています)

添付図では、M2、I2の値に対してI5セルに区分値を表示すると仮定して、
=IFERROR(MATCH(I2,INDEX(OFFSET(A2,,MATCH(M2,B1:E1,0),AGGREGATE(14,6,ROW(A1:A9)/(OFFSET(A2:A17,,MATCH(M2,B1:E1,0))<>""),1))+0.1,)),"")
の式を入力してあります。

※ Office365等のバージョンをお使いなら、式は更に簡略化できると思われます。
※ 表を降順で作成すれば、組み込み関数の境界条件は「以下」となるので、ご希望の内容に揃えることも可能です。
(この場合は、区分値の列と、最大を超えた場合の判定が必要になるでしょう)
「数式のエラーについて」の回答画像2
    • good
    • 0

まずはシンプルな式にしてから、動作確認をしてみてはいかがでしょうか。

    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A