首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用VBA中的和ifs函数在excel中填充二维范围

利用VBA中的和ifs函数在excel中填充二维范围
EN

Stack Overflow用户
提问于 2015-07-05 15:12:08
回答 1查看 164关注 0票数 1

基于存储和地点的利润表中的数据。希望有一个矩阵,位置在一列中,存储在一行。对于每个位置和存储,它将返回一个值,即该位置中所有商店(可能在特定位置有多个商店)的利润之和。

这是excel函数:

=SUMIFS(Sheet2!$C$2:$C$6,Sheet2!$A$2:$A$6,Sheet1!$A5,Sheet2!$B$2:$B$6,Sheet1!B!4美元)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-05 15:37:46

试一试,

代码语言:javascript
复制
with sheets("Sheet1")
    with .range("B5:Z99")
        .formula = "=SUMIFS(Sheet2!$C$2:$C$6, Sheet2!$A$2:$A$6, Sheet1!$A5, Sheet2!$B$2:$B$6, Sheet1!B$4)"
        .value = .value
    end with 
end with

本质上,将公式写入单元格块,然后将公式的结果还原为它们的值。

动态最后一行的编辑:

代码语言:javascript
复制
dim lr as long
lr = Sheets("Sheet2").cells(rows.count, 3).end(xlup).row

那么,公式分配将是:

代码语言:javascript
复制
.formula = "=SUMIFS(Sheet2!$C$2:$C$" & lr & ", Sheet2!$A$2:$A$" & lr & ", Sheet1!$A5, Sheet2!$B$2:$B$" & lr & ", Sheet1!B$4)"

编辑:命名范围:

如果使用命名范围来定义所检查数据的范围,则使用相同的匹配公式定义不同列的限制。

在上面的SUMIFS中,您可以为Sheet2 2的A、B和C列使用命名范围。让我们将命名范围称为ws2colA、ws2colB和ws2colC。我们知道我们正在对列C进行求和,所以使用C列中最后一个数字的行来定义每个列的范围。

代码语言:javascript
复制
ws2colA - Applies to:
=Sheet2!$A$2:INDEX(Sheet2!$A:$A, MATCH(1e99, Sheet2!$C:$C))

ws2colB - Applies to:
=Sheet2!$B$2:INDEX(Sheet2!$B:$B, MATCH(1e99, Sheet2!$C:$C))

ws2colC - Applies to:
=Sheet2!$C$2:INDEX(Sheet2!$C:$C, MATCH(1e99, Sheet2!$C:$C))

公式分配如下:

代码语言:javascript
复制
.formula = "=SUMIFS(ws2colC, ws2colA, Sheet1!$A5, ws2colB, Sheet1!B$4)"

使用相同的公式来定义每个命名范围列的范围将防止SUMIFS中的范围引用不匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31231806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档