Board logo

標題: [發問] 依據面額不同所需張數自動產生流水編號 [打印本頁]

作者: cypd    時間: 2021-12-9 21:51     標題: 依據面額不同所需張數自動產生流水編號

依據面額不同所需張數自動產生流水編號
希望結果:
[attach]34494[/attach]

C 欄輸入張數...面額100 編號由 A0064565起算
D欄能自動產生所需張數編號  A0064565~A0066053

面額500 編號由 B0081141起算
D欄能自動產生所需張數編號  B0081141~B0084118

請問D欄能自動產生所需張數編號公式該如何設定...

[attach]34495[/attach]
作者: samwang    時間: 2021-12-10 08:33

回復 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
作者: cypd    時間: 2021-12-10 09:35

回復 2# samwang

感謝  samwang  熱心回覆

產生結果如下
[attach]34496[/attach]

似乎產生意外問題...
作者: samwang    時間: 2021-12-10 09:54

回復 3# cypd

我測試沒問題如附件,請再測試看看,謝謝
作者: ikboy    時間: 2021-12-10 10:09

  1. Function zz(面額, 張數)
  2. Dim rng As Range, n&, r&, c&, b, x, i&
  3. r = 張數.Row
  4. c = 張數.Column
  5. b = Cells(1, c + 1).Resize(r - 1)
  6. Select Case 面額
  7.     Case 100: x = "A"
  8.     Case 500: x = "B"
  9. End Select
  10. For i = 1 To UBound(b)
  11.     If Left(b(i, 1), 1) = x Then n = i
  12. Next
  13. If n Then i = Mid(b(n, 1), Application.Find(x, b(n, 1), 2) + 1) Else i = 0
  14. zz = x & Format(i + 1, "0000000") & "-" & x & Format(i + 張數, "0000000")
  15. End Function
複製代碼

作者: hcm19522    時間: 2021-12-10 10:57

https://blog.xuite.net/hcm19522/twblog/590165834
作者: cypd    時間: 2021-12-10 12:28

回復 4# samwang

感謝  samwang  指導
不好意思原來問提出現如下

[attach]34500[/attach]

面額200之張數系100之張數 X 2 所得(問題所在-已手動輸入取消*2)

若是面額計算範圍只至 B18 儲存格,公式該如何修正?
作者: cypd    時間: 2021-12-10 13:35

回復 5# ikboy

非常感謝  ikboy  的指導
關於使用 函數(Function) 之方式...不清楚使用方式

第一筆該如何起始??  =ZZ(B3,C3) (編號 A0064565起算在何處設定?)
作者: cypd    時間: 2021-12-10 13:55

回復 6# hcm19522

感恩 hcm19522  回覆指導

所需流水編號依所指導順利完成...感恩  ^^
作者: samwang    時間: 2021-12-10 14:04

回復 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
作者: ikboy    時間: 2021-12-10 16:05

回復 5# ikboy


    化碼基本上是追蹤對上一次的號碼,在没有的情調下從1開始,若一定在没有對上一次的號碼,要用指定的號碼,可以在 13 行 else 後面的 i 做修改。
作者: cypd    時間: 2021-12-10 22:44

回復 11# ikboy

感謝 ikboy 的說明

針對第一筆面額100流水號由 A0064565起始  =ZZ(B3,C3)

說明 13 行 else 後面的 i 做修改...       
If n Then i = Mid(b(n, 1), Application.Find(x, b(n, 1), 2) + 1) Else i = 64564

提問第二筆面額200流水號由 B0081141起始 ,該數據需在何處修改?
作者: cypd    時間: 2021-12-10 23:01

回復 10# samwang

非常感謝  samwang  指導

上面公式若是 B19 B20 儲存格無數據執行巨集公式答案正常顯示!!

現因 B19 B20 儲存格有相關面額數據(100  200)  如7樓圖
[attach]34503[/attach]

導致上述公式無法正常產生流水編號…該如何修正??感謝
作者: samwang    時間: 2021-12-11 07:37

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

作者: 准提部林    時間: 2021-12-11 19:17

=REPLACE(TEXT(MMULT((IF(B3=100,64564,81140)+SUMIF(B$2:B2,B3,C$2:C2)+C3^{0,1}),10^{7;0}),REPT(IF(B3=100,"A","B")&"0000000",2)),9,,"-")
作者: cypd    時間: 2021-12-13 03:11

回復 14# samwang

不好意思!針對所述問題

依閣下指導公式修改之後執行產生錯誤如下
[attach]34510[/attach]
錯誤訊息
[attach]34511[/attach]

