返回列表 上一主題 發帖

[發問] 在一筆資料裡面 去掉0 & 空格 然後重新排序

[發問] 在一筆資料裡面 去掉0 & 空格 然後重新排序

請問一下,需要把資料裡面的0與空格去除,然後從小到大排序
自己寫了一個VBA程式,但是發覺資料是小筆數時沒有問題,可以去掉0跟空格 然後從小到大排好
但是筆數超過一萬筆之後,會發現那些資料只有某部分有部在去掉0跟重新排序,剩下的則會補上 #N/A
不知道是程式哪個部分出現問題了,
請問是否能幫忙修改程式碼,謝謝,感恩 :) :)

去0和空格 從小大到排序.rar (831.35 KB)

程式碼:
Sub 排序()
Application.ScreenUpdating = False

Dim myarr() As Variant
a = Application.WorksheetFunction.CountA(Range("B2:B100000"))
ReDim myarr(a) As Variant
Dim Rng As Range

k = 0
For i = 2 To Range("A2").End(xlDown).Row
    If Cells(i, "B") <> 0 And Cells(i, "B") <> "" Then
       myarr(k) = Cells(i, "B")
       k = k + 1
    End If
Next

[B2:B1048576].Clear

        Set Rng = Range("B2").Resize(k)
        Rng.Value = Application.Transpose(myarr)
        Rng.Sort key1:=Rng(1), order1:=xlAscending, Header:=xlNo
  
Application.ScreenUpdating = True

End Sub

Sub 排序()
With Range([B2], Cells(Rows.Count, 2).End(xlUp))
     .Replace "0", "", Lookat:=xlWhole
     .Sort key1:=.Item(1), order1:=xlAscending, Header:=xlNo
End With
End Sub
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 2# 准提部林

謝謝  准版主的回覆
剛剛測試過後,程式效率非常高,程式碼非常簡潔 感恩
另外有問題想請教 : 程式碼裡面有 Lookat:=xlWhole  ==> 這個是做甚麼用的呢?
謝謝

TOP

回復 3# bomber1224

Lookat:=xlWhole  完全比對

102
0
2300

只會將0取代為空, 102及2300中的0不取代

Lookat:=xlPart  部份比對
102 >> 12
0 >> 空白
2300 >> 23
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 4# 准提部林


原來如此阿!! 謝謝你的回答,  感恩

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題