dポイントプレゼントキャンペーン実施中!

エクセルの関数に関する質問です。
「=SUBTOTAL に =COUNTIF の機能を実装」
https://oshiete.goo.ne.jp/qa/5151705.html

この質問に対する回答のNo.8で

●セル範囲U3:U63について、
 「値が"完了"であり」かつ「フィルタで表示されている」セルの数。

 =SUMPRODUCT(SUBTOTAL(3,OFFSET(U2,ROW(INDIRECT("1:"&ROWS(U3:U63))),))*(U3:U63="完了"))

※U2を参照している部分は、対象範囲の直上セルを指定してください。

との回答があります。実際にこの通りしてみたところきちんと想定通りの結果となったのですが、なぜこのような結果となるのか教えて下さい。関数の解説をお願いします。

A 回答 (2件)

目的は、SUBTOTALを配列で返したい。


でも、おきまりのINDEX関数が使えず、断念して作業列案出しました。
それに、作業列のほうが融通が利くしね

で、解析してみた
=SUMPRODUCT(SUBTOTAL(3,OFFSET(U2,ROW(A3:U63)-2,))*(U3:U63="完了"))
でもOK
OFFSET関数を使えば、SUBTOTAL関数で配列が返せるんですね(*^_^*)

ならばとついでにもうひとつ
=SUMPRODUCT(SUBTOTAL(3,INDIRECT("U"&ROW(U3:U63)))*(U3:U63="完了"))
INDIRECT関数でも、配列が返ってきました

とりあえずの回答ですが、上記で全く意味不明なら「配列数式」で検索してみてください
    • good
    • 0

OFFSET関数の構文(syntax)は次のとおり。


OFFSET(基準, 行数, 列数, [高さ], [幅])

此処で「行(列)数)では、「基準」の「行(列)」からシフトした(離れた)位置を指定することになっているからです。
基準セルと同じ行(列)を参照させたい場合は「行数」「列数」は何れも 0 を指定

INDEX、V(H)LOOKUP 等は、指定範囲の左上隅のセルから右方向&下方向に伸びた範囲だけど、OFFSET は、指定セルの右方向&下方向だけでなく、左方向&上方向に離れた単一セルや複数セルから成る範囲を参照させられます。
だから、OFFSET関数の引数の「行数, 列数」の基準値は 0 で、それ以外は ±1、±2 等の正負数値を指定可能。
一法、INDEX、V(H)LOOKUP 等は、1 以上の正整数だけ。

分っかるかなぁ~?使っている内に慣れて来ますって!
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています