excel - Faster way to look up multiple columns of data than VLookup in VBA? -
i have large data processing spreadsheet looks component number , loads relevant columns array. using vlookup function, slow function use thousands of times in loop.
my current code section:
set drng = sheets(data).range("d2:as" & imax) on error resume next = 1 7 jmax = sheets(shtname(i)).usedrange.rows.count j = 3 jmax component= sheets(shtname(i)).cells(j, 1).value2 datavar(1) = application.vlookup(component, drng, 32, false) datavar(2) = application.vlookup(component, drng, 35, false) datavar(3) = application.vlookup(component, drng, 42, false) datavar(4) = application.vlookup(component, drng, 11, false) datavar(5) = application.vlookup(component, drng, 15, false) datavar(6) = application.vlookup(component, drng, 24, false) datavar(7) = application.vlookup(component, drng, 18, false) datavar(8) = application.vlookup(component, drng, 38, false) datavar(9) = application.vlookup(component, drng, 21, false) datavar(10) = application.vlookup(component, drng, 29, false) next j next on error goto 0
is there quicker way?
since want multiple columns of information same row, , know columns have information, have find row data on , can reference cells directly. can use match function determine row.
see code:
for = 1 7 jmax = sheets(shtname(i)).usedrange.rows.count j = 3 jmax component = sheets(shtname(i)).cells(j, 1).value2 sheets(quarter) componentrow = worksheetfunction.match(component, .range("d:d"), 0) datavar(1) = .cells(componentrow, 35).value2 datavar(2) = .cells(componentrow, 38).value2 datavar(3) = .cells(componentrow, 45).value2 datavar(4) = .cells(componentrow, 14).value2 datavar(5) = .cells(componentrow, 18).value2 datavar(6) = .cells(componentrow, 27).value2 datavar(7) = .cells(componentrow, 21).value2 datavar(8) = .cells(componentrow, 41).value2 datavar(9) = .cells(componentrow, 24).value2 datavar(10) = .cells(componentrow, 32).value2 end next j next
Comments
Post a Comment