【问题标题】:excel, VBA, duplicate valuesexcel,VBA,重复值
【发布时间】:2017-12-10 16:21:58
【问题描述】:

我有一个很大的电子表格要求我进行编辑。基本上,无论从哪里提取数据,它都会创建多个个人姓名、国家、开始日期和结束日期的副本。是否可以在相邻单元格中获取开始和停止日期并删除重复数据?

我提供了一个屏幕截图。手动复制、粘贴和删除将花费很长时间,因为此电子表格有超过 2300 行,其中大约 50% 是需要编辑的重复项。

谢谢

【问题讨论】:

    标签: vba excel duplicates


    【解决方案1】:

    这里不需要VBA,只需添加一个带有公式的新列:

    =CONCATENATE(C1,D1)
    

    将列字母替换为开始日期和结束日期的列字母。

    然后您可以在新列上使用 Excel 的删除重复项功能(数据 -> 删除重复项)

    【讨论】:

      【解决方案2】:

      使用SQL是合适的。

      Sub myQuery()
          Dim strSQL  As String
          Dim strTable As String
          Dim Ws As Worksheet
      
          strTable = "[" & ActiveSheet.Name & "$]"
      
          strSQL = "SELECT NAME, COUNTRY, MIN([Start Date]) as [Start Date] , max([End Date]) as [End Date] "
          strSQL = strSQL & " FROM " & strTable & " "
          strSQL = strSQL & " Where not isnull(NAME) "
          strSQL = strSQL & " Group by NAME, COUNTRY "
      
          Set Ws = Sheets.Add
      
          exeSQL strSQL, Ws
      
      End Sub
      
      Sub exeSQL(strSQL As String, Ws As Worksheet)
      
          Dim Rs As Object
          Dim strConn As String
          Dim i As Integer
      
          strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
              "Data Source=" & ThisWorkbook.FullName & ";" & _
                  "Extended Properties=Excel 12.0;"
      
      
          Set Rs = CreateObject("ADODB.Recordset")
          Rs.Open strSQL, strConn
      
          If Not Rs.EOF Then
               With Ws
                  .Range("a1").CurrentRegion.ClearContents
                  For i = 0 To Rs.Fields.Count - 1
                     .Cells(1, i + 1).Value = Rs.Fields(i).Name
                  Next
                  .Range("a" & 2).CopyFromRecordset Rs
                  .Columns.AutoFit
              End With
          End If
          Rs.Close
          Set Rs = Nothing
      End Sub
      

      【讨论】:

      • 很遗憾,我无法访问 SQL Server Management Studio。有没有其他方法可以在没有 SQL 的情况下运行它?
      猜你喜欢
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      相关资源
      最近更新 更多