附上檔案供參...

[attach]34512[/attach]
作者: cypd    時間: 2021-12-13 03:22

回復 15# 准提部林

非常感謝  准提部林  指導

將所述公式函數代入面額 100 之流水編號全不正常顯示所需結果

面額  500 之儲存格出現 #VALUE!  之問題

[attach]34513[/attach]

附上問題檔案供參

[attach]34514[/attach]
作者: samwang    時間: 2021-12-13 07:17

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

作者: samwang    時間: 2021-12-13 07:49

回復 16# cypd

18#除了更新列數問題,因為你的B欄除了500元有時又會有200元問題(代碼都是共用B開頭),也有更新此問題,謝謝
作者: 准提部林    時間: 2021-12-13 10:17

回復 17# cypd


不知道是否檔案格式問題,
我這邊重新下拉公式, 或C3重新輸入, 都可以正常!!!
作者: cypd    時間: 2021-12-13 12:24

回復 18# samwang

真是太神奇了  ^^
非常感謝  samwang  不吝指導...感恩

所述問題以迎刃而解還通用面額 200 or  500  之方式公式

再度感謝...水啦
作者: cypd    時間: 2021-12-13 12:28

回復 20# 准提部林

非常感謝  准提部林  指導

所述問題檔案是 office 2013 版本所製作產生
不知問題是否與版本有關?
作者: cypd    時間: 2021-12-13 14:48

回復 20# 准提部林

剛剛測試 office 2010及2013版的版本皆為一樣的問題
是否能請 版主 准提部林  提供正確檔案參考...
作者: 准提部林    時間: 2021-12-13 15:42

回復 23# cypd

2000版做的, 公式及vba各一:
[attach]34515[/attach]
作者: 准提部林    時間: 2021-12-13 16:41

若想100,200,500分別編碼:
Sub 流水編號()
Dim Arr, i&, P%, V&, N&, T1$, T2$, x%, TR, YR, SS&(3)
Arr = Range([c1], [b65536].End(xlUp)(1, 0))
TR = [{"A","F","B"}]
YR = [{64564,38000, 81140}]
For i = 3 To UBound(Arr)
    If Arr(i, 1) = "合計" Then Exit For
    N = N + 1: Arr(i - 2, 1) = ""
    P = Val(Arr(i, 2)): V = Val(Arr(i, 3))
    x = Switch(P = 100, 1, P = 200, 2, P = 500, 3, P = P, 0)
    If P = 0 Or V = 0 Or x = 0 Then GoTo i01
    T1 = TR(x) & Format(YR(x) + SS(x) + 1, "0000000")
    T2 = TR(x) & Format(YR(x) + SS(x) + V, "0000000")
    Arr(i - 2, 1) = T1 & IIf(T1 = T2, "", "-" & T2)
    SS(x) = SS(x) + V
i01: Next i
[d3].Resize(N) = Arr
End Sub
作者: cypd    時間: 2021-12-14 00:39

回復 25# 准提部林

非常感謝  准提部林  提供公式及 VBA 兩種方式做參考

唯一不解的是公式裡出現的 #VALUE! 之問題???

下圖是版主提供的檔案公式工作表呈現一樣的問題

[attach]34516[/attach]
作者: cypd    時間: 2021-12-14 00:58

回復 25# 准提部林

提問
公式中

[attach]34517[/attach]
TR = [{"A","F","B"}]
YR = [{64564,38000, 81140}]

    x = Switch(P = 100, 1, P = 200, 2, P = 500, 3, P = P, 0)

面額100是由A645645起算
面額200是由F38001起算   ???  (是這樣解讀嗎?)
面額500是由B81141起算
作者: 准提部林    時間: 2021-12-14 10:44

回復 27# cypd


是的~~
給變數, 再引用陣列中的元素
作者: cypd    時間: 2021-12-15 01:11

回復 25# 准提部林

若想100,200,500分別編碼:
使用 XX20211213v01(分類流水號) 檔案

所得結果如下:

[attach]34521[/attach]

流水編號並未如其按 100,200,500分別編碼
面額100是由A645645起算
面額200是由F38001起算   ???  (流水編號有問題)
面額500是由B81141起算
作者: 准提部林    時間: 2021-12-15 10:46

回復 29# cypd


應該是你檔案問題, 傳檔案看看~~~
[attach]34523[/attach]
作者: cypd    時間: 2021-12-15 13:01

回復 30# 准提部林

真是太強了!!  感謝 版主 准提部林 ...^^

