2012-12-14 115 views
0

我得到了一些excel表,用戶必須在sheet2上插入數據列表。 然後用戶點擊一個按鈕,sheet1基於sheet2中的數據插入進行更新。查找記錄和更新

此代碼將查找sheet2中的數據是否缺少,然後正確插入數據。 我還需要有現有的記錄opdated。 工作表1上的現有數據已添加帶有註釋的manuel列,這些註釋在數據更新時不應刪除。

在Sheet1數據位於從C到N型柱 - 鍵位於J.

Dim iLast As Long 
Dim iCounter As Integer 

iLast = Sheets(2).Range("I" & Application.Rows.Count).End(xlUp).Row 

Dim rng As Range 

For iCounter = 2 To iLast 
    Set rng = Sheets(1).Range("J:J").Find(Sheets(2).Range("I" & iCounter).Value) 

    If rng Is Nothing Then 
     Sheets(2).Range("B" & iCounter & ":" & "M" & iCounter).Copy 
     Sheets(1).Range("C" & Sheets(1).Range("J" & Application.Rows.Count).End(xlUp).Row + 1).PasteSpecial xlPasteAll 
     Range("B2").Select 

     'Insert mailto link 
     Selection.Copy 
     Sheets(1).Range("B" & Sheets(1).Range("J" & Application.Rows.Count).End(xlUp).Row).Select 
     'Range("B3").Select 
     ActiveSheet.Paste 
     ActiveSheet.Paste 
     Application.CutCopyMode = False 
    Else 

    'MsgBox "update existing row with new data - how to" 

    End If 

Next iCounter 

回答

0

你應該能夠做到這一點以同樣的方式來添加新行。

如果您使用xlPasteValues而不是xlPasteAll,則表1中的註釋不應受到影響。

假設您只是複製值並且沒有額外的格式或註釋需要複製。

我不完全確定你想要達到什麼樣的目標,這對我來說有點難度,但我認爲這就是你想要做的事情?

Dim iLast As Long 
Dim iCounter As Integer 

iLast = Sheets(2).Range("I" & Application.Rows.Count).End(xlUp).Row 

Dim rng As Range 

For iCounter = 2 To iLast 
    Set rng = Sheets(1).Range("J:J").Find(Sheets(2).Range("I" & iCounter).Value) 

    If rng Is Nothing Then 
     Sheets(2).Range("B" & iCounter & ":" & "M" & iCounter).Copy 
     Sheets(1).Range("C" & Sheets(1).Range("J" & Application.Rows.Count).End(xlUp).Row + 1).PasteSpecial xlPasteAll 
     Range("B2").Select 

     'Insert mailto link 
     Selection.Copy 
     Sheets(1).Range("B" & Sheets(1).Range("J" & Application.Rows.Count).End(xlUp).Row).Select 
     'Range("B3").Select 
     ActiveSheet.Paste 
     ActiveSheet.Paste 
     Application.CutCopyMode = False 
    Else 
     Sheets(2).Range("B" & iCounter & ":" & "M" & iCounter).Copy 
     Sheets(1).Range("C" & rng.Row).PasteSpecial xlPasteValues 
    End If 

Next iCounter 
+0

該代碼只搜索關鍵字,如果不存在,則會添加一個包含數據的新行。表1中的數據然後排序,這就是爲什麼我需要幫助。我如何找到並找到需要更新的字段? – user1870816

+0

你能提供一個你的工作簿的例子嗎? (圖片/樣本數據或文件等)。除非表2中的內容真的不同,否則它應該是第一個的近似副本,如果塊 – NickSlash

+0

請參閱下面的註釋 – user1870816