返回列表 上一主題 發帖

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

回復 9# BV7BW

把 Range([工作表4!A65535].End(3), [工作表4!J2]).Sort [工作表4!F2], 1, Key2:=[工作表4!B2], Header:=2 這行移出來

另外加一個 sub 就可以了

TOP

回復 11# 軒云熊


    謝謝熊大大
剛剛我也去做這動作...哈 真謝謝你

在借這地方
向各位先進.前輩.老師說"謝謝"
去年6月的我從0開始學EXCEL
承蒙 准大 老師 .J大老師. S大老師 熊大老師及各位先進前輩們
詳細指導.真的非常感謝大家.謝謝大家.謝謝
敏而好學,不恥下問

TOP

回復 11# 軒云熊
熊大大你好
有幾個問題請教

1)工作表1.當客戶只有1位時.會比對不到.因而會當機

2)工作表4.重整後.可以要在重整回.照客戶編號後2碼大小順序排列.如後碼是S時就排列最後
原本是以客戶前2碼為基點重整..
現需求要重整回以客戶編號後2碼為基點重整
再次謝謝 熊大大
敏而好學,不恥下問

TOP

回復 13# BV7BW


1)工作表1.當客戶只有1位時.會比對不到.因而會當機
>> 如下,請測試看看,謝謝
Sub test()
Dim Arr, i&, N%
Application.ScreenUpdating = False
[E65535:G3].ClearContents
With Sheets("工作表1")
    With .Range(.[A1], .[D65536].End(3))
        Arr = .Value
        For i = 3 To UBound(Arr)
            N = N + 1
            Arr(N, 1) = Arr(i, 1)
            Arr(N, 2) = Arr(i, 2)
            Arr(N, 3) = Mid(Arr(i, 3), 1, 2)
        Next
        If N > 0 Then
            With .Range("E3").Resize(N, 3)
                .Value = Arr
                .Sort Key1:=.Item(3), Order1:=1, Header:=2
                For i = 1 To N: .Cells(i, 3) = "A" & i: Next
            End With
        End If
    End With
End With
Application.ScreenUpdating = True
End Sub


2)工作表4.重整後.可以要在重整回.照客戶編號後2碼大小順序排列....
是這樣嗎?
Range([工作表4!A65535].End(3), [工作表4!J2]).Sort Key1:=[工作表4!B2], Header:=2

TOP

回復 14# samwang
謝謝 S大
我先測試後再向你報告
先謝謝你S大大
敏而好學,不恥下問

TOP

回復 14# samwang
S大大 你好

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

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

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

TOP

回復 16# BV7BW


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

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

回復 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

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

TOP

        靜思自在 : 忘功不忘過,忘怨不忘恩。
返回列表 上一主題