0

我有一些 excel 表,用户必须在 sheet2 上插入数据列表。然后用户点击一个按钮,并根据 sheet2 中插入的数据更新 sheet1。

此代码将查找 sheet2 中的数据是否在 sheet 中丢失,然后正确插入数据。我还需要更新现有记录。sheet1 上的现有数据已添加带有注释的 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 
4

1 回答 1

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
于 2012-12-14T16:13:41.983 回答