返回列表 上一主題 發帖

[發問] 派車表_撥亂轉正

回復 24# BV7BW

請測試看看,謝謝
Sub tt3()
Dim Arr
With Sheets("工作表4")
     With .Range(.[k1], .[a65536].End(3))
         Arr = .Value    '資料裝入Arr
         For i = 2 To UBound(Arr)
             If InStr(Arr(i, 2), "S") Then   '編號有 S
                 Arr(i, 11) = Int(Mid(Arr(i, 2), 4, 3)) & "s"  '編號S,取-以後3碼整數+S,數值裝入Arr(i,11)
             Else
                 Arr(i, 11) = Int(Right(Arr(i, 2), 3))   '除了編號S以外,取最後3碼的整數,數值裝入Arr(i,11)
             End If
         Next
         .Value = Arr 'Arr值貼回excel
         .Sort Key1:=.Item(11), Order1:=1, Header:=1 '以K欄排序
    End With
     .Range("k1:k" & UBound(Arr)) = ""   '清除K欄數值
End With
End Sub

TOP

回復 22# samwang
S大大 你好
工作表4中以編號xx-A001.""A""開頭  'If InStr(Arr(i, 2), "A") Then   '編號有 A
如以""B""或""C""……..開頭.出現錯誤
現以""A""開頭.只能單一運用
如能加上""B"".""C""……….或者只以編號後3碼作為轉換資料基點.而後3碼有S一樣列在最後
這樣運用變化比較靈活
謝謝你 S 大大
敏而好學,不恥下問

TOP

回復 22# samwang

謝謝你 S大大
有註解我可再深入理解
再次謝謝你
敏而好學,不恥下問

TOP

回復 20# BV7BW


註解已補上,請自行調整運用,有問題再討論,謝謝

TOP

回復 20# BV7BW


    Sub tt2()
Dim Arr
With Sheets("工作表4")
    With .Range(.[k1], .[a65536].End(3))
        Arr = .Value    '資料裝入Arr
        For i = 2 To UBound(Arr)
            If InStr(Arr(i, 2), "A") Then   '編號有 A
                Arr(i, 11) = Int(Right(Arr(i, 2), 3))   '取最後3碼的整數,數值裝入Arr(i,11)
            Else
                Arr(i, 11) = Int(Mid(Arr(i, 2), 4, 3)) & "s"  '除了編號A以外的值,取-以後3碼整數+S,數值裝入Arr(i,11)
            End If
        Next
        .Value = Arr 'Arr值貼回excel
        .Sort Key1:=.Item(11), Order1:=1, Header:=1 '以K欄排序
    End With
    .Range("k1:k" & UBound(Arr)) = ""   '清除K欄數值
End With
End Sub

TOP

回復 19# samwang
謝謝 S 大大
正是需求無誤
已可以由編號後2碼整合
在請問.如需用3碼.可再幫程式後加上註解?
** For i = 2 To UBound(Arr)**
敏而好學,不恥下問

TOP

回復 18# BV7BW


請再試看看,謝謝
Sub tt()
Dim Arr
With Sheets("工作表4")
    With .Range(.[k1], .[a65536].End(3))
        Arr = .Value
        For i = 2 To UBound(Arr)
            If InStr(Arr(i, 2), "A") Then
                Arr(i, 11) = Int(Right(Arr(i, 2), 3))
            Else
                Arr(i, 11) = Int(Mid(Arr(i, 2), 4, 3)) & "s"
            End If
        Next
        .Value = Arr
        .Sort Key1:=.Item(11), Order1:=1, Header:=1
    End With
    .Range("k1:k" & UBound(Arr)) = ""
End With
End Sub

TOP

本帖最後由 BV7BW 於 2021-4-12 21:01 編輯

回復 17# samwang

S大大你好
工作表4剛剛你是以"01-A001"."02-A008.".03-A003....以編號前2碼(01)順序排列
需求是以"01-A001"."08-A002".""03-A003"以編號後(01)後2碼作為順序排列
敏而好學,不恥下問

TOP

回復 16# BV7BW


請問什麼是"客戶編號後2碼"?  有範例嗎?

TOP

回復 14# samwang
S大大 你好

1)向你報告已完全不會當機
正常運作

2)再向 S 大大說明
1)客戶編號前2碼數字大小進行重整後
要再重新恢復由客戶編號後2碼數字大小排序
如 A001 A002 A003 …最後是 有S編號在排序最後
現S大大是以客戶編號前2碼大小排序
我需求是以客戶編號後2碼做排序

再次謝謝 S大大
敏而好學,不恥下問

TOP

        靜思自在 : 太陽光大、父母恩大、君子量大,小人氣大。
返回列表 上一主題