返回列表 上一主題 發帖

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

回復 20# 准提部林

非常感謝  准提部林  指導

所述問題檔案是 office 2013 版本所製作產生
不知問題是否與版本有關?

TOP

回復 20# 准提部林

剛剛測試 office 2010及2013版的版本皆為一樣的問題
是否能請 版主 准提部林  提供正確檔案參考...

TOP

回復 25# 准提部林

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

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

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

TOP

回復 25# 准提部林

提問
公式中


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起算

TOP

回復 25# 准提部林

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

所得結果如下:



流水編號並未如其按 100,200,500分別編碼
面額100是由A645645起算
面額200是由F38001起算   ???  (流水編號有問題)
面額500是由B81141起算

TOP

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

所述問題已完美處理...感恩


關於函數公式 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,,"-")

此問題有其他方式可修正嗎??

TOP

回復 32# 准提部林

非常感謝您

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

測試結果面額  500 之儲存格出現 #VALUE!  之問題仍一樣存在...

TOP

回復 35# hcm19522

感謝 hcm19522  熱心指導
可適用各種幣值張數流水編號呢  ^^

TOP

回復 34# Andy2483

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

該如何修正 ??

TOP

回復 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…方式呈現



20231115+.rar (13.5 KB)

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題