- ベストアンサー
この関数の意味?
=MAX(INDEX(LEN($A1:$A10),)) これで、A1:A10内の各セルの最大文字列数がわかるようです。 MAX、INDEX、LENの各関数の意味は分かりますが、なぜこれで範囲内の最大文字列数がわかるのか不思議です。 どなたか、お馬鹿なわたくしめにもわかるようにご教示いただけませんでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>各関数の意味は分かります それなら馬鹿じゃありませんね。では、もう一度それぞれの関数のヘルプを見直す事からやってみましょう。 INDEX関数のヘルプより抜粋----- 行番号または列番号を 0 に設定すると、それぞれ列全体または行全体の値の配列が返されます。 ------------------------------ 省略はゼロを指定した事になります。 結果してINDEX関数のところでは、LEN(A1)からLEN(A10)までの値の配列が返ります。 #補足:ここは判らなくても構いません INDEX関数の結果がセル参照になるのは、INDEX関数をセル範囲形式で利用した場合、つまり範囲にセル参照を与えた場合です。 MAX関数のヘルプより抜粋--- 引数には、数値、数値配列、または数値を含む範囲を参照する名前かセル参照を指定します。 -------------------------- INDEX関数が出した数値配列をMAX関数で計算して、最大値を求めます。
その他の回答 (3)
「LEN($A1:$A10」でそれぞれの文字数をカウントします。 ちなみに、この数式だけではエラーになりますが、カウントしていると考えてください。 次にINDEX関数で上記のカウント数を表示させます。 基本となる数値(配列)はLEN関数の数値です。 10個ありますので、どれを表示させるかですが行番号も列番号も省略されています。 (LEN($A1:$A10)の後ろに『,』がありますからね。 という事は、LENでカウントした10個の値全部が選ばれる訳です。 で、最後にMAX関数がありますので、その10個の中から一番大きな数値が表示されるという訳です。
お礼
お礼が遅くなり、申し訳ありません。 大変ありがとうございました。
- bunjii
- ベストアンサー率43% (3589/8249)
>なぜこれで範囲内の最大文字列数がわかるのか不思議です。 論理的にはINDEX関数を必要としませんがLEN関数の戻り値を配列にする必要がありますので式の確定時にCtrl+Shift+Enterの打鍵が必要になります。 LEN関数の戻り値をINDEX関数に中継すると通常のEnter打鍵で確定しても配列の戻り値が得られるのでMAX関数に引き渡すとき便利であると判断されたのでしょう。 {=MAX(LEN($A1:$A10))} ↓ 配列式を一般式へ =MAX(INDEX(LEN($A1:$A10),))
お礼
お礼が遅くなり、申し訳ありません。 ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
MAX関数は範囲の最大値を求める関数ですが LEN($A1:$A10)の結果は範囲ではありません。ただの数値の集合とみなされます。 その為、MAX(LEN($A1:$A10))だと数式のある行と同じ行のセルの文字列数しか拾えません。 そこでINDEX関数ですが、その返り値は常に範囲とみなされます。 LEN($A1:$A10)の結果を範囲として扱うためにINDEX関数を使っているのです。
お礼
お礼が遅くなり、申し訳ありません。 大変ありがとうございました。
お礼
keithin さん、いつもありがとうございます。 事情で、お礼が大変遅くなり、申し訳ありません。 とても勉強になります。 ありがとうございました。