摘要: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 表名稱。

相關文章