Board logo

標題: [發問] 自動往前遞補排程序號 [打印本頁]

作者: Andy2483    時間: 2023-6-30 14:43     標題: 自動往前遞補排程序號

請教各位 如何往前遞補排程序號

需求示意:
[attach]36664[/attach]

[attach]36665[/attach]
作者: shuo1125    時間: 2023-6-30 23:19

本帖最後由 shuo1125 於 2023-6-30 23:29 編輯

回復 1# Andy2483
Andy大好!
程度有限..僅能針對不同項目編序,看有無其他高手出手!
Sub TEST()
    Dim wSht As Worksheet, R&, i&, T$, N&
    Set wSht = Sheets("工作表1")
        R = wSht.Cells(wSht.Rows.Count, "D").End(3).Row
            For i = 2 To R
                If wSht.Cells(i, 4).Value <> T Then
                T = wSht.Cells(i, 4).Value
                N = 1
            End If
                wSht.Cells(i, 5).Value = N
                N = N + 1
            Next i
End Sub
作者: Andy2483    時間: 2023-7-4 07:29

本帖最後由 Andy2483 於 2023-7-4 07:33 編輯

回復 2# shuo1125


    謝謝前輩
方案情境略有不同,極具情境需求者參考價值,方案執行結果如下:

[attach]36673[/attach]
作者: 准提部林    時間: 2023-7-4 10:26

Sub TEST_1()
Dim xR As Range, T$(2), S$(2), N%
For Each xR In Range([a2], [a65536].End(3))
    T(1) = xR: T(2) = xR(1, 2)
    If T(1) <> S(1) Then S(1) = T(1): S(2) = "\\": N = 0
    N = N - (T(2) <> S(2))
    S(2) = T(2)
    xR(1, 3) = N
Next
End Sub

Sub TEST_2()
Dim xR As Range, T$, TT$, S$, SS$, N%
For Each xR In Range([a2], [a65536].End(3))
    T = xR: TT = T & "\" & xR(1, 2)
    N = N * -(T = S) - (TT <> SS)
    S = T: SS = TT
    xR(1, 3) = N
Next
End Sub
作者: shuo1125    時間: 2023-7-4 22:53

回復 4# 准提部林
准大真的是Logic Genius...
作者: Andy2483    時間: 2023-11-8 08:04

回復 4# 准提部林


    謝謝論壇,謝謝前輩指導
以下學習心得註解,請前輩再指導

Sub TEST_1()
Dim xR As Range, T$(2), S$(2), N%
'↑宣告變數:xR變數是 儲存格變數,(T,S)變數是0~2索引號的字串一維陣列,N是短整數
For Each xR In Range([a2], [a65536].End(3))
'↑設迴圈!令xR是 [A2]到A欄最後有內容儲存格範圍之一儲存格
    T(1) = xR: T(2) = xR(1, 2)
    '↑令T陣列1索引號陣列值是xR
    '↑令T陣列2索引號陣列值是xR右1格儲存格值

    If T(1) <> S(1) Then S(1) = T(1): S(2) = "\\": N = 0
    '↑如果T陣列1索引號陣列值與 S陣列1索引號陣列值不同?
    '↑True就令S陣列2索引號陣列值是 "\\"
    '↑令N變數歸零

    N = N - (T(2) <> S(2))
    '↑令N變數於((T陣列2索引號陣列值<> T陣列2索引號陣列值)邏輯值True)時,
    '累加1 註: -(TRUE) = -(-1) = +1

    S(2) = T(2)
    '↑令S陣列2索引號陣列值是 T陣列2索引號陣列值
    xR(1, 3) = N
    '↑令xR右2格儲存格值是 N變數
Next
End Sub

Sub TEST_2()
Dim xR As Range, T$, TT$, S$, SS$, N%
'↑宣告變數:xR變數是 儲存格變數,(T,TT,S,SS)變數是字串變數,N是短整數
For Each xR In Range([a2], [a65536].End(3))
'↑設迴圈!令xR是 A欄儲存格之一
    T = xR: TT = T & "\" & xR(1, 2)
    '↑令T這字串變數是 xR變數值
    '↑令TT這字串變數是 T變數連接"\",再連接xR右1格儲存格值組成的新字串

    N = N * -(T = S) - (TT <> SS)
    '↑令N這短整數變數是 自身乘邏輯值後,再判斷邏輯值True時,累加1
    '1.當 T(機台)<>S(前機台) 時 N * -(T = S)會N*-(0) = N*0 = 0,
    '否則 N*-(-1) = N*1 = N
    '2.當 機台\序號<>前機台\前序號 時,-(TT <> SS) = -(-1) = 1
    '否則 -(TT <> SS) = -(0) = 0
    '3.迴圈一開始的S變數與SS變數都是"",所以(T=S) = FALSE = 0,
    '-(TT <> SS) = -(TRUE) = 1

    S = T: SS = TT
    '↑令S變數值是 T變數值(這是要記住當下機台給下一迴圈比較)
    '↑令SS變數值是 TT變數值(這是要記住組合字串給下一迴圈比較)

    xR(1, 3) = N
    '↑令xR右2格儲存格值是 N變數
Next
End Sub
作者: hcm19522    時間: 2023-11-8 11:03

本帖最後由 hcm19522 於 2023-11-9 12:21 編輯

(輸入編號11979) google網址:https://hcm19522.blogspot.com/




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