我是VBA的新手并尝试自动过滤列范围。该列名为" Vlookup"并位于指数位置27.
rData.AutoFilter field:=27, Criteria1:="Class" ' filter criterion
为了使这个动态化,我需要能够根据列名而不是列索引进行过滤。
但是,当我这样做时
rData.AutoFilter field:=Application.Match("Vlookup", Selection.Rows(1), 0), Criteria1:="Class" ' filter criterion
我屈服
运行时错误' 424' - 需要对象
如何在VBA中按列名正确Autofilter
答案 0 :(得分:4)
不知道选择了什么选项,但是我们遇到了类似的问题,我们发现使用表作为数据很简单,然后使用Field:= Listobject.ListColumns(“ Column Name”)。Index。这样,您的解决方案就是动态的。
ggplot(pres_munic, aes(Year, Number)) + facet_wrap(~ Municipality) + geom_bar(aes(fill = Nationality),
width = 0.4, position = position_dodge(width=0.5), stat="identity") +
theme(legend.position="top", legend.title =
element_blank(),axis.title.x=element_blank(),
axis.title.y=element_blank())
答案 1 :(得分:3)
您可以使用Find
功能查找" Vlookup"在标题行中,然后检索Column
的数值。
注意:无需使用Selection
,而是使用Rows(1)
工作表对象完全限定rData
(使用{{ 1}}陈述)。
请参阅下面的代码和评论:
With rData
答案 2 :(得分:2)
您可以使用将返回列索引的辅助UDF:
Function GetIndex(colName As String)
GetIndex = WorksheetFunction.Match(colName, ActiveSheet.AutoFilter.Range.Rows(1), 0)
End Function
<强> UPD 强>
您可以将ActiveSheet
替换为您的工作表。