返回列表 上一主題 發帖

[發問] Excel VBA條件排序問題

回復 20# Kubi


所以是,以後面的排序完成後,再將資料刪除囉?

TOP

回復 21# 蒼雪
是啊~排序完成後,就不需要再留存無用的資料囉。

另外以模擬資料的方式,加寫兩支不用自訂清單的排序程式,1支是只用1個輔助欄來排序,另外1支是不用
輔助欄來排序,有興趣的話請下載參考。
還有,以上均沒有加寫防呆程式碼喔,若有Bug請自行除錯。
Excel VBA條件排序.rar (20.04 KB)

TOP

回復 22# Kubi


抱歉,想再多問個問題。

若是條件排序完成後,我可以選擇哪些資料要留下嗎?

例︰ 排序後
L20[2/E]S  
L20[3.5/B.5]E
L20[7/C]N  
L20[7.5/B.5]S
L20[9/C]N
L20[15.5/D]N
L20[15.5/F.5]N  
L20[19/F]N         
L20[21/E]N

而我要的資料 第一個判別留下的為 L20,第二個為 7~16之間的數字,第三個為 A~F.5 之間的英文。
其餘的資料則Delete。

還懇請大大指教,謝謝。

TOP

回復 23# 蒼雪
請參考。
Sub test()
    arr = Array("L20", "L10", "L30")
    Application.ScreenUpdating = False
    er = [C65536].End(3).Row
    For r = 2 To er
        L = Application.Match(Split(Cells(r, 3).Value, "[")(0), arr, 0)
        N = Format(Split(Split(Cells(r, 3).Value, "/")(0), "[")(1), "00.0")
        E = Left(Split(Split(Cells(r, 3).Value, "/")(1), "]")(0), 1)
        If L = 1 And N >= 7 And N <= 16 And Asc(E) >= 65 And Asc(E) <= 70 Then
            Cells(r, 5).Value = L & N & E
        End If
    Next r
    Range("E2:E" & er).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Range("A2:E" & er).Sort Key1:=[E2]
    Columns("E").ClearContents
    Application.ScreenUpdating = True
End Sub

TOP

回復 24# Kubi


    太強大了,讓我學到好多。
    像是 Application不用 WorksheetFunction 可以直接使用sum ...等語法。

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題