i have 2 (non empty) arrays (of variants) numbers. list data in first array , not in second array.
dim existingworkerids() variant dim newworkerids() variant each temp in newworkerids if existingworkerids.contains(temp) ...do sth... end if next temp is possible?
easily doable abusing match.
the first procedure test verification, , example of how things have declared (and conversely, declarations have change if need other variable types, etc).
sub testcaller() dim testarr1() variant ' <~~ variable type must match dim testarr2() variant ' variable required in dim testarr3() variant ' actual procedure dim testarr4() variant testarr1 = array("abc", "abc", "def", "abc", "asdf", "bcd") testarr2 = array("abc", "asdf") call listuniquearraycontents(testarr1(), testarr2()) testarr3 = array(1, 2, 3, 4, 5) testarr4 = array(1, 2) call listuniquearraycontents(testarr3(), testarr4()) end sub sub listuniquearraycontents(arr() variant, arrcompare() variant) dim uniquevalues() variant dim mindex variant dim j integer j = 0 = 0 ubound(arr()) ' reset placeholder our match values mindex = null ' disable errors, otherwise popups every time there's unique value on error resume next ' call match function mindex = application.worksheetfunction.match(arr(i), arrcompare(), 0) ' restore normal error handling on error goto 0 if mindex < 1 or isnull(mindex) ' if match variable null, means value unique ' we'll write value separate array keep track of if j = 0 redim preserve uniquevalues(0 0) if j <> 0 redim preserve uniquevalues(ubound(uniquevalues()) + 1) uniquevalues(ubound(uniquevalues)) = arr(i) j = j + 1 end if next debug.print "--unique values:--" k = lbound(uniquevalues()) ubound(uniquevalues()) debug.print uniquevalues(k) next k debug.print "--end--" end sub which, test examples, gives expected:
--unique values:--
def
bcd
--end--
--unique values:--
3
4
5
--end--
alternatively, can change function , have return array of unique values.
change this:
sub listuniquearraycontents(arr() variant, arrcompare() variant)
to this:
function listuniquearraycontents(arr() variant, arrcompare() variant) variant
and replace last-most for-loop listuniquearraycontents = uniquevalues()
Comments
Post a Comment