- ベストアンサー
ExcelでのINDIRECT関数の使い方について
cj_moverの回答
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは。お邪魔します。 > この場合、どのように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関数で目的を果たせるなら、その方がベターです。 何か不足があって、複数領域のセル参照文字列を元に計算したい場合は、 事情を詳らかに補足して貰えれば、ユーザー定義関数を考えてみます。 以上です。
関連するQ&A
- Excelの関数について
Excelの関数について 今表を作っていて 1日数回データを取って それを1ヶ月ぐらい続ける予定で その結果をExcelの表に入力したいと思っています。 A列に現在値 B列に増加分 C列にA+Bの値を入れたいと思っています。 なので、C列には、C1には=SUM(A1,B1)として セルの右下にポインタを合わせて十字で下まで引っ張って関数をコピーしています。 で、そうするとC列に0が表示されてしまい それはなんとか、ツール→オプション→表示→ゼロ値のチェックを外して解決したのですが C列の合計値は次の行のAのセルに表示したくて 例えば C3の数値はそのままA4に C7の数値はそのままA8にといった感じで で、A2のセルに=C1とかA5のセルに=C4とかしたのですが いちいち関数を埋め込むのは面倒くさいので 下のほうまで関数をコピーしたところ 関数が埋め込まれているので A列とB列にしたの方まで同じ数字が表示されています。 これって消すことはできないのでしょうか? 現在は 最初のA1セルだけに数値を入れたのですが関数を埋め込んだことにより A列とB列すべてにA1セルの数値が表示されています。 まだデータを取っていないのでB列は空白です。 ただ、できれば、下の方に数値が表示されないようにしたいんです。 言葉で説明すると A列とB列に数値が入力されない限り、C列の合計値は表示されない設定にできれば 私の言っているような状況になると思うのですが、そういう事はできないのでしょうか… 教えてください。
- ベストアンサー
- その他MS Office製品
- Excelの関数について
Excelの関数について 私のExcelは2003です。 表を作っていて A列とB列に数値を入れてその合計をC列に自動的に出すようにするのは C列に「=SUM(A3,B3)」と入れますよね? 1日数回のデータを取り A列とB列に数値を入力し 1ヶ月ほどデータを取り続けるので その分C列に入れた関数を下へセルの右下にポインタを合わせて十字の記号を出して 下へ関数を入れたのですが その場合C列には0と表示されますよね? これは防げないものなのですか? 後、そのC列に表示された合計値を 次の行のA列に表示させたいのですが そういう関数はありますか? C列の合計値に次の数を足して、合計値をどんどん増やしていくので 例えばC1の値をそのままA2に表示。 C2の値をそのままA3に表示 C5の値をそのままA6に表示としたいのですが 関数があったら教えてほしいです。
- ベストアンサー
- その他MS Office製品
- エクセルでの関数
エクセルで下記を行いたいのですが、関数でどのようにすれば良いでしょうか。(関数で困難であればVBAでも良いです) A列で同じ名称の分に対して、それと同じ行のD列とE列の数値の合計を それぞれのセルに表したいのですがどのようにすれば良いでしょうか? 例えばA6に北海道のD列E列合計106.5、A7に岩手のD列E列合計16.5、 A8に山梨のD列E列合計29を表したいです。 A B C D E 1 北海道 文章A 数値1 2 24.5 2 北海道 文章B 数値2 4 50 3 北海道 文章C 数値3 6 20 4 岩手 文章D 数値4 11.5 5 5 山梨 文章E 数値5 25 4
- ベストアンサー
- オフィス系ソフト
- Excelでの関数vlookupの応用
関数については、ほとんど初心者の者です。 vlookup関数では、縦型の表の中から必要なデータを取り出すことができますが、それを応用して取り出した数値の合計を出すことはできますか? もし、vlookup関数以外の関数で、そのようなことをできる関数を知っている方、教えてください。お願いします。 (例:セルA列に科目、B列に科目コード、C列に金額の表で、 D列セルに科目コードを打ち込むと、E列にはB列から 抽出した科目コードの金額(C列)を合計して反映)
- ベストアンサー
- オフィス系ソフト
- エクセル関数について
エクセル関数について質問です。 簡単に説明すると特定のセルに特定の数値を入力するとその行の別のセルの数値を別のセルに表示させたい。 たとえば A B C 1 100 2 200 1 100 3 300 1 300 4 400 5 合計 400 上記の様になっていた場合 A列は定数で固定です。B列のセルに1と入力(1でなくてもよい)した行のA列の数値を Cに表示したいのですが、 C列にどの様な関数を使ったらいいんでしょうか?宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- エクセル関数について
エクセルの関数について質問です。 例えば、 C1セルには、数値データが入っています。 A2~A10セルに日付データ。 B2~B10セルに数値データが入っている表があります。 B11セルの値に、(C1データ)-(A列の最新日付セルと同行のB列データ)を表示させたい場合、 どのような関数を作成すればよいですか。 宜しくお願いします。
- ベストアンサー
- Windows系OS
- エクセルについて質問です。
(1)シート1に表を作成して、A列からD列に入力した数値をE列にSUM関数で足し算して自動的に入力できるようにします。 次に、シート2に表をつくります。その表のA列に、シート1の表のE列の数値だけをコーピーできますか。 (2)また、上記のシート1の表のE列(SUM関数が入っている列)に数値が入ると、自動的に上記のシート2の表のA列に同じ数値が入るようにできますか。 ご存知の方がおられましたら、ご教授お願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルCOUNT関数について
こんばんは、COUNT関数についてお伺いします。 たとえばA列に関数(SUMなど)の数式が入っています。そのA列を範囲指定してCOUNT関数をしたところ、数値が現れているセルのみをカウントしたいのですが、空白の数式が入っているセルもカウントしてしまいます。数値を示しているセルのみをカウントしたいのですが、うまく行きません。 どうすれば解決できますか、教えていただけないでしょうか。
- ベストアンサー
- オフィス系ソフト
- エクセル2010のSUMIFS関数について
A列に日付、C列に文字列、E列に数値があります。 仮に、日付は2013年4月だけ、文字列は”事務” だけに条件を絞ってE列の数値を合計する場合、エクセル2000では =SUMPRODUCT((C$1:C$1000="事務")*(TEXT(A$1:A$1000,"yyyymm")="201304")*E$1:E$1000) でうまくいきました。 こんどエクセルが2010になったので、あたらしくできたSUMIFS関数でやってみようと思い =SUMIFS(E:E,C:C, ”事務”,TEXT(A:A,"yyyymm"),”201304”) としましたが「数式が正しくありません」とエラーになってしまいます。 SUMIFS関数だと列のセル範囲を指定しなくていいので使いたいのですが・・・。 F列を作業列とし、ここにA列の日付をyyyymm形式の文字列とすれば =SUMIFS(E:E,C:C,"事務 ",F:F,"201304") で出来ますが、ほかにいい方法はないでしょうか?
- ベストアンサー
- その他MS Office製品
お礼
丁寧なご解説、本当にありがとうございました。回答してくれる方々のレベルの高さに恐縮してしまいます。今回の件ではINDEXやOFFSET関数についても調べたのですが、まだまだ理解が追いついておりません。これを機会に勉強してみます。