• ベストアンサー

この関数の意味?

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

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答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/8248)
回答No.3

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

emaxemax
質問者

お礼

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

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

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

emaxemax
質問者

お礼

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

関連するQ&A

  • 条件付で最大値を取得(エクセル2000)

    エクセル2000です。ワークシート関数についての質問です。 セル範囲B1:B5の最大値は、=MAX(B1:B5) で求められますが、これに条件を付加してセル範囲A1:A5が1より大きいもののなかからセル範囲B1:B5の最大値を求めるならどのような数式になるでしょうか? 作業列を設けて、範囲A1:A5が1でないもののみ抽出し、そこからMAXで求めるという方法ならばすぐ思いつくのですが、作業列を使わない方法があればご教示ください。

  • EXCEL関数 MAX関数と複合的に・・・・

    EXCEL関数に関する質問です LAFT関数で抽出した数値群をMAX関数で最大値を導きたいのですが、「0」が帰ってきてしまいます。 1.1-1.1 1.6-2.5 2.4-4.7 と縦に3つ並んだセルのそれぞれ「-」より左の数値を、 関数 =LEFT(A1,FIND("-",A1)-1) で 1.1 1.6 2.4 と必要な数値を抽出し そのあとこの3つの数値の中の最大値を求めるために 関数 =MAX(B1:B3) を使ったのですが答えは「0」となります。 違う関数を使ってもOKですので、最大値の答えを得る方法を教えてください。

  • 関数の作り方教えてください

    A1・B1のセルにそれぞれ"98,-189"","と入力されている場合、A1セルの-189を抜き出すためにC1セルに組み合わせ関数を  =right(A1,Len(A1)-Find(B1,A1))と入力すると-189が 抜き出す事が出来るが、これをユーザー定義として以下の様に関数を作成するとコンパイルエラーがでます。 Function moji_nuki(対象 as string,検索文字 as string) moji_nuki=right(対象,Len(対象)-find(検索文字,対象)) End Function 関数を並べているだけですがsub Functionが定義されていないとエラーメッセージがでるのは何故か、何方か教えてください。ちなみにEXCEL2002です。よろしくお願いします。

  • INDEX関数を使用した関数の意味を教えてください。

    INDEX(sheet2!C:C,SMALL(INDEX((sheet2!$B$1:$B$100<>$B$18)*10^4+ROW($1:$100),),ROW(A1)))&"" sheet2にある表のB列に検索時に使用する文字列があり、sheet1のB18にその検索したい文字列を入力すると、一致したB列と同じ行のC列のデータを抽出する式です。 表のデータは今後も増加しますが、どの程度増加するは不明です。 INDEX関数やSMALL関数など一つ一つの関数の意味はわかっているつもりですが、なぜ上記のセルが選択されているのかわかりません。 特にSMALLの後の式がわかりません。 エクセル関数にはあまり詳しくないので、この式の意味をできれば詳しく教えていただけないでしょうか? (式の意味は人から聞いたものですが、違っていたらすいません)

  • 関数について

    関数でこんなことをしたいのですが。 ある文字列を検索範囲内で検索し、そのセルの下方にあるセルの値を返したいのですが、「LOOKUP」関数は右横のセルの値は返しますが下方はだめでした。よろしくご教示ください。

  • 知らなかった =MAXA()、=MINA()関数

    どなたかの回答を読んいて、最大(小)値を求める関数に、私が使ったことのない =MAXA() とか =MINA() が存在することを知りました。私は専ら =MAX()、=MIN() を使っていたのです。 下記の文章は、MAXA関数のヘルプからの抜粋です。 1.引数には数値を表す文字列を指定できます。 2.引数として指定した論理値と、数値を表す文字列が計算の対象となります。 3.引数としての配列またはセル範囲の参照に含まれる空白セルと文字列は無視 __されます。 4.引数に文字列が含まれる場合は 0 と見なされます。 添付図において、 1.範囲 B1:B5 に数値を入力。 2.セル A1 に式 =TEXT(B1,"0") を入力して、下方にオートフィル。 3.セル B6、B7 に式 =MAX(B$1:B$4)、=MAXA(B$1:B$4) を入力。 4.範囲 B6:B7 を左にオートフィル。 5.列D、Cも上と同様ですが、MAX を MIN の読み替えてください。 でも、当該表の結果からは MAX と MAXA の、および、MIN と MINA の違いを窺い知ることができません。どなたか MAX と MAXA の使い分けの好例を教えてください。

  • ★エクセルのMAX関数について★

    エクセルのMAX関数についてご質問します。例えば、 A1セルに$B$1:$B20の文字列が入っているとします。 普通にMAX関数を使う時は引数を=MAX($B$1:$B20)と直接入力しますが、=MAX(A1セルの値($B$1:$B20))としてMAX関数の引数をあるセルの値の内容にしたいのですが、その方法を教えてください。困ってます。宜しくお願いします!!

  • エクセルで開いているファイル全てに関数を適用する方法は無いでしょうか?

    エクセルで開いているファイル全てに関数を適用する方法は無いでしょうか? 例えば文字数が3万を超え1つのエクセルファイルに納まらなくてファイルを5つに分けたとします。 そこからLEN関数を使うとなると5つのファイルすべてに「LEN(A1)」と記入しなければならず面倒です。(LEN関数ならまだ簡単ですが…) そこで、一気にすべての開いているファイルのA1のセルにLEN関数を適用できたら手間が掛からず作業できるのですが 不可能でしょうか?

  • エクセルの関数の意味を教えてください。

    関数がまったく分からない者です。 以前エクセルの関数について質問をしました。(URL参照) http://questionbox.jp.msn.com/qa7570017.html その時は急いでいて意味を聞く時間がなかったので 下の関数の意味が分かる方、ぜひ教えてください。 =IF(A1=MAX($A$1:A1)-4,MAX($A$1:A1)+5,A1-1) 私の解釈は、A1が1であるときは5を足して、そうでないときは1を引く?なんですが ($A$1:A1)のところがよくわかりません。 よろしくお願いします。

  • エクセル関数について教えてください。

    エクセル関数について教えてください。 セルA5からA99の範囲で、セルA5から三行したのA8、また、三行下のA11、また、三行下のA14、、、、の中での最大値を、別の場所のセルB1に表示したいのですが可能でしょうか? 要は、何段かごと(決まった何段かごと)のセルの最大値を、別の場所のセルB1に表示したいのですが、、、 (更に) セルA5からA99の範囲で、セルA6から三行したのA9、また、三行下のA12、また、三行下のA15、、、、の中での最大値を、別の場所のセルB2に表示したいのですが可能でしょうか? 要は、何段かごと(決まった何段かごと)のセルの最大値を、別の場所のセルに表示したいのですが、、、 上記の両方のことを、同一のセル内で実行したいのでございます。 宜しくご教示御願いいたします。 (要は、飛んでいる(6段ごとに飛んでいるんですが、同一の列に存在している中から、B1,B2に抽出したいのです)

専門家に質問してみよう