2017-06-14 58 views
1

我有一个Excel工作表来筛选列。该栏涉及一个人的总体经验。这些值是5年2个月,32年6个月等...所有的值都是字符串格式。我需要以下功能。如何筛选包含日期/时间字符串的excel列

    1. 当我在文本框(我将在表单创建)进入> 5,应该只显示其是小于5(过滤)的体验。我需要一个想法如何在vba中做到这一点。

谁能帮助..?我只需要一种方法来做到这一点。

Screenshot of the column

+0

'''符号的意思是'大于',而不是'小于'。如果输入'> 5',则表示“大于5”,而不是“小于5”。除了这些理解操作符符号的基础知识之外,您不需要指定'5'应该应用的单位。几年或几个月?本表中的数据结构非常不幸,特别是因为数字和单位文本之间没有空格。谁创造了这样不好的数据?为什么? – teylyn

+0

使用整数可能会更容易几个月,如38年3年和2个月,但至少使用一致的单位来确定持续时间。使用像这样的文本字段来表示一个可以用数字表示的值是非常不明智的。你会更好地改变持续时间的存储方式,而不是试图找到一个复杂的VBA例程,将文本重新拼接成数字值。 – teylyn

+0

真的很抱歉,我的意思是@teylyn大于5年。你手上有那么复杂的程序吗?像分裂一年,然后将它添加到整数形式的列表A中,然后删除所有小于5的值再次使用列表A中的值过滤Excel。这是可能的VBA ..? –

回答

3

考虑下面的屏幕截图。专栏a有不幸的文字与年和月。

enter image description here

B栏打出了多年。 C列将这几个月分开。 D列在时间范围内具有总月数。有了这个功能,您可以使用内置在Excel表格中的Autofilter的过滤器选项来过滤任何列。

的计算公式如下:

年:=MID([@total],1,FIND("Years",[@total])-1)+0

月:=MID(SUBSTITUTE([@total],"Months",""),FIND(" ",[@total])+1,99)+0

期限在三个月:=([@years]*12)+[@months]

现在只需使用过滤器的下拉栏的butttons头文件,并且完全不需要VBA。

相关问题