我有三個工作簿。比較兩個工作簿,刪除匹配的行
一個工作簿是我每個月添加到我需要從第二個工作簿中刪除的東西的列表。我每個月都會收到第二本工作簿。我收到的第二份工作簿總是包含多餘的條目(數量每個月都在增長),並且不會很快修復。沒有第二個工作簿無用的通用過濾器,所以我需要非常具體並且有一個愚蠢的清理清單。
我的第三個工作簿是我運行所有工作簿清理宏的地方。
目標是比較第一個工作簿A列或B列中的條目與我收到的第二個工作簿列A或B中的條目。如果任何條目匹配,請刪除第二個工作簿上的整個行。
我將每月進行一次數百行的操作,它將從一個宏指定給第三個工作簿中的一個形狀運行。
這裏我發佈了一些代碼,可以讓我打開我的兩個文件並複製其中一個文件的內容,但我需要的是將比較和刪除Workbook 2上與工作簿1匹配的行的代碼。我自己的代碼做到這一點是可怕的,不值得發佈。
代碼:
Sub test()
Dim strFileName As String
Dim wbTarget As Workbook
Dim wbSource As Workbook
Dim wsTarget As Worksheet
Dim wsSource As Worksheet
strFileName = Application.GetOpenFilename("Excel files (*.xls*),*.xl*", Title:="Open data")
Set wbSource = ThisWorkbook
Set wbTarget = Workbooks.Open(strFileName)
Set wsSource = wbSource.Worksheets("Sheet1")
Set wsTarget = wbTarget.Worksheets("Sheet1")
'to copy from Target - > Source
wsTarget.Range("B2").Resize(5, 5).Copy wsSource.Range("B2")
'etc.
End Sub
代碼,評論和建議,非常感謝! 乾杯, 克里斯托弗
代碼更新8:30 AM:這是一種新的方式,我正在考慮使事情工作。我的代碼行Set Rng = Range("A1:B10000" & LR)
Sub test()
Dim strFileName As String
Dim strFileName2 As String
Dim wbTarget As Workbook
Dim wbSource As Workbook
Dim wsTarget As Worksheet
Dim wsSource As Worksheet
Dim LR
Dim Rng As Range
strFileName = Application.GetOpenFilename("Excel files (*.xls*),*.xl*", Title:="Open 'Things Which Have Been Removed'")
strFileName2 = Application.GetOpenFilename("Excel files (*.xls*),*.xl*", Title:="Open This Month's Purge List")
Set wbSource = ThisWorkbook
Set wbTarget = Workbooks.Open(strFileName)
Set wsSource = wbSource.Worksheets("Sheet1")
Set wsTarget = wbTarget.Worksheets("Sheet1")
Set LR = wsSource.UsedRange.Rows
With wbTarget.Sheets(1)
Set Rng = Range("A1:B10000" & LR)
Rng.RemoveDuplicates Columns:=Array(4), Header:=xlNo
End With
End Sub
任何使用MS Access的經驗?您可以創建一個指向這兩個電子表格的鏈接,並將其作爲表格拉入。然後,你需要的是一個SQL DELETE查詢,它表示DELETE FROM TABLE 2 WHERE EXISTS IN TABLE 1)。這是簡化的,不會運行,但是非常接近。然後你可以導出表格2.如果你打算做很多這類事情,我建議你查看一下。 – bushell
不幸的是,我的公司從來不會使用訪問權限。效率太高。它會解決很多問題,但好主意! – chrisleepotter