【发布时间】:2015-06-22 15:14:45
【问题描述】:
我正在使用以下 vba 代码根据单元格 C5 中的值过滤我在 excel 中的行
Sub DateFilter()
'hide dialogs
Application.ScreenUpdating = False
'filter for records that have June 11, 2012 in column 3
ActiveSheet.Range("C10:AS30").AutoFilter Field:=1, Criteria1:="*" & ActiveSheet.Range("C5").Value & "*"
Application.ScreenUpdating = True
End Sub
我的 excel 列如下所示:
A B C
Gold XXX Manchester
Silver TTT London
Black ZZZ Scotland
White WWW Wales
因此,如果我在单元格 C5 中输入单词“Gold”并运行宏,我的行将被过滤,并且只会显示以下内容:
Gold XXX Manchester
但是,现在我希望能够通过将列 a、b 或 c 中的值放入单元格 c5 并过滤行来过滤我的行。
因此,如果我在单元格 c5 中输入字母“TTT”,这将过滤我的行,如下所示:
Silver TTT London
如果我在单元格 c5 中输入威尔士,它会过滤我的行,如下所示:
White WWW Wales
我想做的另一件事是能够根据多个搜索条件过滤我的行,所以如果我将 a、b 和 c 列中的值组合到单元格 c5 中,如下所示:
White WWW Wales
然后我得到以下过滤结果:
White WWW Wales
请有人告诉我如何做到这一点?在此先感谢
【问题讨论】:
-
您希望 Excel 或 VBA 如何知道您的文本适用于哪一列?一旦你弄清楚了,你就会很好地找到解决方案。例如,B 列总是三个字符吗?如果是这样,你可以建立一些逻辑来检查单元格 C5 的长度,如果它等于 3,你知道它适用于 B 列。现在如果有人输入“红色”,你会被卡住,但希望你能解决关于如何处理的一些逻辑(可能是首先检查的颜色列表)。在开始编码之前,您确实需要做出很多设计决策……至少是我的 0.02 美元。
-
添加包含来自这些列的连接字符串并用空格分隔的辅助列。此列将用于过滤,您可以根据需要将其隐藏。还可以尝试不同的选项,例如将搜索字符串中的所有空格替换为 * 等。