excel - 通过 Excel VBA 将 Xlookup 添加到范围
问题描述
我尝试通过 VBA 问题寻找 XLookup 的解决方案,但找不到。我有以下数据集:
在数据集中,如果C2:C6范围内的任何单元格为空白,我想=IF(ISBLANK(B2),"",XLOOKUP(B2,A:A,IF(ISBLANK(D:D),"",D:D)))
在这些单元格中使用此公式。B2的行号是可变的,具体取决于我们通过 VBA 放置此公式的行。
如果C2:C6范围内的任何单元格具有值,我想使用该值而不使用任何公式。如果有人删除了该值并且单元格变为空白,VBA 会将上述公式添加到该单元格。
目前在上面的屏幕截图中,C2:C6范围内的所有单元格都有上述公式。
我希望我是有道理的。如果这不可行,没关系。我总是可以使用辅助列。但我认为 VBA 对我的仪表板来说是一种更清洁的方式。
提前谢谢了。
解决方案
在工作表的类模块中,把这段代码
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rCell As Range
For Each rCell In Me.Range("C2:C6").Cells
If IsEmpty(rCell.Value) Then
Application.EnableEvents = False
rCell.FormulaR1C1 = "=IF(ISBLANK(RC[-1]),"""",xlookup(RC[-1],C[-2],IF(ISBLANK(C[1]),"""",C[1])))"
Application.EnableEvents = True
End If
Next rCell
End Sub
每当工作表上的某些内容发生变化时,这将运行。这不会减慢速度,因此您不想在 Change 事件中尝试做太多事情。但是,它不会在计算时触发。
推荐阅读
- python - 如何在 AllenNLP git repo 中编写对分类模型的配置文件?
- arduino - 将字节数组转换为字符串,然后将其与arduino中的字符串匹配
- assembly - 二元炸弹 [第 5 阶段]
- github - 搜索组织在 github 中创建的存储库
- google-cloud-platform - 如何使用 GitLab 存储库作为谷歌云负载均衡器的后端?
- javascript - CSS 和 JS 文件不会加载到 node.js 服务器上
- linux - 尝试通过 terraform 创建数字海滴时出错
- node.js - 在 openwrt 中安装 node-hid
- reactjs - 如何使用 webpack 加载 json 文件的文件夹?[single-spa] [react js]
- postgresql - 最近有人在 POSTGRESQL 13 中使用 SERAIL 类型而不是 SEQUENCE 吗?