質問: 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です。 どなたか知恵をお貸しください。
回答: セル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}になるのです。