Excel中的VBA样式范围选择

时间:2017-02-14 15:36:47

标签: excel vba excel-vba

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

如果无法做到这一点,是否有任何解决方法可以使用'匹配'函数来获取我想应用某些条件的列号?

我的功能看起来像

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

...如果我只能在电子表格中添加vba公式。

2 个答案:

答案 0 :(得分:0)

使用Offset,它作为工作表函数比在VBA中更丰富。

  

语法

     

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

     

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

     

参考要求。您想要作为参考的参考   偏移。参考必须指相邻细胞的细胞或范围;   否则,OFFSET返回#VALUE!错误值。

     

需要的行数。您想要的行数,向上或向下   左上角的单元格。使用5作为rows参数指定   参考中的左上角单元格是下面的五行   参考。行可以是正数(这意味着低于起点   引用)或否定(表示在起始参考之上)​​。

     

Cols Required。左侧或右侧的列数   您希望结果的左上角单元格引用。用5作为   cols参数指定引用中的左上角单元格   参考右侧的五列。 Cols可以是积极的(哪个   表示起始参考的右侧)或否定的(表示   在起始参考的左边。)

     

高度可选。您想要的高度,以行数表示   返回引用。高度必须是正数。

     

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

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

答案 1 :(得分:0)

您可以使用AddressIndirect的组合,如下所示:

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

相当于=SUM(A1:A3456)

ADRESS从样式Cells(i,j)转换为样式A1

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

SUM这是一个使用示例。

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