首页 > 解决方案 > 如何使用 excel VBA/宏在网格中填充数组公式(使用多个条件)?

问题描述

我正在尝试使用 VBA 编写一个宏,该宏将使用多个标准将数据格式化为网格。下面是原始数据的示例(由于某种原因,堆栈溢出不允许我上传图片):

图 1(原始数据)

国家 颜色 平衡
美国 红色的 25
美国 白色的 50
英国 蓝色的 75
日本 红色的 100

现在这是我想要在其中显示数据的网格。这是每天在新工作表中重复的内容,并且数据可能会发生变化,因此需要一个公式。

图2(我想要的)

美国 英国 日本
红色的 25 100
白色的 50
蓝色的 75

基本上我只需要图表 1 中的余额数字出现在使用国家和颜色作为标准的网格中,如图 2 所示。到目前为止,我已经尝试使用索引匹配数组公式,使用“颜色”和“国家”作为标准,但它不工作。这是我目前拥有的 VBA 代码(balRange 指的是图表 1,公式数组连接到图表 2):

Dim balRange As String
balRange = "A2:C5"

Range(balRange).Select
Selection.FormulaArray = "=(INDEX('Chart 1'!R2C3:R5C3,MATCH(1,(R1C = 'Chart 1'!R2C1:R5C1)*(RC1 = 'Chart 1'!R2C2:R5C2),0)))"

谢谢!

标签: excelvba

解决方案


您可以在没有 VBA 的情况下使用XLOOKUP动态数组来执行此操作,假设您的 Excel 版本支持它们。在 Chart2!B2 中,输入=XLOOKUP(B1:D1&A2:A4,Chart1!A2:A5&Chart1!B2:B5,Chart1!C2:C5),"")。结果将溢出到其他单元格。

更多关于 XLOOKUP 更多关于动态数组


推荐阅读