防止在Excel中追加重复记录,请使用最新值

防止在Excel中追加重复记录,请使用最新值,excel,vba,ms-office,Excel,Vba,Ms Office,我有一个非常简单的excel工作簿,其中包含大约10列库存信息。我有三个移动扫描仪,可以将数据导出到单个工作簿。我将其设置为“附加”,以便数据不会被覆盖,而是添加到工作簿中。如何防止基于AssetId列将重复记录添加到工作簿中,并且如果发现重复记录,我希望最新记录用新值覆盖该记录。假设您希望在工作表更改并在末尾添加最新数据后自动执行此操作: Private Sub Worksheet_Change(ByVal Target As Range) Dim assetIDRange, c3ll as

我有一个非常简单的excel工作簿,其中包含大约10列库存信息。我有三个移动扫描仪,可以将数据导出到单个工作簿。我将其设置为“附加”,以便数据不会被覆盖,而是添加到工作簿中。如何防止基于
AssetId
列将重复记录添加到工作簿中,并且如果发现重复记录,我希望最新记录用新值覆盖该记录。

假设您希望在工作表更改并在末尾添加最新数据后自动执行此操作:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim assetIDRange, c3ll as Range
'all you need is an if statement here then.
If sdsheet.Cells(Rows.Count, 1).End(xlUp).Row <= 2 Then
    Exit Sub
Else
    lastRow = sdsheet.Cells(Rows.Count, 1).End(xlUp).Row
End If

Set assetIDRange = thisworkbook.sheets("SheetName").Range("A2:A" & lastRow - 1)

newAssetID = thisworkbook.sheets("SheetName").cells(lastRow, 1)

For each c3ll in assetIDRange
    if c3ll.value = newAssetID then
        c3ll.entirerow.delete
        exit sub
    end if
next c3ll

End Sub
Private子工作表\u更改(ByVal目标作为范围)
Dim assetIDRange,c3ll as Range
“那么,你所需要的只是一个if语句。

如果sdsheet.Cells(Rows.Count,1).End(xlUp).Row假设您希望在工作表更改并在末尾添加最新数据后自动执行此操作:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim assetIDRange, c3ll as Range
'all you need is an if statement here then.
If sdsheet.Cells(Rows.Count, 1).End(xlUp).Row <= 2 Then
    Exit Sub
Else
    lastRow = sdsheet.Cells(Rows.Count, 1).End(xlUp).Row
End If

Set assetIDRange = thisworkbook.sheets("SheetName").Range("A2:A" & lastRow - 1)

newAssetID = thisworkbook.sheets("SheetName").cells(lastRow, 1)

For each c3ll in assetIDRange
    if c3ll.value = newAssetID then
        c3ll.entirerow.delete
        exit sub
    end if
next c3ll

End Sub
Private子工作表\u更改(ByVal目标作为范围)
Dim assetIDRange,c3ll as Range
“那么,你所需要的只是一个if语句。

如果sdsheet.Cells(Rows.Count,1).End(xlUp).Row在向工作表添加包含重复数据的新数据时,我将收到运行时错误1004。当点击debug时,它告诉我问题出在这一行:“Set AssetId Range=ThisWorkbook.Sheets(“AssetTracked”).Range(“A2:A”&lastRow-1)您有多少行?这些单元格中是否有超过911个字符,或者是您的assetID编号列(我假设该列少于911个字符)?您的第一列是否为空?你必须将A2:A改为你专栏的字母我目前有10个专栏,第一个是assetID,我尝试先不使用数据,然后保存一条记录,两次都出现运行时错误。我唯一能够复制错误的时间是在A列中没有数据的情况下。当您单步执行代码时,lastRow等于什么?在工作表中添加包含重复数据的新数据时,我出现运行时错误1004。当点击debug时,它告诉我问题出在这一行:“Set AssetId Range=ThisWorkbook.Sheets(“AssetTracked”).Range(“A2:A”&lastRow-1)您有多少行?这些单元格中是否有超过911个字符,或者是您的assetID编号列(我假设该列少于911个字符)?您的第一列是否为空?您必须将A2:A更改为您列的字母i当前有10列,第一列是assetID,我先尝试没有数据,然后保存了一条记录,两次都出现了运行时错误。我唯一能够复制错误的时间是在A列中没有数据的情况下。当您逐步执行代码时,lastRow等于多少?