使用VBA基于相邻单元格中的信息填充单元格

时间:2017-04-04 22:11:40

标签: excel vba excel-vba

我正在处理从在线系统导出的工作表。

我已经在VBA内进行了重新格式化整张表格现在我留下了最后一部分让我难过。

  1. B列填充了78个可能的序列号(长度为6位)。这些序列号与10个特定机器名称中的任何一个相关。把它想象成汽车的Vin数字。

  2. 我想在VBA中做的是填充A列,其机器名称基于B中列出的序列号。

  3. 机器名称未列在工作表的任何位置,我希望将该信息存储在VBA的公式中。

  4. 以下是我正在使用的数据示例。

    Example Data

    我创建了一个Vlookup公式

    =IFERROR(VLOOKUP(B:B, {"161252","Machine 1";*Additional serial numbers and machine names*},2,0),"") 
    

    当我录制宏并在A列中粘贴公式时,它可以工作,但在新导出上运行相同的宏时,只会在VBA中返回错误。

1 个答案:

答案 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/