答案 0 :(得分:2)
我不会用VBA来代替VBA,而是Split Text Into Multiple Cells而在Filter / Sort中我会按照新创建的" __ Y"列。
答案 1 :(得分:2)
使用 A1 至 B4 的数据,在 C1 中输入:
=--LEFT(MID(A1,FIND(" ",A1)+1,9999),LEN(MID(A1,FIND(" ",A1)+1,9999))-1)
然后运行Recorded宏:
Sub Macro1()
Range("A1:C4").Select
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C1:C4"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:C4")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
答案 2 :(得分:2)
我总是很喜欢在单元格中存储数字。特别是在Excel中,值得存储,以便进行计算。那么,为什么不用
将数字36(例如)放入单元格中.NumberFormat = """RetValue ""00""Y"""
然后你仍然可以看到RetValue 36Y
,但实际上只有36是单元格的.Value
,你可以进行计算。
不过,要对上表进行排序,没有什么特别要考虑的。由于所有单元格都以相同的字符串开头,因此所有单元格都将正确排序。唯一的“问题”是RetValue 4Y
,因为它不是两位数字。
我再一次尝试正确格式化。如果这不是一个选项,那么我会选择here提供的任何解决方案来提取数字,然后对其进行排序。在此过程中,我(如上所述)仅将数字存储在cell.Value
中,并将其周围的文本换行为.NumberFormat
,以便将来进行更多计算(如有必要)。
之后,您可以使用此解决方案对表进行排序: Sort range without sorting it in a spreadsheet
它允许您在将结果粘贴到工作表或使用UDF(作为数组公式输入)之前,将其排序为内存中的数组。
注意未来:请不要发布图片,而是发布我们可以复制以进行测试的格式化文本。
答案 3 :(得分:0)
可能不需要VBA。
您可以在C列中插入以下公式(假设列A中的RetValue和B列中的值,您的数据从第3行开始)。
= MID(A3,发现("",A3,1)+1,发现(" Y",A3,发现("", A3,1)) - 10)
您可以对C列进行排序。