Re: [VBA ] 比對資料填值的問題
※ 引述《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
討論串 (同標題文章)
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章