使い分けの好例を教えてください

このQ&Aのポイント
  • 知らなかったMAXA()、MINA()関数。専ら使っていたMAX()、MIN()との違いを教えてほしい。
  • MAXA()とMINA()は引数に数値を表す文字列を指定し、論理値と数値を計算する。配列やセル範囲の空白セルと文字列は無視される。
  • MAXA()とMINA()の違いを図を使って説明し、使い分けの好例を教えてほしい。
回答を見る
  • ベストアンサー

知らなかった =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 の使い分けの好例を教えてください。

  • msMike
  • お礼率71% (507/712)

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

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6642/9410)
回答No.4

>》 調べる範囲に数値しか含まれないなら、min/minA、 >》 max/maxA、どちらを使うのも好み、… >それって正しくないのでは? >調べる範囲に数値だけでなく、文字列セルが混在していても、どちらも使えるでしょ? 補足すると、 →調べる範囲に数値しか含まれないなら、(結果は同一だから) min/minA、max/maxA、どちらを使うのも好み と書いたわけです。 文字列セルを含む可能性があるなら、 →(結果が違ってくるから) min/minA、max/maxAを、自分の都合のいいように使い分けなければならない。 ということになります。 「文字列セルをゼロ扱いする」というのは、一般的な使用においては不都合なことが多いでしょうから、普通はmin() max()だけ使っておけばいいんじゃないかと、正直、思います。 でも、minA() maxA() を活用できる例として何かないかと頭をひねったのが 回答No.2の中段、ということになったんですけども…。

msMike
質問者

お礼

asciizさん、 結論を先に言えば、今回の「→(結果が違ってくるから)」を見て、思わず「あっ!」と声をあげて、そこで私の抱えていた問題が氷解しました。ありがとうございました。 以下は、長文になりますが、参考までに書いておきます。 私の今回の思い違い(勘違い)は実は根が深いところにありました。 大昔のことですが、Lotus1-2-3 から Excel に移行してきた私が驚いたことの一つが“文字列の数字は四則演算では数値として機能する”でした。 例えば Excel では "123"+456→579、"2015/12/1"*1→42339 となるけど、Lotus1-2-3 ではエラーになっていたように記憶しています。 そういう次第なので、MAXA関数のヘルプが言う「数値を表す文字列を指定できます」「数値を表す文字列が計算の対象となります」も「数値として機能する」の意味だと勘違いしていたのです。同ヘルプ中の「文字列が含まれる場合は 0 と見なされます」の「文字列」も「数値を表す文字列」は含まれないとも早とちりしたりして、混乱していました。 再度の丁寧なコメントをいただき、心より感謝いたしております。

その他の回答 (4)

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

>1.引数には数値を表す文字列を指定できます。 引数に "1" や "123" のように数式へ与えると数値の 1 や 123 として評価されます。 >2.引数として指定した論理値と、数値を表す文字列が計算の対象となります。 =MAXA("1","3","5","4","2") → 5 数式内に引数として数値をれ連想できる文字列を与えると数値に置き換えて演算します。 >3.引数としての配列またはセル範囲の参照に含まれる空白セルと文字列は無視されます。 >4.引数に文字列が含まれる場合は 0 と見なされます。 =MAXA(A1,A2,A3,A4,A5) → 0 (A1:A5はすべて文字列のとき) セルの値である文字列が数値を連想できても数値に置き換えることが無く 0 が返ります。

msMike
質問者

お礼

bunjiiさん、 コメント、ありがとうございました。 半分冗談ですが、ひょっとして貴方は、MSサポーター(応援者)ではないかと思い始めました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

同じ~A系の関数でもMINAやMAXA関数の利用機会があまり多くないのでAVERAGEA関数で説明したほうがわかりよいような気がします。 例えば添付画像のA1:A5セルのように、数字、文字列、スペースを含むセルを平均するとき、通常のAVERAGE関数では空白セルと文字列は計算対象外ですので「3」となりますが、場合によっては文字列もデータとしてカウントして平均を出したいときが少なくありません(すなわち「0」とみなして「2.25」で計算する)。 この考え方をMINAやMAXA関数に拡張すると、文字列は「0」とみなすので、MIN関数では「1」となりますがMINA関数では文字列に対応する「0」が返るわけです。

msMike
質問者

お礼

コメント、ありがとうございました。 お蔭様で少し理解できたような気がします。 [関数の挿入]メニューの窓内で AVERAGEA を選択したとき、当該メニューの下端に「引数の文字列および FALSE は 0、TRUE は 1 と見なします」なる一節は MackyNo1さんの説明に合っているように思えます。 しかし、AVERAGEA でなく、AVERAGEA 関数のヘルプ本文中の[解説]の項に「引数として指定した論理値と、数値を表す文字列が計算の対象となります」があるのは合点が行きません。そう記述していながら「計算の一部としてセル参照に論理値や数値を表す文字列を含める場合は、AVERAGEA 関数を使用します」とも書いてあります。 少し理解できたようで、まだ、少し混乱から抜け切れておりません。(トホホ)

  • asciiz
  • ベストアンサー率70% (6642/9410)
