質問者様がどうしたいのかが今一つ不明確なので補足願います。
>=IF(B20="",IF(B19="",IF(B18="",IF(B17="",IF(B16="",IF(B15="",IF(B14="",IF(B13="",IF(B12="",IF(B11="",IF(B10="",IF(B9="",IF(B8="",IF(B7="",IF(B6="",IF(B5="",IF(B4="",IF(B3="","","XL"),"L"),"M"),"S"),"XL"),"L"),"M"),"S"),"XL"),"L"),"M"),"S"),"XL"),"L"),"M"),"S"),"サイズ")
という関数では、B19セルが空欄ではない場合には、「サイズ」と表示するのは判るのですが、B20セルが空欄ではない場合には、何と表示したいのかが記されておりません。
又、御質問文の関数では、例えば、B3セルが空欄ではない場合において「XL」と表示するのは、B4~B20の範囲にあるセルが全て空欄となっている場合のみとなり、B4~B20の範囲にあるセルの内、B7、B11、B15以外のどれか一つでも空欄ではないものがある場合には、例えB3セルが空欄ではなくとも「XL」とは表示されない事になりますが、その様な働きをする関数を求めておられるのでしょうか?
それとも、例えばB3セルに商品名が入力された場合には、必ずC3セルに「XL」と表示させたいのでしょうか?
もし、前者だとしますと、次の様な関数となります。
=IF(COUNTIF($B$3:$B$20,"*?"),INDEX({"XL","L","M","S","XL","L","M","S","XL","L","M","S","XL","L","M","S","サイズ","B20が空欄ではない場合"},MATCH("",B3:B20,-1)),"")
或いは、
=IF(COUNTIF($B$3:$B$20,"*?"),IF(B20="",IF(B19="",INDEX({"XL","L","M","S"},MOD(MATCH("",B3:B20,-1),4)),"サイズ"),"B20が空欄ではない場合"),"")
御質問文にある関数と同じ働きをして、且つ、入れ子が少なく済む関数は以上の様なものとなります。
しかしながら、御質問文にある関数で出来る事と、ANo.1様の御回答に対する質問者様の御補足に記されている「やりたい事」は、内容が全く異なっています。
もし、
>B1に商品名を入れるとC1に「サイズ」、C2に「S」、C3に「M」、C4に「L」、C5に「XL」、C6に「S」・・・」と下に20個くらい自動で入れるようにしたいのです。
のでしたら、まず、C1セルには次の関数を入力して下さい。
=IF(INDEX($B:$B,ROW())="","サイズ")
次に、C2セルには次の関数を入力して下さい。
=IF(INDEX($B:$B,ROW())="","",INDEX({"S","M","L","XL"},MOD(ROWS($2:2),4)))
そして、C2セルをコピーして、C3以下に貼り付けて下さい。
ANo.1様の御回答に対する質問者様の御補足に記されている「やりたい事」を実現させる方法は以上です。
尚、、「御質問文にある関数」と「ANo.1様の御回答に対する質問者様の御補足に記されている『やりたい事』」の内容が異なっているため、当然ながら、「御質問文にある関数と同じ働きをする関数」と「ANo.1様の御回答に対する質問者様の御補足に記されている『やりたい事』を実現させる関数」では、表示される結果も異なるものとなりますし、質問者様がどうされたいのかが不明確であるため、上記のどちらの方法も、質問者様の御期待に沿えるかどうかも不明となってしまいます。
お礼
お騒がせいたしました。 以下の関数で解決いたしました。質問ではF列がC列です。 =IF(B10="",IF(F9="サイズ","S",IF(F9="S","M",IF(F9="M","L",IF(F9="L","XL",IF(F9="XL","S",""))))),"サイズ")