Re: [算表] 在有上千筆資料比對~~要如何寫才能提高 …(VBA)

看板Office作者 (windknife18)時間16年前 (2010/06/28 16:07), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
因為沒有 SQL 所以你試看看可不可行囉 Dim A As Variant Dim row as Integer Dim start_row as Integer row_no = Sheet1.Range("a1").End(xlDown).Row start_row TextBox1.Text A = Range(Cells(start_row, 1), Cells(row_no, 1)) For i = 1 to row_no-start_row+1 strsql = "select * from test where a like'" & .Cells(i, "A") & "'" '查詢 Set myrst = myCon.Execute(strsql) If myrst.EOF = True Then .Cells(i, "B") = "No Data" j = j + 1 '計算沒有資料的筆數 End If Next Range(Cells(start_row, 1), Cells(row_no, 1)) = A ※ 引述《evantw (安安小成)》之銘言: : 軟體:Excel : 版本:2003 : 我有個 Excel 內有上千筆資料要和資料庫 .mdb 做比對 : 我是用 VBA 寫法,用程式 Row 的 : 目前是一行一行的讀取然後與資料庫做比對 : 不過因為有上千筆~~ : 所以在比對程式 Row 時, Excel 感覺都快當掉了 : 而且比對時間也蠻長的~~(可能是電腦效能原因吧) : 我目前所需求的是 : 有上千筆資料要與資料庫中的 text 資料表欄位 A 做比對 : 如果在資料庫中沒有資料就 Show 出 No Data 的字 : 以下是我的寫法~~ : For i = TextBox1.Text To Sheet1.Range("a1").End(xlDown).Row : strsql = "select * from test where a like'" & .Cells(i, "A") & "'" '查詢 : Set myrst = myCon.Execute(strsql) : If myrst.EOF = True Then : .Cells(i, "B") = "No Data" : j = j + 1 '計算沒有資料的筆數 : End If : Next : 因此~~想請教各位高手們有沒有更快速的方法將上千筆資料與資料庫快速做比對呢?? : 能否給的提示做法~~謝謝 ^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.131.84.79 ※ 編輯: windknife18 來自: 140.131.84.79 (06/28 16:11)

06/28 17:24, , 1F
謝謝大大的幫助~~這個方法確實跑得比較快~~ ^^
06/28 17:24, 1F

06/28 17:35, , 2F
^^
06/28 17:35, 2F

06/28 17:36, , 3F
以前比較喜歡VBA, 不過目前都盡量用formula說 ....
06/28 17:36, 3F
文章代碼(AID): #1CA5WmuE (Office)
文章代碼(AID): #1CA5WmuE (Office)