版主加強了以下公式
Sub 流水編號1()
Dim Arr, i&, P%, V&, N&, T1$, T2$, TT$, x%, Y&, SS(2)
Arr = Range([c1], [b65536].End(xlUp)(1, 0))
For i = 3 To UBound(Arr)
    If Arr(i, 1) = "合計" Then Exit For
    N = N + 1: Arr(i - 2, 1) = ""
    P = Val(Arr(i, 2)): V = Val(Arr(i, 3))
    x = Switch(P = 100, 1, P = 200, 2, P = 500, 2, P = P, 0)
    If P = 0 Or V = 0 Or x = 0 Then GoTo i01
    Y = Array(64564, 81140)(x - 1): TT = Array("A", "B")(x - 1)
    T1 = TT & Format(Y + SS(x) + 1, "0000000")
    T2 = TT & Format(Y + SS(x) + V, "0000000")
    Arr(i - 2, 1) = T1 & IIf(T1 = T2, "", "-" & T2)
    SS(x) = SS(x) + V
i01: Next i
[d3].Resize(N) = Arr
End Sub

所述問題已完美處理...感恩
[attach]34525[/attach]

關於函數公式 REPLACE(TEXT(MMULT((IF(B3=100,64564,81140)+SUMIF(B$2:B2,B3,C$2:C2)+C3^{0,1}),10^{7;0}),REPT(IF(B3=100,"A","B")&"0000000",2)),9,,"-")
[attach]34526[/attach]
此問題有其他方式可修正嗎??
作者: 准提部林    時間: 2021-12-15 17:55

回復 31# cypd


都是最普通的函數, 會有一個正常,一個錯誤值, 也許借別人的電腦試試,
可能要重新安裝EXCEL
作者: cypd    時間: 2021-12-16 00:12

回復 32# 准提部林

非常感謝您

該檔案以
家中桌機*1(WIN7+2013)+筆電*2(WIN10+2013 and WIN7+2016)
公司桌機*1(WIN10+2010)

測試結果面額  500 之儲存格出現 #VALUE!  之問題仍一樣存在...
作者: Andy2483    時間: 2023-11-13 08:43

本帖最後由 Andy2483 於 2023-11-13 16:05 編輯

回復 30# 准提部林


    謝謝論壇,謝謝前輩指導
後學學習前輩的方案,心得註解如下,請前輩再指導

Sub 流水編號1()
Dim Arr, i&, V&, N&, Y&, T1$, T2$, TT$, P%, x%, SS(2)
'↑宣告變數:Arr是通用型變數,(i,V,N,Y)是長整數變數,(T1,T2,TT)是字串變數,
'(P,x)是短整數變數,SS是一維陣列(索引號0~2)

Arr = Range([c1], [b65536].End(xlUp)(1, 0))
'↑令Arr這通用型變數是二維陣列,以[C1]到 B欄最後有內容儲存格左側格(A欄),
'以這範圍儲存格值帶入陣列中

For i = 3 To UBound(Arr)
'↑設順迴圈!i從3到Arr陣列縱向最大索引列號
    If Arr(i, 1) = "合計" Then Exit For
    '↑如果i迴圈列第1欄Arr陣列值是 "合計"? True就結束迴圈執行
    N = N + 1: Arr(i - 2, 1) = ""
    '↑令N這長整數變數累加 1
    '令(i迴圈-1)列第1欄Arr陣列值是 空字元

    P = Val(Arr(i, 2)): V = Val(Arr(i, 3))
    '↑令P這短整數是i迴圈列第2欄Arr陣列值
    '令V這長整數是i迴圈列第3欄Arr陣列值

    x = Switch(P = 100, 1, P = 200, 2, P = 500, 2, P = P, 0)
    '↑令x這短整數是Switch()函式回傳值
    https://learn.microsoft.com/zh-t ... elp/switch-function
    If P = 0 Or V = 0 Or x = 0 Then GoTo i01
    '↑如果P變數是0 或V是0 又或x是0,其中一條件成立!就跳到 標示i01的位置繼續執行
    Y = Array(64564, 81140)(x - 1): TT = Array("A", "B")(x - 1)
    '↑令Y這長整數變數是 一維陣列的索引號(x變數-1)陣列值
    '令TT這字串變數變數是 一維陣列的索引號(x變數-1)陣列值

    T1 = TT & Format(Y + SS(x) + 1, "0000000")
    '↑令T1變數是 TT變數連接 (Y變數+x索引號SS陣列值再+1)轉成7碼數值,所組成的新字串
    T2 = TT & Format(Y + SS(x) + V, "0000000")
    '↑令T2變數是 TT變數連接 (Y變數+x索引號SS陣列值再+V變數)轉成7碼數值,所組成的新字串
    Arr(i - 2, 1) = T1 & IIf(T1 = T2, "", "-" & T2)
    '↑令(i迴圈-2)列第1欄Arr陣列值是 T1變數連接 空字元或 ("-"連接T2變數組成字串)
    'IIf():如果T1變數同T2變數(即張數是1張)!就回傳 空字元,否則回傳字串
    SS(x) = SS(x) + V
    '↑令x變數索引號SS陣列值是 累加V變數的數值
