返回列表 上一主題 發帖

[發問] 依據面額不同所需張數自動產生流水編號

回復 1# cypd

請測試看看,謝謝
Sub test()
Dim Arr, xD, Brr, T, T1, TT$, ck%, ck1%, i&
Set xD = CreateObject("Scripting.Dictionary")
With Range([D2], [B65536].End(3))
    Brr = .Value
    .Sort Key1:=.Item(1), Order1:=1, Header:=1
    Arr = .Value
    For i = 2 To UBound(Arr)
        TT = Arr(i, 1) & "|" & Arr(i, 2)
        If Arr(i, 1) = 100 Then
            If ck = 0 Then
                T = 64565
                Arr(i, 3) = "A00" & T & "-" & Format(T + Arr(i, 2) - 1, "A0000000")
                ck = 1: T1 = T + Arr(i, 2): xD(TT) = Arr(i, 3)
            Else
                Arr(i, 3) = "A00" & T1 & "-" & Format(T1 + Arr(i, 2) - 1, "A0000000")
                T1 = T1 + Arr(i, 2): xD(TT) = Arr(i, 3)
            End If
        ElseIf Arr(i, 1) = 500 Then
            If ck1 = 0 Then
                T = 81141
                Arr(i, 3) = "B00" & T & "-" & Format(T + Arr(i, 2) - 1, "B0000000")
                ck1 = 1: T1 = T + Arr(i, 2): xD(TT) = Arr(i, 3)
            Else
                Arr(i, 3) = "B00" & T1 & "-" & Format(T1 + Arr(i, 2) - 1, "B0000000")
                T1 = T1 + Arr(i, 2): xD(TT) = Arr(i, 3)
            End If
        End If
    Next
    For i = 2 To UBound(Brr): TT = Brr(i, 1) & "|" & Brr(i, 2): Brr(i, 3) = xD(TT): Next
    .Value = Brr
End With
End Sub

TOP

回復 3# cypd

我測試沒問題如附件,請再測試看看,謝謝

依據面額不同所需張數自動產生流水編號_1210.zip (25.5 KB)

TOP

回復 7# cypd

面額200之張數系100之張數 X 2 所得(問題所在-已手動輸入取消*2)
>> 修改如下紅字,請測試看看,謝謝

Sub test()
Dim Arr, xD, Brr, T, T1, TT$, ck%, ck1%, i&
Set xD = CreateObject("Scripting.Dictionary")
With Range([D2], [B65536].End(3))
    Brr = .Value
    .Sort Key1:=.Item(1), Order1:=1, Header:=1
    Arr = .Value
    For i = 2 To UBound(Arr)
        TT = Arr(i, 1) & "|" & Arr(i, 2)
        If Arr(i, 1) = 100 Then
            If ck = 0 Then
                T = 64565
                Arr(i, 3) = "A00" & T & "-" & Format(T + Arr(i, 2) - 1, "A0000000")
                ck = 1: T1 = T + Arr(i, 2): xD(TT) = Arr(i, 3)
            Else
                Arr(i, 3) = "A00" & T1 & "-" & Format(T1 + Arr(i, 2) - 1, "A0000000")
                T1 = T1 + Arr(i, 2): xD(TT) = Arr(i, 3)
            End If
        ElseIf Arr(i, 1) = 200 Then
            If ck1 = 0 Then
                T = 81141
                Arr(i, 3) = "B00" & T & "-" & Format(T + Arr(i, 2) - 1, "B0000000")
                ck1 = 1: T1 = T + Arr(i, 2): xD(TT) = Arr(i, 3)
            Else
                Arr(i, 3) = "B00" & T1 & "-" & Format(T1 + Arr(i, 2) - 1, "B0000000")
                T1 = T1 + Arr(i, 2): xD(TT) = Arr(i, 3)
            End If
        End If
    Next
    For i = 2 To UBound(Brr): TT = Brr(i, 1) & "|" & Brr(i, 2): Brr(i, 3) = xD(TT): Next
    .Value = Brr
End With
End Sub

TOP

回復 13# cypd

現因 B19 B20 儲存格有相關面額數據(100  200)  如7樓圖
>>請測試看看,謝謝
Sub test()
Dim Arr, xD, Brr, T, T1, TT$, ck%, ck1%, i&
Set xD = CreateObject("Scripting.Dictionary")
With Range([D2], [B65536].End(3)-2)
    Brr = .Value
    .Sort Key1:=.Item(1), Order1:=1, Header:=1
    ...
    ...

TOP

回復 16# cypd
依閣下指導公式修改之後執行產生錯誤如下
>> 請再測試看看,謝謝
Sub test()
Dim Arr, xD, Brr, T, T1, TT$, ck%, ck1%, i&
Set xD = CreateObject("Scripting.Dictionary")
With Range("b2:d" & [B65536].End(3).Row - 2)
    Brr = .Value
    .Sort Key1:=.Item(1), Order1:=1, Header:=1
    Arr = .Value
    For i = 2 To UBound(Arr)
        TT = Arr(i, 1) & "|" & Arr(i, 2)
        If Arr(i, 1) = 100 Then
            If ck = 0 Then
                T = 64565
                Arr(i, 3) = "A00" & T & "-" & Format(T + Arr(i, 2) - 1, "A0000000")
                ck = 1: T1 = T + Arr(i, 2): xD(TT) = Arr(i, 3)
            Else
                Arr(i, 3) = "A00" & T1 & "-" & Format(T1 + Arr(i, 2) - 1, "A0000000")
                T1 = T1 + Arr(i, 2): xD(TT) = Arr(i, 3)
            End If
        Else
            If ck1 = 0 Then
                T = 81141
                Arr(i, 3) = "B00" & T & "-" & Format(T + Arr(i, 2) - 1, "B0000000")
                ck1 = 1: T1 = T + Arr(i, 2): xD(TT) = Arr(i, 3)
            Else
                Arr(i, 3) = "B00" & T1 & "-" & Format(T1 + Arr(i, 2) - 1, "B0000000")
                T1 = T1 + Arr(i, 2): xD(TT) = Arr(i, 3)
            End If
        End If
    Next
    For i = 2 To UBound(Brr): TT = Brr(i, 1) & "|" & Brr(i, 2): Brr(i, 3) = xD(TT): Next
    .Value = Brr
End With
End Sub

TOP

回復 16# cypd

18#除了更新列數問題,因為你的B欄除了500元有時又會有200元問題(代碼都是共用B開頭),也有更新此問題,謝謝

TOP

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題