返回列表 上一主題 發帖

[發問] 數量分拆隔行問題。

[發問] 數量分拆隔行問題。

工作表1是我從另外一個工作表 複製得來的。
要用這個工作表與word 做郵件合併, 但我需將Qty處 拆分 為 3000一行。
因用郵件合併後,打印出來, 貼在相關貨物上, 將大於3000的數量除3000, 尾數最大要在100內。

即是尾數最大3100 內 當一行, 多於3100 則分拆多一行。 同時因word 內有一個A4 SIZE的 郵件合併。
一張A4 紙, 有四個小四方格。

所以拆數後,同時再分 Name, 為 4行一張A4紙。不足4行的,也要分拆行數出來。
因為Name 是不同貨物,不能 與之前的資料合併。否則會亂。

本身已經有VBA 資料,當我點擊按鈕後(VBA),會自動新增一頁同時執行以上要求動作。 例如工作表2

因為已經是鎖定了3000, 及尾數最大3100。

那如果我增加一欄是要依照 H欄,Color 來做拆數。  (工作表3)

如果H欄為"RED" 的話, 則拆1000。 尾數最大:1100。

如果H欄為"YELLOW" 的話,則拆3000, 尾數最大:3100。


一張工作表只存在 兩種  Color, 但是不一定像工作表3 那樣, 有機會第20-25列是RED.
26-30 又是YELLOW, 這樣, 而GROUP1 和 GROUP2 是一定與color 成一組的。

第二至第七列 是RED 配GROUP1
第八至第十九 是YELLOW 配GROUP2

不會存在GROUP1 中存在有2個 clolor 即是不會1有RED 和YELLOW 同時存在。




如何依照 工作表3 跟Color 來做拆數及分行?  (工作表4)

因資料有多有少, 而且不止 GROUP1
question.zip (27.45 KB)

Sub 分拆數量()
Dim Arr, Brr, i&, j%, k%, C&, Qty&, U&, V&, N&
Arr = Range([I1], [A65536].End(xlUp))
ReDim Brr(1 To 30000, 1 To 9)
For i = 2 To UBound(Arr)
    If i > 2 And Arr(i, 9) <> Arr(i - 1, 9) Then N = N + 1
    C = 3000: If Arr(i, 8) = "RED" Then C = 1000
    Qty = Arr(i, 4): U = 0
    For j = 1 To Int((Qty - 1) / C) + 1
        N = N + 1
        For k = 1 To 9: Brr(N, k) = Arr(i, k): Next
        Brr(N, 5) = U + 1
        V = IIf(Qty > C, C, Qty)
        U = U + V
        Qty = Qty - V
        Brr(N, 6) = U + IIf(Qty > 100, 0, Qty)
        Brr(N, 7) = V + IIf(Qty > 100, 0, Qty)
        If Qty <= 100 Then Exit For
    Next j
Next i
Sheets(1).[A1:I1] = Arr
Sheets(1).[A2:I3].Resize(N) = Brr
End Sub


====================================

TOP

本帖最後由 hcm19522 於 2020-7-18 16:14 編輯

回復 2# 准提部林

請教 "准大"  找思路
數據只有A2  B2:B21 均不固定 ,D F因公式太長 ,求精簡
https://blog.xuite.net/hcm19522/twblog/589232991
google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

回復 3# hcm19522


RANDBETWEEN 我的版本(2000)無法構成陣列, 所以, 這種題我大都不答,
實際運用, 還是用rand做輔助吧! 不想在日常用不到的公式上做文章~~

TOP

回復 4# 准提部林


    謝謝 ! 謝謝!
google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

        靜思自在 : 道德是提昇自我的明燈,不該是呵斥別人的鞭子。
返回列表 上一主題