2017-02-14 222 views
0

在电子表格公式中(即SumIfs),我希望能够使用分隔符而不是A1:A3456样式选择列范围,就像我在VBA [Range("A1:A3456")~Range(Cells(1,1),Cells(3456,1))]中所做的那样。Excel中的VBA样式范围选择

如果这是不可能的,是否有任何解决方法使用“匹配”功能的结果来获取我想要应用某些标准的列号?

我的功能看起来像

=Sumifs(A2:A10;*{range(cells(1,match(Z5;A1:T1)), cell(10,match(Z5;A1:T1))}*,"="&1) 

...如果只有我可以添加电子表格内VBA公式。

+0

选中此:https://support.office.com/zh-cn/article/OFFSET-function-c8de19ae-dd79-4b9b-a14e-b4d906d11b66 – Vityata

+2

您可以使用RC格式作为第一个想到的事情。 R1C1是A1,你也可以用这个偏移,例如在单元格B2中写入“= RC [-1]”时,它将引用同一行和列中的单元格减1或A1。 – Cyril

+1

探索INDEX功能为MATCH提供的选项 – jkpieterse

回答

0

您可以使用AddressIndirect,像这样的组合:

=SUM(INDIRECT(ADDRESS(1,1) & ":" & ADDRESS(3456,1))) 

这相当于=SUM(A1:A3456)

ADRESS将来自风格Cells(i,j)款式A1

INDIRECT用于将结果字符串解释为范围地址。

SUM这里是一个用法的例子。

那么这是一个有点难看,但如果你想这样做偶尔并不想完全切换到RC-style,它可能是最简单的方法。

0

使用偏移量,与工作表函数相比,偏移量大于VBA中的偏移量。

语法

OFFSET(参考,行,COLS,[高度],[宽度])

OFFSET函数的语法具有以下参数:

参考必需。您想要以此为基准的参考文献 偏移量。引用必须指代一个单元格或相邻单元格的范围; 否则,OFFSET返回#VALUE!错误值。

需要行。您希望左上角的单元格引用的行数(向上或向下)。使用5作为行参数指定 参考中的左上角单元格是低于 参考的五行。行可以是正值(表示低于参考起始 )或负值(表示高于起始参考值)。

Cols必需。左边或右边的列数, 您希望结果的左上方单元格引用。使用5作为 cols参数指定引用右上角的单元格在参考右侧的5列中为 。 Cols可以是正数(其中 表示起始引用的右侧)或负数(这意味着 位于起始引用的左侧)。

高度可选。您希望 返回的引用的高度(以行数为单位)为。身高必须是正数。

宽度可选。您希望 返回的引用的宽度(以列数为单位)为。宽度必须是正数。

https://support.office.com/en-us/article/OFFSET-function-c8de19ae-dd79-4b9b-a14e-b4d906d11b66