• ベストアンサー

EXCEL関数使用で結果が理解できません

OS:WindowsXP EXCEL2000 以下の表が既に作成されています。 行 :O(英文字オーです) ------------------ 列 6 | 96 7 |216 8 |216 9 |185 10 |(空欄) 11 |(空欄) ここで、セルR6に以下の式が入力されています。 =INDIRECT("R"&MAX(IF(ISNUMBER(O6:O11),ROW(O6:O11)))&"C"&COLUMN(O6:O11),FALSE) セルR6には185が表示されているため、空欄でない最後の行の数値を 出力させる式のようなのですが、よく理解できません。 ISNUMBER(O6:O11)は全部数値だった場合にTrueになるのですか? ROW(O6:O11)は6でした。 IF(ISNUMBER(O6:O11),ROW(O6:O11))はFALSEです。 MAX(IF(ISNUMBER(O6:O11),ROW(O6:O11)))は0です。 COLUMN(O6:O11)は15です。 どなたか知恵をお貸しください。

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

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

数式がどのように展開されるかというと {=INDIRECT("R"&MAX(IF(ISNUMBER(O6:O11),ROW(O6:O11)))&"C"&COLUMN(O6:O11),FALSE)} =INDIRECT("R"&MAX(IF({True,True,True,True,False,False},{6,7,8,9,10,11}))&"C15"),FALSE) =INDIRECT("R"&MAX({6,7,8,9,0,0})&"C15"),FALSE) =INDIRECT("R"&9&"C15",FALSE) =INDIRECT("R9C15") =INDIRECT("O9") =185 配列数式を使わないで同じ解を得る数式として =INDIRECT("O"&MATCH(MAX(O6:O11)+1,O6:O11,0)+5) または =INDEX(O6:O11,MATCH(MAX(O6:O11)+1,O6:O11,0))

100202xg
質問者

お礼

ありがとうございます。 助かります。

その他の回答 (1)

  • f272
  • ベストアンサー率46% (8532/18263)
回答No.2

セルR6には185が表示されているというのなら、入力されているのは =INDIRECT("R"&MAX(IF(ISNUMBER(O6:O11),ROW(O6:O11)))&"C"&COLUMN(O6:O11),FALSE) ではなくて {=INDIRECT("R"&MAX(IF(ISNUMBER(O6:O11),ROW(O6:O11)))&"C"&COLUMN(O6:O11),FALSE)} でしょう。 これは配列数式と言われているものです。普通の数式とは違って複数の結果を返すことができます。 例えばISNUMBER(O6:O11)の部分を選択した状態でF9を押すと、その部分を評価した結果が見えます。(もとに戻るときはESCを押す) > ISNUMBER(O6:O11)は全部数値だった場合にTrueになるのですか? 違います。{TRUE;TRUE;TRUE;TRUE;FALSE;FALSE}というように6つの結果をすべて返すのです。 そして IF(ISNUMBER(O6:O11),ROW(O6:O11))は{6;7;8;9;FALSE;FALSE}となって、それのMAXは{9}になるのです。

100202xg
質問者

お礼

ありがとうございます。 助かります。

関連するQ&A

専門家に質問してみよう