2017-04-04 191 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)'行' –

相關問題