『INDIRECT関数で取得したセルの値を、範囲指定に使うことはできますか』(マナブ)
=(管理!A1:C1000)
この数式の"1000"の部分にINDIRECT関数で取得したセルの値(最終行を取得しています)を入れ込むにはどうしたらいいのでしょうか。
< 使用 Excel:Excel2019、使用 OS:Windows11 >
一例を示します。
B1セルに =COUNTA(管理!C:C) A1セルに =SUM(INDIRECT("管理!A1:C"&B1)) とすると、 管理シートのA1〜C列最終行までの合計がA1に求められます。 なお、C列には空白ではないセルがC1から連続している前提です。 (xyz) 2025/05/03(土) 20:48:52
INDIRECT関数はOffice Tanakaさんの動画がおすすめです。 ざっくり言うと「文字列を&で無理やり生成してその先を参照する」です https://youtu.be/31oTg-2QwTc?si=qLYYAMFp-uR8Z5a- (TKG) 2025/05/04(日) 02:17:05
私の手元では0になりません。数値が返ります。
・B1の数値はいくつになりますか? ・合計の対象となるセル範囲には数値が入っていますか? ・INDIRECTを使わずに単純にSUM式を書いたらいくつになりますか? 確認して3つともぞれぞれを回答して下さい。 (xyz) 2025/05/04(日) 13:14:03
=count(A1:A5) 2
=SUM(INDIRECT("A1:A" & count(A1:A5)))
(対象外) 2025/05/04(日) 14:59:23
# > ああ、こんな感じになってると0ですな # 確かにそうですね。 # # でも私は、 # > なお、C列には空白ではないセルがC1から連続している前提です。 # と書いています。私の書いたものとはまた別の話ですね。(その積りのコメントでしょうけど)
(1) そういう話じゃなくて、たぶん、こういうストーリーじゃないですか? =(管理!A1:C1000) と自シートのA1に書いて、3000セルを自動展開できると思っていたのでしょう。 その上で、1000を可変にしたいと。
しかし、Excel365と違って、Excel2019にはスピル機能はありません。 =INDIRECT("管理!A1:C" & D1) (D1セルに最終行を求める式。) などと、自シートのA1に書いたとしても、単に管理!A1が自シートのA1に表示されただけでしょう。 (そこは多分空白セルだったので、 0 になったのでしょう。)
どういうことかと言うと、 Excel2019では、展開されるべき想定範囲全体に式を書かないといけないので(配列数式にするとしても) 1000を可変にして、「自動で展開されるセルの範囲を可変にすること」はもともとできない話なのです。
(2) なお、INDIRECTに関する動画を見てもわからないということなら、 どんな説明をしても余り効果はないのかもしれません。 というよりも、INDIRECTとは別のところで道を間違えている可能性があります。
# 最初に、されたいことを確認すべきだったとも言えますが、 # ひとつの値を返す話と、こちらが勝手に当然の前提としていたことが # 違っていたのではないかと疑っています。
(xyz) 2025/05/05(月) 21:19:23
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.