我正在处理从在线系统导出的工作表。
我已经在VBA内进行了重新格式化整张表格现在我留下了最后一部分让我难过。
B列填充了78个可能的序列号(长度为6位)。这些序列号与10个特定机器名称中的任何一个相关。把它想象成汽车的Vin数字。
我想在VBA中做的是填充A列,其机器名称基于B中列出的序列号。
机器名称未列在工作表的任何位置,我希望将该信息存储在VBA的公式中。
以下是我正在使用的数据示例。
我创建了一个Vlookup公式
=IFERROR(VLOOKUP(B:B, {"161252","Machine 1";*Additional serial numbers and machine names*},2,0),"")
当我录制宏并在A列中粘贴公式时,它可以工作,但在新导出上运行相同的宏时,只会在VBA中返回错误。
答案 0 :(得分:1)
您可以将图例存储在字典中。
在标准代码模块中放置此代码(正确填充):
Public Legend As Object
Public Initialized As Boolean
Sub InitializeLegend()
Initialized = True
Set Legend = CreateObject("Scripting.Dictionary")
Legend.Add 160743, "Machine 1"
Legend.Add 160804, "Machine 2"
'etc.
'etc.
Legend.Add 165284, "Machine 1"
End Sub
Function Machine(SerialNumber As Variant) As String
If Not Initialized Then InitializeLegend
Machine = Legend(SerialNumber)
End Function
然后Machine()
可以直接在电子表格中使用。
如果您是VBA的新手,很难夸大词典的用途。这是一个很好的介绍:https://excelmacromastery.com/vba-dictionary/