2016-05-17 59 views

回答

2

我总是在细胞中存储号码的忠实粉丝。特别是在Excel中,为了进行计算,值得存储。那么,你为什么不把与

.NumberFormat = """RetValue ""00""Y""" 

细胞只是36号(举例来说),那么你仍然能看到RetValue 36Y但实际上只有36个是小区的.Value和你被允许进行计算。

尽管如此,排序你的上表没有什么特别的考虑。由于所有的单元格都是以相同的字符串开始的,因此所有的单元格都会正确地进行排序唯一的“问题”将是RetValue 4Y,因为它不是两位数字。

再次尝试格式化它。如果这不是一个选项,那么我会提供here提供的任何解决方案来提取数字,然后对其进行排序。在这个过程中,我会(如上所述)仅将该号码存储在cell.Value中,并将其围绕文本包装为.NumberFormat以允许将来进行更多计算(如有必要)。

之后,可以用这种溶液,例如对表进行排序: Sort range without sorting it in a spreadsheet

它给你的选项它排序为在存储器阵列中的结果粘贴到片材之前或使用UDF(输入作为数组公式)。

未来的注意事项:请不要发布图片,而是发布格式化文本,我们可以复制测试。

+0

一个美丽的想法! *(+ 1)* –

0

此VBA可能不是必需的。

您可以在列C中插入以下公式(假设列A中的RetValue和列B中的值并且数据从第3行开始)。

= MID(A3,FIND( “ ”A3,1)+1,FIND( “Y”,A3,FIND(“”,A3,1)) - 10)

可排序上柱C.

2

随着通过B4A1数据,在C1输入:

=--LEFT(MID(A1,FIND(" ",A1)+1,9999),LEN(MID(A1,FIND(" ",A1)+1,9999))-1) 

,然后运行该录制的宏:

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 

enter image description here

+0

为什么你发布“新”排序代码,当你和我在这里准备包括UDF这样伟大的排序代码:http://stackoverflow.com/questions/37239107/sort-range-without-sorting-it-in-a-电子表格/ 37239386#37239386 – Ralph

+0

@Ralph在这种特殊情况下,我想强调使用Recorded代码以及“helper”列.................但是您的方法很明确最好的答案! –

+0

当然,你是对的。宏记录器是一个经常被遗忘,并没有足够的用于大多数基本VBA代码的助手*(+ 1)* – Ralph

相关问题