2015-05-13 38 views
0

我有兩個Excel工作簿,其中第一個記錄多於第二個。在它們中都有多條記錄,但不是全部。我應該拿出那些在這兩本工作手冊中再次出現的。由於我從來沒有做過任何VBA,因此我使用C/C++編寫,這種方式並不準確。不管怎麼說,這裏是代碼:複製記錄,如果它在另一個工作簿中重新使用

Sub roznica() 

Dim sourceSheet1 As Worksheet 
Dim sourceSheet2 As Worksheet 
Dim destSheet As Worksheet 
Dim LastLineSS1 As Integer 
Dim LastLineSS2 As Integer 
Dim LastLineDS As Integer 
Dim i As Integer 
Dim j As Integer 

Set sourceSheet1 = Workbooks("EU-Szczecin.xlsm").Worksheets("Sheet1") 
Set sourceSheet2 = Workbooks("Lista.xlsm").Worksheets("Sheet1") 
Set destSheet = Workbooks("Szczecin-lista.xlsm").Worksheets("Sheet1") 

LastLineSS1 = sourceSheet1.Range("A" & Rows.Count).End(xlUp).Row 
LastLineSS2 = sourceSheet2.Range("A" & Rows.Count).End(xlUp).Row 
LastLineDS = destSheet.Range("A" & Rows.Count).End(xlUp).Row 

For i = 2 To LastLineSS1 
    For j = 2 To LastLineSS2 
     If sourceSheet1.Cells(i, 1).Value = sourceSheet2.Cells(j, 1).Value & sourceSheet1.Cells(i, 2).Value = sourceSheet2.Cells(j, 2).Value Then 
      destSheet.Cells(i, 1).Value = sourceSheet1.Cells(i, 1).Value 
      destSheet.Cells(i, 2).Value = sourceSheet1.Cells(i, 2).Value 

     End If 
    Next j 
Next i 

End Sub 

如果A和B值匹配,則宏應該把那些進入第三個工作簿。我檢查了是否值重新安全,他們這樣做邏輯上程序應該通過如果語句,但它不

+0

你需要VBA嗎?您可以將記錄從較小的數據複製到新的工作表中,然後使用Vlookup公式查找其他文件中存在的內容。之後,只需過濾'#N/A'並刪除它們? –

+0

我確實需要VBA,因爲我會在稍後擴展它。 – Lisek

+0

在這種情況下,在VBA中執行上述操作。無需循環:)該方法更快。記錄一個宏,看看你會得到什麼。 –

回答

1

在一個If-子句中,要獲得邏輯and您必須在VBA中使用AND。因此,與

If sourceSheet1.Cells(i, 1).Value = sourceSheet2.Cells(j, 1).Value AND sourceSheet1.Cells(i, 2).Value = sourceSheet2.Cells(j, 2).Value Then

更換

If sourceSheet1.Cells(i, 1).Value = sourceSheet2.Cells(j, 1).Value & sourceSheet1.Cells(i, 2).Value = sourceSheet2.Cells(j, 2).Value Then

但是也有一些高層次的語言不同的方式處理一些運營商。而不是!您使用NOT,而不是== null您使用Is Nothing,並且,正如您現在所經歷的,沒有分號。要延長線條,請使用_

&運算符代表字符串連接。

相關問題