利用ADO,實現大數據、多數據之排重處理
摘要:1 strSQL = \"SELECT DISTINCT 型號,生產廠 FROM [數據$]\" 這句代碼的意義是在型號和生產廠的字段值中去掉重複的值。strSQL = \"SELECT DISTINCT 型號,生產廠 FROM [數據$]\"。
大家好,我們今天繼續VBA數據庫解決方案的學習,這講的內容是利用ADO實現工作表數據的排重處理。
實例:在我的工作表中有如下的數據,
很顯然有一部分型號和生產廠的數據是重複的,我們的目標是把這些重複的值只是保留一個,然後把淨化的數據放到一頁文件中,該如何做到呢?
下面我給出我的代碼:
Sub mynzRecords_45() '第45講,利用ADO,實現工作表數據的排重處理
Dim cnADO, rsADO As Object
Dim strPath, strTable, strSQL As String
Set cnADO = CreateObject(\"ADODB.Connection\")
Dim Sht1, Sht2 As Worksheet
Set Sht1 = Worksheets(\"45\")
Set Sht2 = Worksheets(\"數據\")
Sht1.Activate
'建立一個ADO的連接
strPath = ThisWorkbook.FullName
cnADO.Open \"Provider=Microsoft.ACE.OLEDB.12.0;\" _
& \"Extended Properties=Excel 12.0;\" _
& \"Data Source=\" & strPath
strSQL = \"SELECT DISTINCT 型號,生產廠 FROM [數據$]\"
Cells.ClearContents
Range(\"A1:B1\") = Array(\"型號\", \"生產廠\")
Range(\"A2\").CopyFromRecordset cnADO.Execute(strSQL)
cnADO.Close
Set cnADO = Nothing
End Sub
代碼的截圖:
代碼的講解:
1 strSQL = \"SELECT DISTINCT 型號,生產廠 FROM [數據$]\" 這句代碼的意義是在型號和生產廠的字段值中去掉重複的值。其中利用了SQL SELECT DISTINCT 語句。
語法:SELECT DISTINCT 列名稱 FROM 表名稱
語法說明:在表中,可能會包含重複值。這並不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。關鍵詞 DISTINCT 用於返回唯一不同的值。
2 Range(\"A1:B1\") = Array(\"型號\", \"生產廠\")
Range(\"A2\").CopyFromRecordset cnADO.Execute(strSQL)
上述語句給出A1:B1填入的數組,然後從記錄中拷貝出記錄到A2之後的單元格中。
代碼的運行:
今日內容迴向:
1 如何實現列數據的排重?
2 如何理解本節用的SQL語句SELECT DISTINCT 列名稱 FROM 表名稱。