|
- Sub GetValue()
- Dim sh As Worksheet, strShName As String, lngRows As Long
- Dim Conn As Object, Rst As Object, strPath As String
- Dim strConn As String, strSQL As String, strTable As String
- Dim rg As Range
-
- strShName = "Sheet1"
- Set sh = Sheets(strShName)
- lngRows = sh.UsedRange.Rows.Count
- strTable = "[" & strShName & "$A1:D" & lngRows & "]"
- Set rg = sh.Range("K1") '结果填充起始单元格
- sh.UsedRange.NumberFormatLocal = "@" '**运行前,将工作表的单元格式 设置为【文本】
-
- Set Conn = CreateObject("ADODB.Connection")
- Set Rst = CreateObject("ADODB.Recordset")
- strPath = ThisWorkbook.FullName
- Select Case Application.Version * 1
- Case Is <= 11
- strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & strPath
- Case Is >= 12
- strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
- End Select
- Conn.Open strConn
- strSQL = "(SELECT 数据1 AS F1 FROM " & strTable & " WHERE 数据1 NOT IN (SELECT 数据3 FROM " & strTable & ")) UNION " & _
- "(SELECT 数据2 AS F1 FROM " & strTable & " WHERE 数据2 NOT IN (SELECT 数据3 FROM " & strTable & "))"
- Rst.Open strSQL, Conn, 3, 1
- rg.CopyFromRecordset Rst
-
- MsgBox "提取不重复记录 " & Rst.RecordCount & " 条"
- If Rst.State = 1 Then Rst.Close
- If Conn.State = 1 Then Conn.Close
- Set Rst = Nothing
- Set Conn = Nothing
-
- Set rg = Nothing
- Set sh = Nothing
- End Sub
复制代码 |
评分
-
2
查看全部评分
-
|