excel - VBA 索引匹配函数
问题描述
我是 vba 新手,完全迷失在 vba 中编写上述功能。实际上,我想做与通常的 excel 公式相同的事情。
更新: 根据 Scott 的回答,我调整了我的代码。现在我有一个类型不匹配错误。根据定义,Mname 的类型是一个字符串。查找范围 (B18:B38) 中的值是(不排他的)整数。我应该告诉 Excel 将它们作为字符串吗?如果是,如何?
摘要: 我有一个范围(D18:D38),我想根据字符串变量(Mname)和另一个范围(B18:B38)之间的匹配确定的行号从中选择一个值。字符串变量由文件夹中的文件名确定。
我的问题是我收到错误消息:'无法获取工作表函数类的匹配属性'
谢谢你的帮助!
Sub Test()
Application.ScreenUpdating = False
Dim Mname As String
Set WSCockpit = ThisWorkbook.ActiveSheet
Dim strFileName As String
Dim strFolder As String: strFolder = WSCockpit.Range("D9").Value
Dim strFileSpec As String: strFileSpec = strFolder & "*.xls*"
strFileName = Dir(strFileSpec)
Do While Len(strFileName) > 0
Dim strFilePath As String: strFilePath = strFolder & strFileName
Mname = Mid(strFileName, 13, Len(strFileName) - 17)
Dim rw As Long
rw = Application.Match(Mname, WSCockpit.Range("B18:B38"), 0)
Dim VarImp As Boolean
VarImp = Application.WorksheetFunction.Index(WSCockpit.Range("D18:D38"), rw)
'some other task'
Loop
Application.DisplayAlerts = True
End Sub
备份: 对不起,代码很乱。我对编写 vba 的一般规则一无所知。如前所述,我的目标是让查找运行。查找的值将是“TRUE”或“FALSE”。之后我将使用它来确定文件夹中找到的文件是否需要导入。如果您对我的编码或我想要执行的任务有其他建议,我会很高兴听到。
解决方案
将其分解为多个步骤,并确保您希望在查找中找到的数据确实存在。意思是,在运行时检查 Mname 的值(通过调试代码)并验证您是否可以手动找到它。
最后,Application.Match
改为使用。
Dim rw as Long
rw = Application.Match(Mname, WSCockpit.Range("B18:B38"),0)
Dim import as Boolean
import = Application.WorksheetFunction.Index(WSCockpit.Range("D18:D38"),rw)
推荐阅读
- reactjs - 最简单的 React Router 用例不起作用 - 路由不会渲染
- r - 将 R 数据帧转换为命名列表时如何省略“NA”
- open-policy-agent - 使用 opa eval 命令评估文件夹中的多个文件
- python - Ansible:使用新的随机字符串将元素添加到字典列表中
- r - 使用 pivot_wider 得到真或假
- sqlite - sqlite - 使用外键链接两个数据库表
- r - 按列中的条件总结 - R 中的数据框
- rest - 特定子数据类别的 REST API 端点命名
- django - Django REST API - 具有不同读写格式的序列化程序?
- react-native - 防止用户在 android 上访问“Auth Loading Screen”