[英]excel vba macro to match cells from two different workbooks and copy and paste accordingly
[英]excel vba macro to match cells from two different workbooks and copy and paste accordingly and have to update only the empty cells
請幫助我。
我有兩個工作簿Bookone.xlsm和Booktwo.xlsm,bookone是源文件,booktwo是目標excel文件。
Bookone和Booktwo具有以下數據。 源和目標Excel文件快照
我只需要更新里面是空的細胞,但所有的細胞都得到了更新,包括非空單元格
我的VBA腳本的輸出。 輸出量
提前致謝.. :)
我的代碼:
Sub UpdateW2()
Dim w1 As Worksheet, w2 As Worksheet
Dim c As Range, FR As Long
Application.ScreenUpdating = False
Set w1 = Workbooks("BookOne.xlsm").Worksheets("Sheet1")
Set w2 = Workbooks("BookTwo.xlsm").Worksheets("Sheet1")
For Each c In w1.Range("D2", w1.Range("D" & Rows.Count).End(xlUp))
FR = 0
On Error Resume Next
FR = Application.Match(c, w2.Columns("A"), 0)
On Error GoTo 0
If FR <> 0 Then w2.Range("C" & FR).Value = c.Offset(, -3)
If FR <> 0 Then w2.Range("C" & FR).Value.Interior.ColorIndex=8
Next c
Application.ScreenUpdating = True
結束子
您正在w2
列A
w1
列D
中搜索值。 除了“ Mach7”,將找到所有值。 因此, 所有值將被更新。
如果w2
列C
仍然為空,則可能只需要更新。 然后,您必須檢查一下。
Sub UpdateW2()
Dim w1 As Worksheet, w2 As Worksheet
Dim c As Range, FR As Variant
Application.ScreenUpdating = False
Set w1 = Workbooks("BookOne.xlsm").Worksheets("Sheet1")
Set w2 = Workbooks("BookTwo.xlsm").Worksheets("Sheet1")
For Each c In w1.Range("D2", w1.Range("D" & Rows.Count).End(xlUp))
FR = Empty
FR = Application.Match(c, w2.Columns("A"), 0)
If TypeName(FR) <> "Error" Then 'match was found
If IsEmpty(w2.Range("C" & FR)) Then 'cell in w2 is still empty
w2.Range("C" & FR).Value = c.Offset(, -3)
w2.Range("C" & FR).Interior.ColorIndex = 8
End If
End If
Next c
Application.ScreenUpdating = True
End Sub
與WorksheetFunction.Match
相反,如果未找到匹配項, Application.Match
將不會引發錯誤。 相反,它將返回一個錯誤值。 因此,沒有On Error...
在這里,如果你需要DIM
的FR
的Variant
。 然后可以檢查FR
是否為錯誤值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.