回答No.2

ヘルプにある違いは、以下の部分。 ・MAX()、MIN() >引数に配列またはセル範囲の参照を指定した場合、 >そこに含まれる数値だけが計算の対象となります。 >配列やセル範囲に含まれる空白セル、論理値、または >文字列はすべて無視されます。 ・MAXA()、MINA() >引数に TRUE が含まれる場合は 1 と見なされ、 >文字列または FALSE が含まれる場合は 0 (ゼロ) と >見なされます。 上記に該当しない場合、すなわち調べる範囲に含まれる値がすべて数値(または空白セル)である時、MIN()とMINA()、MAX()とMAXA()は完全に一致します。 調べる範囲に文字列値が存在した場合、MINA()関数では、最小値として0が返ることになります。(※他にマイナス値が無い場合) その他、真偽値 TRUE のセルが含まれると、そこは 1 として集計対象になるので、場合によっては混乱してしまいますね。 MAX()・MIN()では数値セルしか調べないので、文字列セルは無視して、数値の中で一番大きい・小さいものの値となります。 ---- 使い分け方には……あまり良いものを思いつかないのですが(汗) 真偽値がズラっと一列に並んでいるような範囲で、MAXA()を取ると、すべてFALSEならば0ですが、どこか一つでもTRUE がある場合に1となります。 その逆、真偽値のみの範囲で、MINA()を取ると、すべてTRUEなら1ですが、どこか1つでもFALSEがある場合に0が返ります。 「=if(テスト, 計算値, "エラー")」というような計算セルが並んでいるところで、MINA() を使って最小値を取ると、すべて正常に計算されていれば計算値のいずれかが返りますが、文字列"エラー"になったセルがあれば、0が返ります。 あるいは、「=if(min(範囲)=minA(範囲), 次の計算, "数値ではないセルがあります")」なんて判定に使えるかも知れません。(※数値0, 1が含まれないと保証できる場合) ---- まあ、調べる範囲に数値しか含まれないなら、min/minA、max/maxA、どちらを使うのも好み、ということになりますね。

msMike
質問者

補足

》 調べる範囲に数値しか含まれないなら、min/minA、 》 max/maxA、どちらを使うのも好み、… それって正しくないのでは? 調べる範囲に数値だけでなく、文字列セルが混在していても、どちらも使えるでしょ?

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.1

その関数は使用した事は無いのですが、 trueが存在すると1を返し、falseだと0:falseは数値以外の文字列を意味してるようです。 trueが存在する場合は、他の数値が1未満の値であればMAXA関数で1を取得出来ます。1という数値で他の値を参照する事は出来ますね。1以下は参照しない。 falseの場合は文字以外の数値データがマイナス値である必要があります。 MAXAで文字があれば0を返す。 画像の黄色セルがMAXAの結果です。

msMike
質問者

補足

仰っている事柄はすべて理解できているつもりです。 私が知りたいのは、MAXA関数の“売り”であるだろう「引数に文字列を指定」して、「なるほど、こういう使い方ができて便利になった!」と感動(感心)できる実例なのです。

