【问题标题】:How to delete duplicates, but keep the first instance and a blank cell for the duplicates in OpenOffice Calc?如何删除重复项,但在 OpenOffice Calc 中为重复项保留第一个实例和一个空白单元格?
【发布时间】:2014-01-14 15:34:00
【问题描述】:

如果我有这样的数据:

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

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

【问题讨论】:

    标签: duplicates openoffice-calc


    【解决方案1】:

    这在 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
    

    设置:

    结果:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 2020-12-14
      • 2022-12-29
      相关资源
      最近更新 更多