excel - VB 脚本中需要的 Vlookup 函数辅助,对最近的工作表使用字符串
问题描述
我的 VB 脚本获取工作簿中最新工作表的工作表名称,将工作表名称存储为字符串,但是当我在 Vlookup 函数中引用此字符串时,Excel 无法找到工作表。工作表名称采用日期格式,因此最近的工作表是昨天的日期(澳大利亚日期格式)“08-06-2021”。宏运行,但是在运行 VLookup 函数时,它找不到工作表,有趣的是出现以下消息:
找不到“2021”。复制自:
并打开一个窗口找到电子表格,然后在电子表格中选择工作表。为了好玩,我将“08-06-2021”表重命名为“2021”,看看是否可行。这也不起作用,而且错误更不寻常,因为它现在正试图找到一个不存在的工作表名称。新消息是:
找不到“C1322021”。复制自:
如前所述,没有名称为 C1322021 的工作表。这是相关的VB代码:
Dim wsData1 As Worksheet
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim rWorkSheet As String
Dim i
i = ActiveWorkbook.Sheets.Count - 1
rWorkSheet = Worksheets(i).Name
Firstrow = .UsedRange.Cells(1).Row + 1
Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
For Lrow = Lastrow To Firstrow Step -1
With ActiveSheet.Cells(Lrow, "M")
sNotes = "=VLookup(C" & Lrow & rWorkSheet & "!C:N, 12, False)"
ActiveSheet.Cells(Lrow, "M") = sNotes
End With
感谢您对此的任何帮助,因为它让我很难过!
TIA,
迈克尔
解决方案
您需要一个额外的逗号,并且工作表名称需要用单引号括起来。
sNotes = "=VLookup(C" & Lrow & "," & "'" & rWorkSheet & "'" & "!C:N, 12, False)"
ActiveSheet.Cells(Lrow, "M").Formula = sNotes
也ActiveSheet.Cells(Lrow, "M")
默认为ActiveSheet.Cells(Lrow, "M").Value
但要编写您应该使用的公式.Formula
。即使没有这种方式它可能会工作,但对于每个阅读代码的人来说,它都会更加可靠和清晰。
推荐阅读
- python - 遍历numpy数组有效地测试多个元素
- ruby-on-rails - 设计无效的电子邮件或密码
- javascript - 从多个 div 中获取文本并放置在其他相应的 div 中
- node.js - Node Js服务器发送100响应
- amazon-web-services - 在没有负载均衡器的情况下将 AWS API Gateway 与 Fargate 服务连接
- java - Android Studio,没有主活动设置页面
- c# - 使用接口删除对 nuget 包的依赖?
- jenkins - 从詹金斯修改厨师角色属性
- java - “随时随地”构建 Java
- installation - windows程序会重新安装自己以在计算机上进行不同的登录