Re: [VBA ] 比對資料填值的問題

看板Visual_Basic作者 (喲)時間13年前 (2012/02/18 20:28), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《one164 (阿MON)》之銘言: : 底下這兩個For迴圈是我自己寫的,從2開始的原因是新資料表的(1,1)是空白格 : For i = 2 To count_c '將新資料列放入陣列 : temp = "" : For j = 1 To 1 : temp = temp & Sheet1.Cells(i, j) '這邊用&的符號的意思我不明白 : Next 因為作者本來有用就延用了 : data_c(i) = temp : Next 這裡是data_c(i)是將Sheet1其中一列資料合併為一串文字. : For i = 1 To 1 '將新資料欄放入陣列 : temp = "" : For j = 2 To count_d : temp = temp & Sheet1.Cells(i, j) : Next : data_d(i) = temp : Next 這裡data_d(i)是將Sheet1第1列資料合併為一串文字. : 底下兩個是原作者的For迴圈 : '將資料A讀入陣列 : For i = 1 To count_a : temp = "" : For j = 1 To : temp = temp & Sheet3.Cells(i, j) : Next : data_a(i) = temp : Next 這裡以上是說,data_a(i)是Sheet3其中一列資料合併為一串文字 : '將資料B讀入陣列 : For i = 1 To count_b : temp = "" : For j = 1 To n : temp = temp & Sheet4.Cells(i, j) : Next : data_b(i) = temp : Next 這裡以上是說data_b(i)是將Sheet4其中一列資料合併為一串文字. : '開始比較A,B資料,有*號部份是我添加上去的 : 我希望做到的部分是在比較出資料A和資料B相同的資料時, : 從新資料表的欄中(data_d)找出相同的,也從列中找出與data_a(1)相同的 : 找出來後在新資料表的那格儲存格填入1,因為是第一次嘗試修改VB程式 : 也不懂到底是哪個環節出問題,目前只做到這,再後面就都是原作者的程式碼 : a = 0 : b = 0 : c = 0 : *num = 1 : For i = 1 To count_a : For j = 1 To count_b : If data_a(i) = data_b(j) Then '如果相等則列印出來 ^^^^^^^^^^^^^^^^^^^^^ : c = c + 1 : For k = 1 To n : temp = Sheet3.Cells(i, k) : Sheet7.Cells(c, k) = temp : *For L = 1 To count_d : *If temp = data_d(L) Then ^^^^^^^^^^^^^^^^ : *For m = 1 To count_c : *If data_a(1) = data_c(m) Then ^^^^^^^^^^^^^^^^^^^^^ : *Sheet1.Cells(m,L).Value = num : *End If : *Next : *End If : *Next 你全都用合併的文字來比對,包括 data_a(i) = data_b(j), data_a(1) = data_c(m) 還有 temp = data_d(L), 而temp卻是Sheet3.Cells(i,k). 其實按照你所舉的例子,如果資料A有一列是one,two,three,資料B有一列是three,four, 你的程式是先合併而拿到 "onetwothree", 然後還拿到 "threefour", 後來會比較 "onetwothree" 是否與 "threefour" 相同, 結果雖然欄位有交集,但是比對的式子不會求得交集. 所以程式跑完之後,Sheet1沒有動靜. 而且前面data_c和data_d先從Sheet1取資料出來, 之後才想要Sheet1.Cells(m,L) .Value = num, 而且data_c和data_d還參與比對,這套計算過程看起來很奇怪. 你一該從簡單的交集計算開始寫寫看. 要想一想任意二列資料求交集,求差集,都分別怎麼做. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.230.45
文章代碼(AID): #1FFvbZBf (Visual_Basic)
討論串 (同標題文章)
文章代碼(AID): #1FFvbZBf (Visual_Basic)