web-dev-qa-db-ja.com

可変Excel範囲を指定するにはどうすればよいですか?

行/列の変数に基づいて、Excelで範囲を動的に指定できるようにしたいと思います。

次のような内容のファイルがあるとします。

 A B C D E 
 1 10 11 12 13 14 
 2 51 52 53 54 55 

行1、列2〜4(つまり、11 + 12 + 13)の項目を合計したい場合、どのように指定しますか?

手作業で行う場合は、次のように入力します。

=SUM(B1:D1)

...しかし、必要な行(1)と列番号(2-4)だけを知って、その場でその範囲定義をプログラムで生成するにはどうすればよいですか?

=SUM(????)

よろしくお願いします!

(私はMac用のMicrosoft Excel 2011を使用しているので、Excel VBA /マクロベースのソリューションは機能しません。)

9
Anirvan

私にも同じニーズがありました。OFFSET関数を使用するとそれが可能になるようです。

したがって、上記の場合:

=SUM(OFFSET(A1,0,1,1,3))

それを分解するには:

OFFSET(reference cell,
       row offset from ref cell to start the range,
       col offset to start the range, height of range you want,
       width of range you want)

必要に応じてオフセットをゼロにするか、+参照するには、-参照する

11
user2347836

何が欲しいかわからない。
これですか?

dim parent_range as range
dim child_range as range

set parent_range = me.range("a1:e2")
set child_range = range(parent_range.rows(1).cells(2), parent_range.rows(1).cells(4))

msgbox "=sum(" & child_range.address(false, false, xla1) & ")"

それとも式として欲しかったのですか?

=SUM(INDEX($A$1:$E$2,1,2):INDEX($A$1:$E$2,1,4))
2
GSerg

「既知の」行番号と列番号がどのように参照されているかによって異なります
たとえば、シートのセルの値の場合:

     A          B
 9   Row        1
10   ColStart   1
11   ColEnd     4

INDRECT関数を使用して、範囲参照を作成します

=SUM(INDIRECT("R"&B9&"C"&B10&":R"&B9&"C"&B11,FALSE))
2
chris neilsen