2025年12月21日 星期日

VBA 資料分析教學:DAY 9

 VBA範例:比較兩個Excel表格

此VBA程式用於比對Sheet1與Sheet2的「項名1」與「項名2」列,標記相同資料為「A」,僅Sheet1有的為「B」,並輸出結果至Sheet3。程式透過雙重迴圈與ADODB連線實現高效比對,適用於供應商資料審核。

SHEET1 資料

                                                                SHEET2 資料

完整程式碼:

text

Sub 比對1()

    Sheet1.Range("D2:D1000").ClearContents

    Dim Sheet1數據行數, Sheet2數據行數

    Sheet1數據行數 = 15

    Sheet2數據行數 = 11

    For I = 2 To Sheet1數據行數

        For j = 2 To Sheet2數據行數

            If Worksheets("Sheet1").Cells(I, 3) = Worksheets("Sheet2").Cells(j, 3) Then

                Worksheets("Sheet1").Cells(I, 4) = "A"

                Exit For

            End If

        Next

    Next

End Sub


Sub Sheet1中有Sheet2中也有()

    Sheet3.Range("A2:D1000").ClearContents

    Set conn = CreateObject("adodb.connection")

    conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName

    Sq1 = "select * from [Sheet1$] where 條件 in(select 條件 from [Sheet2$])"

    Sheet3.[B2].CopyFromRecordset conn.Execute(Sq1)

    conn.Close

    Set conn = Nothing

End Sub

執行步驟與解說: 先執行「比對1」標記相同資料,再用SQL子查詢輸出交集至Sheet3。這種方法避免重複程式碼,適合ISO 9001審核時比對供應商清單。

沒有留言:

張貼留言

職場毒癌:人還在,心已經離職了

但真正該問的,或許不是這種員工有多可怕,而是怎樣的制度與管理,讓一個人還在工作,心卻已經離開。 交辦的事情會做,期限到了會交,出了問題也會回報。可是,他竟然準時下班、不主動攬別人的爛攤子,聽到「公司是一個大家庭」時,還會先確認是不是又要有人免費付出。 主管說他變了,沒有以前積極。...