如何在excel中的sumproduct中动态选择单元格范围

时间:2016-06-08 13:52:59

标签: excel excel-vba vba

我正在尝试在将定期更新的工作表上动态使用Sumproduct。

我的动机是不要手动选择列(即不使用shift键和向下键来选择范围A2:A6,如附图中所示)

我希望公式“= SUMPRODUCT( - (A2:A6 =”TX“))”动态选取A2:A6,因为我在工作表中的数据说A是不变的。因此,当数据增长到A8时,它可以以某种方式动态获取,而不是手动使用键。

可以这样做吗?如果我的问题不明确,请告诉我。

Screenshot of my xls

此致 SM

2 个答案:

答案 0 :(得分:1)

是的,您可以动态定义范围。但是,鉴于你目前的公式,我认为没有理由不在这里切换到COUNTIF,即:

=COUNTIF(A:A,"TX")

使用整个列引用(此处为A:A)对性能没有任何影响的函数(SUMPRODUCT完全没有这种情况)。

此致

答案 1 :(得分:0)

Shitty推荐人,在这里。

您可以在工作表中首先插入新行吗?你可以把它放在任何你想要的地方,你甚至可以隐藏它,第一行对我来说很有用。

如果可以,只需在整个列上使用“count.values”函数,使用适当的减法将数量调整到正确的数据长度。例如。删除此辅助单元格值加上标题将为“= count.values(A:A)-2”。

稍后,在您的VBA上,您可以将此值检索到变量并将其连接到您的主函数。假设您在单元格A1(坐标1,1)

上创建了辅助

Dim auxLine As Integer auxLine = cells(1, 1).value whatever.formular1c1 = "=SUMPRODUCT(--(A2:A" & auxLine & ="TX"))"