excel - 如何使用 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)))"
谢谢!
解决方案
您可以在没有 VBA 的情况下使用XLOOKUP
动态数组来执行此操作,假设您的 Excel 版本支持它们。在 Chart2!B2 中,输入=XLOOKUP(B1:D1&A2:A4,Chart1!A2:A5&Chart1!B2:B5,Chart1!C2:C5),"")
。结果将溢出到其他单元格。
推荐阅读
- json - 无法过滤字符串中的值
- c# - HTTP Azure 函数单元测试
- json - JSONB:如何查找所有在属性中具有名称为“2”或“23”的键的记录?
- python - 进程池执行程序使用 map 挂起
- sql-server - SQL Server 不刷新函数
- java - 我如何知道在知道其原始状态的对象列表中发生了什么变化
- three.js - 将多个纹理应用于相同的几何体
- google-bigquery - 在 Google BigQuery 中将数字格式化为没有逗号 (1,000,000 -> 1000000)
- tensorflow - tensorflow 训练后量化支持的操作列表
- python-3.x - 如何将多维列表转换为 numpy.array 以适应 cv2.fillConvexPoly