[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『式の意味を教えていただけませんでしょうか?』(ばなな)
1 関数
2 6
3 4
4 7
5 2
6 3
7
8 2
9 6
解答の式:SUM(OFFSET(A2,,,(1,INDEX((A2:A1000="")*1,0),0)))とあるのですが
INDEX の式 INDEX(A2:A1000="")*1,0) のところ(範囲?)がどうしてもわかりません式の意味を教えていただけませんでしょうか? ](ばなな)
式は正確には、
=SUM(OFFSET(A2,,,MATCH(1,INDEX((A2:A1000="")*1,0),0)))
MATCH関数の検索範囲としてINDEX((A2:A1000="")*1,0)が与えられています。
1000行もあると検証しにくいので、範囲をA6ぐらいにしてみます。
=SUM(OFFSET(A2,,,MATCH(1,INDEX((A2:A6="")*1,0),0)))
INDEX関数は通常検索関数で、配列から特定の値を返しますが、
使い方によっては配列を計算結果として返すことも出来ます。
今回の使い方がそのようになっています。
A2:A6=""は {FALSE;FALSE;TRUE;FALSE;FALSE} のような論理値の配列を返します。
(A2:A6="")*1とすると、{0;0;1;0;0} とTRUEは1に、FALSEは0に変換された配列になります。
INDEX関数はこのような配列から「何列目の何行目の値を取り出しなさい」ということを
するのが普通ですが、「0行目を取り出しなさい」と指定してありますね?
すると、INDEX関数の返り値は「配列」になります。
[INDEX関数のヘルプより]
行番号または列番号を 0 に設定すると、それぞれ列全体または行全体の値の配列が返されます。
その結果が、{0;0;1;0;0} という配列だとすると、
MATCH(1,INDEX((A2:A6="")*1,0),0) の部分は
MATCH(1,{0;0;1;0;0},0) という式と同じになります。
{0;0;1;0;0}という配列から、1を完全一致で検索してその位置を求めなさい、という意味です。
(みやほりん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.