
Excelの関数についてお伺いしたいと思います。現在、図のような表があり、A2, C2, E2を合計したいと思っております。条件として;
1) 列を頻繁に挿入するものの、常にA2, C2, E2を合計したい(セルがずれてしまっては困る)
2) B列やD列には他の数値が入るため(列が連続しない)、A2:E2ということができない
これを解決するためにA8に"A2,C2,E2"と入力し、A9に=SUM(INDIRECT(A8)と記入したのですが、#REF!というエラーになってしまいます。この場合、どのようにIndirect関数を使えばよいのでしょうか。またそもそもIndirect以外の有効な関数を使うべきなのでしょうか。教えていただきたく、よろしくお願い致します。

No.3ベストアンサー
- 回答日時:
> またそもそもIndirect以外の有効な関数を使うべきなのでしょうか。
そう思います。 INDIRECTは便利使いするような関数じゃありません。
> A8に"A2,C2,E2"と入力し
そもそも列がかわる度に こんなものを入力するのが無駄です。
=SUMIF(A1:E1,"Data*",A2:E2)
フラグになるものを有効利用した方が 間違いがないです。
ご回答ありがとうございました。SUMIFのような、自分が普段使っている関数で対応できるということに気付くことができたのは大きな収穫でした。自分にとってIndirectについて理解を深めるいい機会となりましたが、既知の関数を応用することも忘れないようにしたいと思います。
No.6
- 回答日時:
#5、cjです。
#5にてミスがありましたので訂正します。誤)
> 以上の理由から、INDEX関数はそれ以外で表現する方法の無い場合の
> 緊急避難的関数という位置付け、と言っても過言ではないです。
正)
以上の理由から、INDIRECT関数はそれ以外で表現する方法の無い場合の
緊急避難的関数という位置付け、と言っても過言ではないです。
以上、訂正をお願いします。
失礼しました。
訂正いただきありがとうございました。ミスについては文脈から推察できましたので大丈夫です。Indirect以外の便利な関数についても勉強してみます。
No.5
- 回答日時:
こんにちは。
お邪魔します。> この場合、どのようにIndirect関数を使えばよいのでしょうか。
=INDIRECT("A2")+INDIRECT("C2")+INDIRECT("E2")
SUM関数はとびぬけて優秀な関数ですが、四則演算で済むものを
わざわざ余分に関数を使う必要はありません。
一般論として関数の数だけ計算が遅くなります。
他方、数式の文字長によっても再計算の速さは変りますから、
SUM関数を用いた方が少ない文字数で数式を仕上げられる場合には、
積極的に関数を使います。
今回の課題では、関数を少なくまとめた方が有利です。
> またそもそもIndirect以外の有効な関数を使うべきなのでしょうか。
現行のExcelにはマルチスレッド計算というものがあって、
CPUのプロセッサの数だけ数式の演算を並行処理することで
数式の再計算の処理速度を高めることができるようになっています。
マルチスレッド計算に対応できない関数が幾つかありますが、
INDIRECT関数もその内のひとつに該当します。
また、INDIRECT関数はブックを開いただけで再計算を必要とする
揮発関数でもあります。
さらに言えば、単体での処理速度でいうと、
INDIRECT関数は、
同様の参照を返すINDEX関数やOFFSET関数に比べて
極端に遅いです。
以上の理由から、INDEX関数はそれ以外で表現する方法の無い場合の
緊急避難的関数という位置付け、と言っても過言ではないです。
私がお奨めするのは、
=INDEX(2:2,,1)+INDEX(2:2,,3)+INDEX(2:2,,5)
という数式になります。
数式が重くなる要素を極力排除しています。
おまけとして、行方向にフィルして各行の集計を求めることもできますから、
この点でも、INDIRECT関数より有利になります。
> これを解決するためにA8に"A2,C2,E2"と入力し
と書いてありますから、A8セルのような参照文字列ありき、のお話
ではないと受け止めていますが、
もし、どこかのセルに、複数領域のセル参照文字列を書き込み、
この文字列を元に計算させたい、ということでしたら、
VBAでユーザー定義関数を作成してシート上で活用する方法が、
結果的に一番簡単になるとは思いますが、
INDEX関数で目的を果たせるなら、その方がベターです。
何か不足があって、複数領域のセル参照文字列を元に計算したい場合は、
事情を詳らかに補足して貰えれば、ユーザー定義関数を考えてみます。
以上です。
丁寧なご解説、本当にありがとうございました。回答してくれる方々のレベルの高さに恐縮してしまいます。今回の件ではINDEXやOFFSET関数についても調べたのですが、まだまだ理解が追いついておりません。これを機会に勉強してみます。
No.4
- 回答日時:
こんにちは!
INDIRECT関数の方法はすでに出ていますので・・・
=SUMPRODUCT((2:2)*(MOD(COLUMN(2:2),2)=1)*(COLUMN(2:2)<=5))
といった方法もあります。
※ 今回の場合は奇数列というコトで可能ですが、
規則性がない場合は
他の方の方法になると思います。m(_ _)m
今回教えていただいた式を完全に理解するにはもう少し時間が掛かりそうです。ただsumproductはよく見かけるので、この機会に勉強してみたいと思います。ご回答いただきありがとうございました。
No.2
- 回答日時:
>この場合、どのようにIndirect関数を使えばよいのでしょうか。
INDIRECT関数の返り値を確認して応用しないと正しい結果を得られません。
SUM関数の引数は単独セルを幾つも指定できますが、INDIRECT関数に置き換えるときは要素毎にINDIRECT関数で指定しなければなりません。
=SUM(INDIRECT("A2"),INDIRECT("C2"),INDIRECT("E2")) のようにします。
1つのセル(A8)へ"A2,C2,E2"と入力して、それをINDIRECT関数の引数に与える場合は"A2"と"C2"と"E2"に分けてINDIRECT関数の引数にしなければなりません。
>またそもそもIndirect以外の有効な関数を使うべきなのでしょうか。
Excelの関数で引数をセルの値にするときはその数式を他のセルにコピーするか否かで絶対アドレスか相対アドレスにするかを考える必要があります。
また、引数の対象セルは行および列の挿入や削除によって当初の指定から変化することも想定しなければなりません。
例題のSUM(A2,C2,E2)はA列とC列の間に1列挿入されたときSUM(A2,D2,F2)に変化することを確認してください。
従って、INDIRECT関数を使うと逆効果になると思われます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) AVERAGE関数とINDIRECT関数を使ってのオートフィル 3 2023/01/12 12:00
- Excel(エクセル) Excelでなぜこのような式をつかっているのでしょうか、行に1,2,3と連番を振るだけなのに 5 2023/04/08 20:00
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Excel(エクセル) Excelで行削除をすると… 1 2023/07/26 11:57
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Excel(エクセル) エクセル 列の一番最後に入力されているセルを参照 3 2022/07/06 22:31
- Excel(エクセル) エクセルのINDEXについて 2 2022/04/17 21:41
- Excel(エクセル) エクセルでのINDIRECT関数の使い方について 3 2022/08/22 07:38
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
このQ&Aを見た人はこんなQ&Aも見ています
-
「それ、メッセージ花火でわざわざ伝えること?」
「それ、メッセージ花火でわざわざ伝えること?」というメッセージを教えて下さい
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
人生で一番思い出に残ってる靴
皆さんの人生で一番思い入れのある靴の話を伺ってみたいです。
-
はじめての旅行はどこに行きましたか?
記憶の中で1番昔の旅行先とエピソードを教えてください。
-
人生で一番お金がなかったとき
人生で一番お金がなかったときって、どんなときでしたか?
-
INDIRECT関数の代替方法は?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの入力規則で2列表示したい
-
複数の文字列のいずれかが含ま...
-
SUMに含まれる範囲から特定のセ...
-
数式が入ったセルを含めて、数...
-
Excel上でのデータ数字が連番で...
-
エクセルでセルの値分の個数の...
-
「エクセル」特定の行(セル)...
-
スペースとスペースの間の文字...
-
列の数字に100をかけたい
-
Excelでの検索結果を含む行だけ...
-
エクセルで表示されている数字...
-
エクセル セル内の文字数を超え...
-
エクセル:横長の表を改行して...
-
Excelのセル内文字の並び替えに...
-
エクセルで公平にチーム分けす...
-
エクセルのsumifでかけ算してか...
-
エクセルで、毎日の走行距離(...
-
エクセルで曜日に応じた文字を...
-
別のセルに値が入力されたら、...
-
EXCELの特定セルを編集不可・コ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの入力規則で2列表示したい
-
複数の文字列のいずれかが含ま...
-
SUMに含まれる範囲から特定のセ...
-
数式が入ったセルを含めて、数...
-
Excel上でのデータ数字が連番で...
-
エクセルでセルの値分の個数の...
-
スペースとスペースの間の文字...
-
エクセル:横長の表を改行して...
-
エクセルで表示されている数字...
-
Excelでの検索結果を含む行だけ...
-
「エクセル」特定の行(セル)...
-
列の数字に100をかけたい
-
別のセルに値が入力されたら、...
-
エクセル セル内の文字数を超え...
-
エクセルで、毎日の走行距離(...
-
Excelのセル内文字の並び替えに...
-
エクセルで曜日に応じた文字を...
-
エクセルのsumifでかけ算してか...
-
HYPERLINKとADDRESSとMATCHの組...
-
エクセルにデータを入力すると...
おすすめ情報