• ベストアンサー

この関数の意味?

=MAX(INDEX(LEN($A1:$A10),)) これで、A1:A10内の各セルの最大文字列数がわかるようです。 MAX、INDEX、LENの各関数の意味は分かりますが、なぜこれで範囲内の最大文字列数がわかるのか不思議です。 どなたか、お馬鹿なわたくしめにもわかるようにご教示いただけませんでしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

>各関数の意味は分かります それなら馬鹿じゃありませんね。では、もう一度それぞれの関数のヘルプを見直す事からやってみましょう。 INDEX関数のヘルプより抜粋----- 行番号または列番号を 0 に設定すると、それぞれ列全体または行全体の値の配列が返されます。 ------------------------------ 省略はゼロを指定した事になります。 結果してINDEX関数のところでは、LEN(A1)からLEN(A10)までの値の配列が返ります。 #補足:ここは判らなくても構いません INDEX関数の結果がセル参照になるのは、INDEX関数をセル範囲形式で利用した場合、つまり範囲にセル参照を与えた場合です。 MAX関数のヘルプより抜粋--- 引数には、数値、数値配列、または数値を含む範囲を参照する名前かセル参照を指定します。 -------------------------- INDEX関数が出した数値配列をMAX関数で計算して、最大値を求めます。

emaxemax
質問者

お礼

keithin さん、いつもありがとうございます。 事情で、お礼が大変遅くなり、申し訳ありません。 とても勉強になります。 ありがとうございました。

その他の回答 (3)

noname#191575
noname#191575
回答No.4

「LEN($A1:$A10」でそれぞれの文字数をカウントします。 ちなみに、この数式だけではエラーになりますが、カウントしていると考えてください。 次にINDEX関数で上記のカウント数を表示させます。 基本となる数値(配列)はLEN関数の数値です。 10個ありますので、どれを表示させるかですが行番号も列番号も省略されています。 (LEN($A1:$A10)の後ろに『,』がありますからね。 という事は、LENでカウントした10個の値全部が選ばれる訳です。 で、最後にMAX関数がありますので、その10個の中から一番大きな数値が表示されるという訳です。

emaxemax
質問者

お礼

お礼が遅くなり、申し訳ありません。 大変ありがとうございました。

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

>なぜこれで範囲内の最大文字列数がわかるのか不思議です。 論理的にはINDEX関数を必要としませんがLEN関数の戻り値を配列にする必要がありますので式の確定時にCtrl+Shift+Enterの打鍵が必要になります。 LEN関数の戻り値をINDEX関数に中継すると通常のEnter打鍵で確定しても配列の戻り値が得られるのでMAX関数に引き渡すとき便利であると判断されたのでしょう。 {=MAX(LEN($A1:$A10))}  ↓ 配列式を一般式へ =MAX(INDEX(LEN($A1:$A10),))

emaxemax
質問者

お礼

お礼が遅くなり、申し訳ありません。 ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

MAX関数は範囲の最大値を求める関数ですが LEN($A1:$A10)の結果は範囲ではありません。ただの数値の集合とみなされます。 その為、MAX(LEN($A1:$A10))だと数式のある行と同じ行のセルの文字列数しか拾えません。 そこでINDEX関数ですが、その返り値は常に範囲とみなされます。 LEN($A1:$A10)の結果を範囲として扱うためにINDEX関数を使っているのです。

emaxemax
質問者

お礼

お礼が遅くなり、申し訳ありません。 大変ありがとうございました。

関連するQ&A