如何删除重复项,但保留OpenOffice Calc中重复项的第一个实例和空白单元格?

时间:2013-12-27 02:34:09

标签: duplicates openoffice-calc

如果我有以下数据:

A          B          C
111        asdews     iujfhg
111        oikufjf    jasddaf
112        eifjfjc    olkdkj
112        eiejdj     olokjjfki
112        ioeiurjf   oleodks
113        oeiekdkd   poldkkmd

我想删除除第一个实例之外的所有重复项,但是对于所有后续重复项,请将该单元格保留为空白。预期结果:

A          B          C
111        asdews     iujfhg
           oikufjf    jasddaf
112        eifjfjc    olkdkj
           eiejdj     olokjjfki
           ioeiurjf   oleodks
113        oeiekdkd   poldkkmd

我发现删除重复项的唯一方法是标准过滤器,它将删除所有重复项。我不能这样做,因为我有其他cols如B和C有数据。我需要这个的原因是由于我需要导入的程序,如果它具有相同的ID,它将用下一行覆盖每一行。因为我需要它们附加到相同的ID,而不是覆盖,我必须以某种方式管理这个任务。我在多个文档中有大约一百万行来执行此操作,因此如果可能的话,最好使用快速方法。

1 个答案:

答案 0 :(得分:13)

这在Excel VBA中非常简单。按 Alt - F11 访问VBE并插入新模块。将以下代码复制并粘贴到模块中并运行它。 在执行此操作之前先备份文件。

Sub RemoveRepeatingStrings()

    Dim BaseStr As String, CurrStr As String
    Dim EndRow As Long

    EndRow = Range("A" & Rows.Count).End(xlUp).Row
    BaseStr = Range("A1").Value

    Application.ScreenUpdating = False

    For Iter = 2 To EndRow
        CurrStr = Range("A" & Iter).Value
        If CurrStr = BaseStr Then
            Range("A" & Iter).Value = vbNullString
        Else
            BaseStr = Range("A" & Iter).Value
        End If
    Next Iter

    Application.ScreenUpdating = True

End Sub

设置向上:

enter image description here

<强>结果:

enter image description here

如果有帮助,请告诉我们。