i01: Next i
[d3].Resize(N) = Arr
'↑令[D3]擴展向下 N變數列儲存格值 以Arr陣列值帶入
End Sub
'============================================================

Option Explicit
Sub TEST()
Dim Brr, E, P, Q&, i&, H&, c, K%, S&(1), T$, Ts$, Te$
c = Application.Match("合計", [A:A], 0)
If IsError(c) Then Exit Sub
Brr = [B3].Resize(c - 3, 3)
E = Array(64564, 81140): P = Array("A", "B")
For i = 1 To UBound(Brr)
   Q = Val(Brr(i, 1)): H = Val(Brr(i, 2))
   K = Switch(Q = 100, 0, InStr("200/500", Q), 1, Q = Q, -1)
   T = P(K) & "0000000": Brr(i, 1) = ""
   If (Q = 0) + (H = 0) + (K = -1) < 0 Then GoTo i01
   S(K) = E(K) + 1: E(K) = E(K) + H
   Ts = Format(S(K), T): Te = Format(E(K), T)
   Brr(i, 1) = Ts & IIf(S(K) = E(K), "", "-" & Te)
   S(K) = E(K)
i01: Next
[I3].Resize(UBound(Brr)) = Brr
End Sub
作者: hcm19522    時間: 2023-11-13 11:28

(輸入編號11999) google網址:https://hcm19522.blogspot.com/
作者: cypd    時間: 2023-11-14 15:03

回復 35# hcm19522

感謝 hcm19522  熱心指導
可適用各種幣值張數流水編號呢  ^^
作者: cypd    時間: 2023-11-14 15:15

回復 34# Andy2483

非常感謝  Andy2483 提供的詳細解說程式碼代表含意及相關VBA...
若是因另有需要時
所需面額 同時含有  100  200  500  1000  ...各種面額時(前字軌英文字母各不同)
100(A0000125)  200(B0000100)  500(C0000085)  1000(D0000055)

該如何修正 ??
作者: Andy2483    時間: 2023-11-15 08:43

回復 37# cypd


    謝謝前輩回復
後學藉此帖練習陣列與字典,學習方案如下,請前輩參考
[attach]37012[/attach]
執行前:
[attach]37010[/attach]

執行結果:
[attach]37011[/attach]


Option Explicit
Sub TEST_1()
Dim Brr, Z, C, A(2), P%, Q%, i%, V%, F$, T$, Ts$, Te$
Set Z = CreateObject("Scripting.Dictionary")
C = Application.Match("合計", [A:A], 0)
If IsError(C) Then Exit Sub Else F = "0000000"
Brr = [B3].Resize(C - 3, 3)
A(0) = [{1,2,5,10}]
A(1) = [{124,99,84,54}]
A(2) = [{"A","B","C","D"}]
For i = 1 To UBound(A(0)):
   Q = A(0)(i) * 100: Z(Q) = A(1)(i): Z(Q & "") = A(2)(i)
Next
For i = 1 To UBound(Brr)
   P = Brr(i, 1): V = Z(P): T = Z(P & "")
   Ts = T & Format((V + 1), F)
   V = V + Brr(i, 2): Z(P) = V
   Te = T & Format((V), F)
   Brr(i, 1) = Ts & "-" & Te
Next
[D3].Resize(UBound(Brr)) = Brr
End Sub
作者: cypd    時間: 2023-11-15 14:21

回復 38# Andy2483

再感謝  Andy2483 熱心提供的詳細VBA...
1.新增 J2:L6 面額相關流水編號資訊(希望以此資訊欄位數據為主)
2.面額張數有 0 出現之情形...
3.面額幣值部分 A(0) = [{1,2,5,10}]…Q = A(0)(i) * 100: Z(Q) = A(1)(i): Z(Q & "") = A(2)(i)
  不解為何是 [{1,2,5,10}]…Q = A(0)(i) * 100 的方式?不是直接以 100 200 500 1000…方式呈現

[attach]37013[/attach]

[attach]37014[/attach]
作者: Andy2483    時間: 2023-11-15 16:41

