excel - Delete duplicates where the value of another column in the same row = 0 -


i have worksheet ~30k rows of data , 20 columns. lot of values in column b duplicates, , delete duplicates. problem have though column b may duplicate, row's data in rest of columns not duplicate, it's important delete row if value in column b duplicate , value in column m = 0.

is there way do each row in worksheet (the worksheet name test)? imagine involves "for each...", don't have lot of experience , haven't been able find other macros can complete task. let me know if need me elaborate on trying accomplish.

thanks help!

here's simple way in vba, queries spreadsheet table. you'll have adapt runquery() method particular case, because don't know column names.

this assumes following:

  1. your worksheet laid out table, column names in row 1, , data below it
  2. you've saved workbook before running code

in particular workbook, have column labeled "category", 1 labeled "types", , i've added column called "deleteme".

'adapt runquery particular needs sub runquery()     'change sql statement reflect particular need     sql = "select [category], [types] %table(0)% group [category], [types] having count(*) > 1"      'change "sheet2" sheet name     set rs = querysheet(sql, sheet2)      while not rs.eof         sql = "update %table(0)% set [deleteme]='x' [category]='" & rs!category & "' , [types]='" & rs!types & "'"         'again, change sheet2 sheet name         querysheet sql, sheet2         rs.movenext     loop end sub  'you don't need change function function querysheet(ssql, paramarray worksheets())     dim osh     dim sconn, n      on error goto querysheet_err     set querysheet = createobject("adodb.recordset")     sconn = "provider=microsoft.ace.oledb.12.0;data source=" & worksheets(0).parent.fullname & ";extended properties=""excel 8.0;hdr=yes"";"      n = 0     each osh in worksheets         ssql = replace(ssql, "%table(" & n & ")%", "[" & osh.name & "$]")         n = n + 1     next     querysheet.open ssql, sconn     exit function  querysheet_err:     msgbox "error in querysheet(): " & err.description     end end function 

source

the code updates "deleteme" column x. now, can sort "deleteme", , delete rows (or write simple vba statement that).

your runquery() method need more this, replacing "column b" , "column m" names of fields in sheet's header row:

    ...      'change sql statement reflect particular need     sql = "select [column b] %table(0)% [column m] = 0 group [column b] having count(*) > 1"      'change "sheet2" sheet name     set rs = querysheet(sql, sheet2)      while not rs.eof         sql = "update %table(0)% set [deleteme]='x' " & _            " " & _            iif(isnull(rs![column b]), _                " [column b] null", _                " [column b]='" & rs![column b] & "' ") & _            " , [column m]=0"          'again, change sheet2 sheet name         querysheet sql, sheet2      ... 

note: debug errors when change names of worksheets "sheet1" else... haven't worked issue out yet. works "quick n' dirty" queries.


Comments

Popular posts from this blog

1111. appearing after print sequence - php -

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

Ruby on Rails, ActiveRecord, Postgres, UTF-8 and ASCII-8BIT encodings -