在电子表格公式中,(即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公式。
答案 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)
您可以使用Address
和Indirect
的组合,如下所示:
=SUM(INDIRECT(ADDRESS(1,1) & ":" & ADDRESS(3456,1)))
相当于=SUM(A1:A3456)
ADRESS
从样式Cells(i,j)
转换为样式A1
。
INDIRECT
用于将结果字符串解释为范围地址。
SUM
这是一个使用示例。
嗯,它有点难看,但是如果你想这样做偶尔并且不想完全切换到RC-style
,它可能是最简单的方法。