2013-02-27 38 views
1

我有包含下列字符串的範圍:數字升序通過VBA包含字符串排序範圍練成

step_1,step_10,step_3,使用以下代碼

input_sh.Activate 
With ActiveSheet 
    .Range("H2:H20").Select 
    .Sort.SortFields.Clear 
    .Sort.SortFields.Add Key:=Range("H2"), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers 'xlSortNormal 
With .Sort 
     .SetRange Range("H2:H20") 
     .Header = xlNo 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
End With 

step_10 step_2

,step_1,step_2,step_3

但我想要得到

step_1,step_2,step_3,step_10

+1

您需要編寫自定義排序算法。這取決於你希望如此通用 - 是否有一個很好的理由,你不能簡單地將'String'值更改爲'Step_01'等 – JustinJDavies 2013-02-27 12:13:31

+0

我試圖改變字符串,因爲你建議,但我得到相同的結果。 – 2013-02-27 13:17:26

+0

字符串是從特定目錄中提取的文件名,所以我無法修改它們。 – 2013-02-27 13:22:18

回答

0

我會將數字分成另一列,最後一個+1,使用中間函數並對其進行排序。


編輯:我不是在我的電腦,但我認爲你唯一做到這一點的方法是設置一個宏:

  1. 第一9.
  2. 切濾波器您的工作表並在第2行之前插入它們。
  3. 將它們自行排序。
  4. 然後刪除過濾器並按照上面的方式對其餘部分進行排序。
+0

我想到這樣做,但我希望我不必下定決心。 – 2013-02-27 13:15:56

+0

你能夠覆蓋那裏的值嗎?或者他們是否需要這種格式? – glh 2013-02-28 02:34:45

+0

它們是文件夾中的文件名。他們必須以這種格式 – 2013-02-28 08:29:44

0

你的字符串有下劃線後跟數字。如果這將是你的字符串的格式,你可以簡單地使用「_」作爲分隔符將字符串拆分爲字符串。稍後,您可以進行排序和連接以獲取排序的字符串列表。

enter image description here

Sub Sample() 


     Columns(1).Copy Columns(3) 

     Columns("C:C").Select 
     Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _ 
           TextQualifier:=xlDoubleQuote, Other:=True, OtherChar:="_", FieldInfo:=Array(Array(1, 1), Array(2, 1)) 

     Columns("D:D").Sort Range("D1") 

     i = 1 
     Do While Not IsEmpty(Range("C" & i)) 
      Range("B" & i) = Range("C" & i) & "_" & Range("D" & i) 
      i = i + 1 
     Loop 

    End Sub 
0

感謝每一個給你的貢獻。 給用戶我在閱讀你的建議之前找到了我的解決方案。無論如何感謝你的努力

我的解決方案:

  • 分裂海峽爲「_」
  • 寫第二個索引旁邊的文件名由再訂購2日的cols山坳僅有數
  • 乾淨山坳與數字
+0

由於我懷疑需要什麼......;) – glh 2013-02-28 10:31:14

+0

這是什麼建議..... :-) – 2013-02-28 10:36:54

相關問題