Sub 去重复() Dim arr, d, m arr = ActiveSheet.UsedRange Set d = CreateObject("scripting.dictionary") For Each m In arr If m <> "" Then d(m) = "" Next m If d.Count > 0 Then Worksheets.Add [a1].Resize(d.Count, 1) = Application.Transpose(d.keys) MsgBox "去重复成功!" End If End Sub
Public d As Object Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.EnableEvents = False Dim arr, m arr = ActiveSheet.UsedRange If d Is Nothing Then Set d = CreateObject("scripting.dictionary") If d.Count > 0 Then d.RemoveAll If ActiveSheet.UsedRange.Count < 2 Then sets: Exit Sub For Each m In arr If m <> "" Then d(m) = "" Next m If d.Count > 0 Then 'Worksheets.Add ActiveSheet.UsedRange = "" [a1].Resize(d.Count, 1) = Application.Transpose(d.Keys) 'MsgBox "去重复成功!" End If Application.EnableEvents = True Application.ScreenUpdating = True End Sub Sub sets() Application.EnableEvents = True Application.ScreenUpdating = True End Sub
Sub aa() Dim iCols Dim cnn, SQL, rs Set cnn = CreateObject("adodb.connection") Set rs = CreateObject("adodb.recordset") cnn.Open "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=excel 8.0;Data Source=E:\1.xls" SQL = "select distinct * from [Sheet1$]" Set rs = cnn.Execute(SQL) Sheet2.Cells.ClearContents For iCols = 0 To rs.Fields.Count - 1 Sheet2.Cells(1, iCols + 1).Value = rs.Fields(iCols).Name Next Sheet2.Range("A2").CopyFromRecordset rs Set rs = Nothing Set cnn = Nothing End Sub 哇咔咔,大神们我从网上找到了 谢谢你们 @夜辰无星 @394988736 @86118920