2015-10-24 21 views
0

我在一張表中創建了一個屬性爲IDNAME的Excel工作表。如何在唯一ID的幫助下將圖紙1數據與圖紙2進行對照?

表1:

enter image description here

在另一片材,我有以隨機的方式的名字和他們必須被映射到與來自SHEET-1數據的參考它們的正確ID。

表2

enter image description here

突出顯示的值被手動輸入。有沒有可以自動填充數據的公式。

注意:上面的數據是樣本集中的數據和原始數據在第2頁中不同。第2個頁面中會有超過2列。

+0

嘗試INDEX/MATCH組合而不是VLOOKUP。爲什麼[vba]和[excel-vba]標籤? – pnuts

+0

@pnuts你能告訴我這個公式嗎? – JaVaRaS

+0

我懷疑你在我和你的評論之間的時間裏通過研究的方式表現了很多,但是它發生了,我寫了一個相對冗長的(對我來說)只有[小時前]的解釋(http://stackoverflow.com/a/33311631/1505120)。 – pnuts

回答

1

我在使用VBScript後得到了我的解決方案。

Private Sub GetID_Click() 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objDefaultID = ThisWorkbook.Sheets.Item("DefaultIDs") 
Set objGetID = ThisWorkbook.Sheets.Item("GetIDs") 
iDefaultRC = objDefaultID.UsedRange.Rows.Count 
iDefaultCC = objDefaultID.UsedRange.Columns.Count 
iGetRC = objGetID.UsedRange.Rows.Count 
iGetCC = objGetID.UsedRange.Columns.Count 
For i = 1 To iGetCC 
    If objGetID.Cells(1, i) = "Name" Then 
     iGetNameCol = i 
    ElseIf objGetID.Cells(1, i) = "ID" Then 
     iGetIDCol = i 
    End If 
Next 
For i = 1 To iDefaultCC 
    If objDefaultID.Cells(1, i) = "Name" Then 
     iDefNameCol = i 
    ElseIf objDefaultID.Cells(1, i) = "ID" Then 
     iDefIDCol = i 
    End If 
Next 
For i = 2 To iGetRC 
    For j = 2 To iDefaultRC 
     If objGetID.Cells(i, iGetNameCol) = objDefaultID.Cells(j, iDefNameCol) Then 
      objGetID.Cells(i, iGetIDCol) = objDefaultID.Cells(j, iDefIDCol) 
     End If 
    Next 
Next 

End Sub 
0

在這種情況下,我會做的只是切換一張表中的字段,以便它們的順序相同,然後執行vlookup。我會這樣做,因爲我有能力篡改標題訂單。不知道你是否也這麼做,但最好把所有事情都組織起來。

如果(ISNA(VLOOKUP(A2, 'Sheet 1中',A:B,2,FALSE)), 「」,VLOOKUP(A2, 'Sheet 1中',A:B,2,FALSE))

*在將sheet1中的頁眉順序切換爲第一列的名稱後,然後在第二列上輸入id

+0

明智。有時不要切換列順序是一個好主意,而是將左側的順序複製到右側。然後可以在名稱> ID或ID>名稱的兩個方向上使用一個表格陣列。 – pnuts

+0

也可以,但爲了避免每次都進行手動工作,您可以切換數據導出的方式。你從哪裏抽取數據? – Phil

+0

我有一個原始數據轉化爲excel,另一個排序必須從該數據完成。所以我發佈了這個問題。請爲我提供上述數據的公式。 @phil – JaVaRaS

0

我對此的解決方案是將兩張表放入MS Access並執行連接查詢。特別是如果桌子很大。這就是我多次完成它的原因,這就是爲什麼我總是獲得包含MS Access的Office版本的原因。花費幾分鐘,這是值得的努力。

2

這是用於在工作表之間查找的非常通用的公式。它從查找表的列A的列A中查找鍵,並返回與當前列名稱相同的列的值(標題在第7行)。查找鍵必須位於查找的左側值,或VLOOKUP不起作用:

=VLOOKUP($A:$A,'Lookup sheet'!$A:$ZZ,MATCH($7:$7,'Lookup sheet'!$7:$7,0),FALSE) 

或者如果該值(A:A)是對鍵的左側(在d:d)在查找表,您需要知道列的值:

=INDEX('Lookup sheet'!$A:$A,MATCH($E:$E,'Lookup sheet'!$D:$D,0))