我无法使用从其他工作表中抓取的用户ID列表对工作表进行高级过滤。代码有效,但是当我有2个以相同字符开头的userID时会出现问题。例如,如果我列表中的某个用户是mmiller2,我的过滤器还包括mmiller21。是否有一种简单的方法来调整下面的代码来过滤UserID列表中的确切值?谢谢!
' Filter data by userID
lastRow = Sheets("Users").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Data").Columns("C:C").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sheets("Users").Range("A1:A" & lastRow), Unique:=False
使用解决方案进行编辑:
我最终使用了#34;帮助"专栏来完成这个。有趣的是,在测试期间,我以这种格式在辅助列中手动输入值:=" = mmiller"它有效,但使用它将其转换为vba不起作用:
Sheets("Users").Range("A2:A" & lastRow).FormulaR1C1 = "=CONCATENATE(""="",CHAR(34),""="",RC[1],CHAR(34))"
当我查看输出时,单元格显示的实际公式=" = mmiller"所以我只是使用vba将= mmiller放在单元格中,这很有效。
工作代码:
' Add Username helper column for EXACT username filtering
Sheets("Users").Columns("A:A").Insert Shift:=xlToRight
Sheets("Users").Range("A1").FormulaR1C1 = "UserID"
lastRow = Sheets("Users").Cells(Rows.Count, 2).End(xlUp).Row
Sheets("Users").Range("A2:A" & lastRow).FormulaR1C1 = "=CONCATENATE(""="",RC[1])"