関連するQ&A

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

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

  • Excelの関数

    MAX関数の答えに該当するセルの列番地を別の関数の引数の一部に使いたいのですが、どのようにすればいいですか? 例えばMAX(A1:G10)とあってその答えがC5だとします。 別のセルで=C10を入れるのですが、そのCはMAX関数の答えのCをひっぱってくるようにしたいのです。 宜しくお願いします。

  • 入力データのうち最も下にあるデータの行番号を得る関数

    データを縦方向へ下へ入力するのですが、 入力データのうち最も下にあるデータの行番号を得る関数を教えてください。(データは文字列です) 途中に空白セルもあります。 ちなみにデータが数値だと下記でよいのですが、 文字列の場合はどうすればよいのでしょうか。 また、数値と文字列が混ざった場合も教えてください。 MATCH(MAX(範囲)+1,範囲,1)

  • エクセル関数のMAXとMINの自動選択

    エクセル関数のMAXとMINの自動選択 経理での、損益頂上を算出したいのですが… 正も負もある2カ所のセルから文字の抽出なのですが… 基本的には、"A列"と"B列"の2カ所のセルから どっちが最大のプラスか、最大のマイナスなのかを "C列"に算出したいのです。 単純に、初めからプラス続きであれば MAXを使用すれば、問題はないのですが 初めから、マイナスが続いた場合、MAXですと -50と-10があっても、-10を選択します。 しかし、損益頂上なので マイナスの場合は、最大のマイナス値(マイナスの大きい方) を選択してもらいたいのです。 結果が、プラスの数値であればMAXを 結果が、マイナスの数値であればMINを 選択してくれる様な、数式を一つのセルで出来ますか? よろしくお願いします。

  • エクセル関数 IF関数・OR関数・ISNA関数

    いつもお世話になります。 IF()と OR()と ISNA()を組み合わせて行数を返したいのですが、 セルの値が 0 ではない もしくは #N/A なら行数を、そうでなければスペースを返したいのです。 A列に関数が入っており、数値か#N/Aが返されています。 B2セルに、 =IF(OR(A2<>0,ISNA(A2)),ROW(),"") と入力しB列最下行までオートフィルしたら、 A列が0の場合は行数が返りましたが、#N/Aの場合、、#N/Aと返され行数が返りません。 どこに問題があるか、わかる方教えてください。よろしくお願いします。

  • Excelにて列の一番下にある数値を表示する関数

    質問させていただきます。 エクセルの関数で「○列に入力されている数値の中で常に一番下にある数値を表示する」関数などありますでしょうか? 例えば B列に数値を入力していき、一番下?最終行?にある数値を自動で表示させたいです。下の例では「80」をとあるセルに表示させたいです。  A  B  C  D  ・・・・・ 1  100 2   99 3  150 4   80 5 6 ・ ・ =MAXという関数は見つけることはできたのですが・・・ =MAXの関数では、最大値しか表示できないので・・・ 色々と調べてみたのですが、調べ方が悪いのか探し出せませんでした。 お手数ですがよろしくお願いします。

  • セルに数式が入ってるかどうかを取得する関数は?

    C1には、=SUM(A1:B1) C2には、0 が入力されています。 実際、A1:B1の値は0なので、 C1もC2も0が表示されています。 D列で、ちゃんとC列にsum関数が入ってるか調べてたいのですが =COUNTIF(C1,"*sum*") をオートフィルしても、0が返ります。 C3に「sum」と言う文字列を入れて、=COUNTIF(C3,"*sum*")をしたら 1が返りました。 COUNTIF関数は文字列は認識しますが数式は認識しないようです。 このような場合、セルに数式が入ってるかを取得する方法はありますか?

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

    エクセルについて質問です。 「ある数値を入力したら常に一定の文字列を表示する」にはどの関数がいちばん便利でしょうか? 例:セルA1に101を入力→B1に「りんご」を表示 セルA2に201を入力→B2に「みかん」を表示 のように全部で50程度の数値&文字列の組み合わせ(コード表)を 判別したいと思っています。 よろしくお願いします。

  • 文字列のオートフィル

    Excelにあまり詳しくないのでおしえていただきたいのですが、 JANコード用の数値 ・≪458020326001≫とセルに入力するとなぜか、 ・≪4,5802E+11≫と表示されます。 しかし、対象のセルにカーソルを合わせると上の数式バーには ≪458020326001≫と表示されます。 連続したオートフィルに関しても全ての数値が ・≪4,5802E+11≫と表示されますが、 ・数式バーには連番で表示されます。 これでは分りづらいので、’を加え文字列表示にして セル表示上は解消されたのですが、 文字列のオートフィルがコピーになってしまいます。 セルの表示を通常通り表示させ、その数値のオートフィル(+1増)操作を教えてください。

  • このようなデータ処理はエクセルの関数組み合わせやオートフィルなどで可能でしょうか

    エクセルでのデータ処理に関する質問です。 ・処理する元データ ヨコ10列(A列からJ列まで)、タテ20個の数値データ ・行いたい処理 (1)それぞれの二つの列(たとえばA列とB列)の同じ行の数値データをそれぞれ三乗して足す。そのあと、足したものを合計する。 (2)すべての組み合わせについて計算する。(つまり、A列-A列、A列-B列、A列-C列、……、B列-A列、B列-B列、B列-C列、……、I列-J列、J列-J列の組み合わせ) (3)これら算出した数値を横一列(1×100)にする。 最終目標は(3)です。(1)は単純なオートフィルでなんとかなるのですが、(2)は、合計する範囲を毎回指定しなおさなくてはいけないために大変面倒です。 このような形式のデータがたくさんあるために、できるだけ手間を省きたいのですが、どうしたらいいかわかりません。オートフィルをうまく組み合わせればできるような気もしますが、どうもできません。10個計算したら次に移ってくれるようなオートフィルがあればいいのに、とか、不可能なことばかり考えてしまいます。うまくやれば、横向きに100個のセルをオートフィルで、つまんで引っ張るだけでできるような気もしますが、できません。 ご存知の方にとっては簡単なことかもしれませんが、うまくいかず、ムズムズしております。どうか、どなたかお教えいただけないでしょうか。

専門家に質問してみよう