- ベストアンサー
エクセルで計算結果に基づいてセルを参照するには
C1:C100までの数字の平均を求めたくてセルに以下の式を入力しましたがエラーになってしまいました。 =average(address(1,3):address(100,3)) もちろんaverage(c1:c100)なら動くのですがこれでは駄目なのです。 上記の1,3,100といった数字の所は実際にはただの数字ではなく計算式で求めたものを使いたいのです。 VBAを使わずにやるにはどうすればよろしいでしょうか。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
具体的に「1や3や100」にどんな内容を与える用意があるのかに応じて,INDIRECT関数,OFFSET関数,INDEX関数などを工夫して。 A1に1, B1に100 C1に3 と用意をしているなら 一例として =AVERAGE(OFFSET($A$1,A1-1,C1-1,B1,1)) などのように計算できます。 それぞれの数字が実際に具体的に何を意味しているのか(たとえば100とは「終わりは100行目」なのか,それとも「所定開始行から100個」なのか等)に応じて,更に工夫が必要です。
その他の回答 (2)
- Nouble
- ベストアンサー率18% (330/1783)
演算記号なしに関数を並べてはその値をどうして 良いのやらExcelは途方に暮れてしまいます ところでaddress構文の戻り値は「文字列」です あと「:」も文字列であるべきものですが こういった場合は「"」でくくる必要があります でないとExcelは定義された演算子として処理しようとします 「:」はこの部位として相応しくない演算子(文字)ですので Excelは当然不服を申し立ててくるわけです お気を付けくださいね さて、 文字列を順に結合するには"&"演算子を使うか コンカチネート関数を使うかが一般的ですね ですので今回は =average(address(1,3)&":"&address(100,3)) とされてみては如何でしょうか 御役に立てたなら幸いです
お礼
お返事どうもありがとうございました。
=AVERAGE(INDIRECT(ADDRESS(1,3)&":"&ADDRESS(100,3)))
お礼
お返事どうもありがとうございました。
お礼
お返事どうもありがとうございました。 大変参考になりました。 VBAを使わないと無理だと思っていたのですがやはり出来るのですね。。 お礼が遅れてすいませんでした。 VBAで書くしか無いと思ってVBAで書き、それがあまりに遅かったので結局Cで書き直し、とりあえずの目的は達成したため、ここ(goo)に質問をしたこともすっかり忘れてしまっていました。