回復 39# cypd


    謝謝論壇,謝謝前輩指導
後學藉此帖練習修改新方案,學習到很多知識,請前輩再指導

[attach]37015[/attach]

執行前:
[attach]37016[/attach]

執行3次:
[attach]37017[/attach]


Option Explicit
Sub TEST_1()
Dim Brr, Z, C, A(2), P1&, P2&, Q%, i&, j%, V&, F$, T$, Ts$, Te$, R&, U%
Set Z = CreateObject("Scripting.Dictionary")
U = [IV2].End(xlToLeft).Column: Brr = Range(Cells(2, U), [H65536].End(3)(1, 2))
For j = 1 To UBound(Brr, 2): Z(Val(Brr(1, j))) = Val(Brr(UBound(Brr), j)): Next
For j = 0 To UBound(Z.KEYS()): Z(Z.KEYS()(j) & "") = Brr(2, j + 1): Next
R = UBound(Brr): C = Application.Match("合計", [A:A], 0)
If IsError(C) Then Exit Sub Else F = Application.Rept("0", 7)
Brr = [B3].Resize(C - 3, 3)
For i = 1 To UBound(Brr)
   P1 = Val(Brr(i, 1)): P2 = Val(Brr(i, 2)): Brr(i, 1) = ""
   If P1 * P2 = 0 Then GoTo i01
   V = Z(P1): T = Z(P1 & ""): If V = 0 Then GoTo i01
   Ts = T & Format((V + 1), F)
   V = V + Brr(i, 2): Z(P1) = V
   Te = T & Format((V), F)
   Brr(i, 1) = Ts & "-" & Te
i01: Next
[D3].Resize(UBound(Brr)) = Brr
Cells(R + 2, "I").Resize(1, U - 8) = Z.ITEMS: Cells(R + 2, "I").Item(1, 0) = Now
End Sub
作者: cypd    時間: 2023-11-15 22:36

本帖最後由 cypd 於 2023-11-15 22:40 編輯

回復 40# Andy2483

非常感謝  Andy2483 提供不同的構思...讚啦 ^^
經實際測試檔案有以下建議

1.截止編號儲存格修正為起始編號...如從 0000001(第一張編號起算)...H5可顯示為截止編號...
2.D3儲存格流水編號從 A0000002-起顯示...錯失第一張流水編號無法使用問題
3.另外可刪除 N 欄 5000 面額 ...

[attach]37018[/attach]

[attach]37019[/attach]
作者: Andy2483    時間: 2023-11-16 09:15

本帖最後由 Andy2483 於 2023-11-16 09:25 編輯

回復 41# cypd


謝謝前輩
1.清除流水號才能新增
2.工作表作保護 (0000)
練習修改方案如下:
[attach]37021[/attach]

執行結果:
[attach]37022[/attach]
作者: cypd    時間: 2023-11-16 15:22

回復 42# Andy2483

感謝前輩  Andy2483 提供相關練習檔...水啦 ^^

測試結果非常 Nice...

若此流水編號檔在插入多列使用時...
希望在合計面額張數統計公式
能在插入多列行時公式能隨增加之範圍自動修正...
[attach]37025[/attach]
作者: Andy2483    時間: 2023-11-17 13:40

回復 43# cypd


    謝謝前輩
以下是另一種思維方案練習,請前輩再指教
可單次使用或 累計資料

[attach]37029[/attach]
執行結果:
[attach]37030[/attach]
作者: cypd    時間: 2023-11-17 21:43

回復 44# Andy2483

感謝前輩  Andy2483 提供不同思維練習檔...讚啦 ^^

可單次使用流水編號記錄
或是希望能累計上次記錄之後繼續沿用的構思均可

另有一事不解的是
使用該檔時一定要取消保護工作表方可執行...(不能在保護工作表狀態下執行?)
作者: Andy2483    時間: 2023-11-18 07:38

本帖最後由 Andy2483 於 2023-11-18 07:50 編輯

回復 45# cypd
謝謝前前輩回覆
1.程式碼裡有關於保護工作表的程序,被單引號 ‘ 變為註解了,請前輩試試看

2. 用在紙鈔流水號太侷限,應該還可以用於各店各廠的取號唯一性
作者: cypd    時間: 2023-11-19 00:49

回復 46# Andy2483

感謝前輩  Andy2483 熱心回復... ^^

1.針對.程式碼裡有關於保護工作表的程序,被單引號 ‘ 變為註解…有點深奧呢

2.另前輩的構思還可以用於各店各廠的取號適用範圍值得取鏡…推




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)