2017-04-04 120 views
-3

我正在从一个在线系统导出的表单上工作。使用VBA填充基于相邻单元格信息的单元格

我已经在VBA中制定了重新格式化整个表格,现在我剩下的最后一部分已经让我难堪了。

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

  2. 我想在VBA做的就是填充列A与基于关闭机器名的机器名是不是在纸张上的任何地方列出B.

  3. 列出的序列号,我希望能将该信息存储在VBA中的公式中。

下面是我正在使用的数据的一个示例。

Example Data

我创建了一个VLOOKUP公式

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

,当我录制宏和粘贴在A列中它的工作原理公式,但运行在一个新的出口相同的宏仅在返回错误时, VBA。

+4

*需要VBA帮助*很明显,因为您在这里发布并使用了VBA标签。 *搜索天数*是一种无意义的声明,不属于您的标题。如果你删除它们,你的标题是空白的。首先,请编辑您的问题以删除您发布的无用噪音,并将其替换为描述实际问题或问题的内容 - 它应该足够清楚,可供有人在搜索结果中看到它的人使用。其次,这是一个*问题和答案*网站。请注意* question *是单数,而不是复数。这不是*我的问题清单*网站。 –

+0

@KenWhite,你在滚动;) – CallumDA

+2

第三,这不是一个代码写入服务。说*我什么也没做,只是我搜索了几天*就像说*诚实,老师!我做了功课,但我的狗吃了它。请相信我!*。见[问]。然后做一个谷歌搜索* VLookup *。 –

回答

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/

+0

谢谢先生,我正在处理你发布的所有信息并阅读你提供的链接,我会让你知道我从中学到了什么以及它是如何工作的 –

+0

我以为我的头在哈哈之前就受到伤害了,我已经能够创建字典了,但我并不完全确定你为什么使用“传奇”,但我相信这不是我需要花费很多时间在这个现在我正在尝试如何引用这个字典来自动填充列A和基于列B中键的机器名称。 –

+0

@SigSauer在你的问题中,你称它为“Legend”,所以我选择它作为变量名称,显然可以选择som如果你想要的话,另一个词。您需要小心数据的类型与键的类型相匹配。如果这是一个问题,你可以尝试用'Machine = Legend(Val(SerialNumber))'替换'Machine = Legend(SerialNumber)'行' –

相关问题