- ベストアンサー
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です。 どなたか知恵をお貸しください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
数式がどのように展開されるかというと {=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))
その他の回答 (1)
- f272
- ベストアンサー率46% (8532/18263)
セル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}になるのです。
お礼
ありがとうございます。 助かります。
お礼
ありがとうございます。 助かります。