有没有办法比较更改excel中的列并删除重复项?

Posted

技术标签:

【中文标题】有没有办法比较更改excel中的列并删除重复项?【英文标题】:Is there a way to compare to changing columns in excel and delete duplicates? 【发布时间】:2019-04-09 13:40:23 【问题描述】:

所以我正在尝试在 excel 中实现条形码扫描仪。它已经将条形码作为单元格中的数字输入。在另一列中,我有一组条形码。所以当扫描仪提供条形码时,该条形码和另一列中的一个重复应被删除。

我已经尝试过excel的比较表功能,但它既不能删除重复的条形码,也不能不标记条形码列中的重复。这意味着:如果条形码列中有两次代码 123456,它将标记为重复。

假设我有条形码 123,123,124,125。然后,如果我扫描 124,我希望该列仅包含 123,123,125,如果我扫描 123,我希望它包含 123,125。

有没有办法在 excel 中做到这一点,或者我需要特定的软件,如果是,那么使用哪个?

My problem image

【问题讨论】:

如果你发布了你迄今为止制作的代码,人们可以看看它,也许可以通过 cmets 为你提供答案或帮助 ;-) 但是我怎样才能发布一个excel截图呢? 粘贴代码的文本框的右上方是“?”按钮。在那里你会看到很多你可以使用的方法。显示图像! [名称] ( ref ) 但没有空格和偏离路线的 URL 链接。如果需要上传图片,还有发布图片选项按钮。 【参考方案1】:

您可以尝试在工作表更改事件中导入以下代码,修改并尝试:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim BarCode As String
    Dim LastRowA As Long, LastRowC As Long, i As Long, Times As Long
    Dim arr As Variant

    'Let us assume that:
    '1. All bar codes appears in column A
    '2. The Selected bar code are in cell B2
    '3. And the results are in column C

    With ThisWorkbook.Worksheets("Sheet1")

        If Not Intersect(Target, .Range("B2")) Is Nothing And Target.Count = 1 Then '<- Check if there is any change in cell B2

            LastRowC = .Cells(.Rows.Count, "C").End(xlUp).Row

            Application.EnableEvents = False

                If LastRowC > 1 Then

                    .Range("C2:C" & LastRowC).Clear '<- If there are data in the results field clear them

                End If

                BarCode = Target.Value '<- Get the code imported

                LastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row

                arr = .Range("A2:A" & LastRowA) '<- Create an array with all the bar codes

                For i = LBound(arr) To UBound(arr) '<- Loop codes
                    Debug.Print arr(i, 1)
                    If arr(i, 1) = BarCode Then
                        Times = Times + 1
                        If Times > 1 Then
                            LastRowC = .Cells(.Rows.Count, "C").End(xlUp).Row
                            .Range("C" & LastRowC + 1).Value = arr(i, 1)
                        End If
                    Else
                        LastRowC = .Cells(.Rows.Count, "C").End(xlUp).Row
                        .Range("C" & LastRowC + 1).Value = arr(i, 1)
                    End If

            Next i

            Application.EnableEvents = True

        End If

    End With

End Sub

结果:

【讨论】:

以上是关于有没有办法比较更改excel中的列并删除重复项?的主要内容,如果未能解决你的问题,请参考以下文章

Python:比较两个excel表之间的列字符串并找到匹配的列并写入另一个数据框

匹配列并删除 Shell 中的重复项

Excel VBA - 保留指定列并删除所有其他列

怎么将两个EXCEL表格合并后去除重复数据

删除pandas数据帧中的重复项后,替换特定的列值

SQL中表里面怎么删除重复数据