利用VBA篩選重複資料

2021-09-24 12:47:21 字數 2462 閱讀 6466

目標:在重複資料中按照一定規則提取、組合。

sub match()

dim i, j, z, n, flag, a, b, c

set a = worksheets("sheet1").usedrange

set b = worksheets("sheet2").usedrange

set c = worksheets("sheet3").usedrange

for i = 3 to a.rows.count

for j = 2 to b.rows.count

if a.cells(i, 1) = b.cells(j, 2) then

'險種名稱

debug.print b.cells(j, 2)

select case b.cells(j, 3)

case is = a.cells(1, 3)

'城鎮職工基本醫療保險

'繳費基數 賦值列不同

a.cells(i, 2) = val(b.cells(j, 6))

'繳納金 賦值列不同

a.cells(i, 3) = val(b.cells(j, 8))

a.cells(i, 4) = val(b.cells(j, 9))

case is = a.cells(1, 6)

'城鎮企業職工基本養老保險

'繳費基數

a.cells(i, 5) = val(b.cells(j, 6))

'繳納金

a.cells(i, 6) = val(b.cells(j, 8))

a.cells(i, 7) = val(b.cells(j, 9))

case is = a.cells(1, 8)

'公務員醫療補助

'繳費基數

a.cells(i, 5) = val(b.cells(j, 6))

'繳納金

a.cells(i, 8) = val(b.cells(j, 8))

a.cells(i, 9) = val(b.cells(j, 9))

case is = a.cells(1, 10)

'生育保險

'繳費基數

a.cells(i, 5) = val(b.cells(j, 6))

'繳納金

a.cells(i, 10) = val(b.cells(j, 8))

a.cells(i, 11) = val(b.cells(j, 9))

case is = a.cells(1, 12)

'工傷保險

'繳費基數

a.cells(i, 5) = val(b.cells(j, 6))

'繳納金

a.cells(i, 12) = val(b.cells(j, 8))

a.cells(i, 13) = val(b.cells(j, 9))

case is = a.cells(1, 14)

'失業保險

'繳費基數

a.cells(i, 5) = val(b.cells(j, 6))

'繳納金

a.cells(i, 14) = val(b.cells(j, 8))

a.cells(i, 15) = val(b.cells(j, 9))

case else

end select

end if

next

next

'把名字找到,然後將屬性整合

j = 3

flag = 0

'debug.print c.cells(j, 1)

for i = 3 to a.rows.count

if c.cells(j, 1) = "" then

for z = 3 to j 'z用於控制待寫入資料和前面資料的重複比較次數

'debug.print z

if c.cells(z, 1) = a.cells(i, 1) then

if c.cells(z, 1) <> "" then

flag = 1 'flag用於判斷待寫入資料是否和前面的資料重複

debug.print z

end if

end if

next

if flag = 0 then '只有經過上面的重複資料迴圈判斷,才能確定這個資料不是重複資料

c.cells(j, 1) = a.cells(i, 1)

for n = 2 to 15 'n 用於控制寫出資料的列數

c.cells(j, n) = a.cells(i, n)

next

debug.print c.cells(j, 1)

j = j + 1 '

end if

end if

flag = 0

next

debug.print "done"

end sub

篩選重複資料

沒有主鍵,有大量重複資料,並且兩張表之間也可能有重複資料。先要求 匯出資料不能重複,身份證號碼相同的按警告級別高的匯出,身份證號碼相同的按警告級別也相同的則按修改時間最新的匯出。大致有這麼幾個方案 1。直接寫sql語句把要用的資料篩選出來。2。新建乙個臨時表,先將兩張表的資料放入臨時表,然後篩選。3...

VBA研究 如何篩選出重複的郵件號碼

客服人員發現地市分公司上報的理賠郵件有重複現象,但人工檢查重複非常麻煩,因為這些號碼不在乙個工作表中。為此我做了乙個小工具,可以一鍵列出excel檔案中所有工作表中重複的號碼。有了這個工具,不僅可以篩選重複郵件號碼,也可以用於篩選其他重複的東西,比如姓名 身份證號碼等等。1 工具介面 為了提高工具的...

刪除重複資料

介紹兩種刪除重複行的方式 1.使用臨時表,分組找出重複部分的id進行刪除 刪除table goods info 中存在重複goods id的記錄 select identity int,1,1 as autoid,into temptable from goods info select min a...