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

o_O*_*o_O 4 duplicates openoffice-calc

如果我有以下数据:

A          B          C
111        asdews     iujfhg
111        oikufjf    jasddaf
112        eifjfjc    olkdkj
112        eiejdj     olokjjfki
112        ioeiurjf   oleodks
113        oeiekdkd   poldkkmd
Run Code Online (Sandbox Code Playgroud)

我想删除除第一个实例以外的所有重复项,但保留所有后续重复项的单元格为空.预期结果:

A          B          C
111        asdews     iujfhg
           oikufjf    jasddaf
112        eifjfjc    olkdkj
           eiejdj     olokjjfki
           ioeiurjf   oleodks
113        oeiekdkd   poldkkmd
Run Code Online (Sandbox Code Playgroud)

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

Jer*_*ino 13

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

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
Run Code Online (Sandbox Code Playgroud)

建立:

在此输入图像描述

结果:

在此输入图像描述

如果这有帮助,请告诉我们.