返回列表 上一主題 發帖

[發問] 兩個條件數量分拆及隔行。

[發問] 兩個條件數量分拆及隔行。

本帖最後由 stephenlee 於 2019-12-28 10:19 編輯

大家好,我有一個工作表,是要按數量的大小來分隔列數及數量。


以下圖為例,我需要以M欄的分拆數量和列數。

擷取1.JPG
2019-12-28 10:08




目前已有VBA的代碼。

Private Sub CommandButton1_Click()

    On Error Resume Next
   
    Dim X As Long
    Dim Y As Long
    Dim Z As Long
    Dim K As Long
    Dim N As Long
   
    '----------------------------------------
   
    Dim 來源工作表 As Worksheet
   
    Set 來源工作表 = ActiveSheet
   
    '----------------------------------------
   
    Dim 新增工作表 As Worksheet
   
    Set 新增工作表 = Worksheets.Add(Worksheets(1))
   
    新增工作表.Rows(1).Value = 來源工作表.Rows(1)
    新增工作表.Cells(1, 19).Value = "換頁"
   
    '----------------------------------------
   
    Dim 商數 As Long
    Dim 餘數 As Long
    Dim 空列 As Long
   
    N = 1
    For X = 2 To 來源工作表.Cells(Rows.Count, 13).End(xlUp).Row
        商數 = 來源工作表.Cells(X, 13).Value \ 3000
        餘數 = 來源工作表.Cells(X, 13).Value Mod 3000
        
        Select Case 商數
            Case 0
                商數 = 1
            Case Else
                Select Case 餘數
                    Case Is < 100
                        '商數 = 商數
                    Case Else
                        商數 = 商數 + 1
                End Select
        End Select
        
        '----------------------------------------
        
        For Z = 1 To 商數
            N = N + 1
            
            For Y = 1 To 19
                Select Case Y
                    Case 1 To 13, 17, 18
                        新增工作表.Cells(N, Y) = 來源工作表.Cells(X, Y)
                    Case 14
                        新增工作表.Cells(N, Y) = 3000 * (Z - 1) + 1
                    Case 15
                        If Z = 商數 Then
                            新增工作表.Cells(N, Y).Value = 來源工作表.Cells(X, Y).Value
                        Else
                            新增工作表.Cells(N, Y).Value = 3000 * Z
                        End If
                    Case 16
                        If Z = 商數 Then
                            新增工作表.Cells(N, Y).Value = 來源工作表.Cells(X, Y).Value - 3000 * (Z - 1)
                        Else
                            新增工作表.Cells(N, Y).Value = 3000
                        End If
                    Case 19
                        If Not 新增工作表.Cells(N, 17).Value = 新增工作表.Cells(N - 1, 17).Value And N > 2 Then
                            新增工作表.Cells(N, Y).Value = "分頁符號"
                           
                            空列 = (4 - (N - 2) Mod 4) Mod 4
                           
                            If 空列 > 0 Then
                                For K = 1 To 空列
                                    新增工作表.Rows(N).Insert
                                    N = N + 1
                                Next K
                            End If
                        End If
                End Select
            Next Y
        Next Z
    Next X
   
    '----------------------------------------
   
    新增工作表.UsedRange.Columns.AutoFit
   
    新增工作表.Cells(2, 1).Activate
    ActiveWindow.FreezePanes = True

End Sub




以M欄為例

我要以3000內的數量和Q欄要做分拆和隔行,但如果是3100內的話,也是可以的。同時隔行要跟Q的欄位名稱做4倍數的隔行。(要用新工作表做出結果)

M欄是作數量參考除3100,之後做完再做隔行是4倍差。

如圖2
擷取2.JPG
2019-12-28 10:14


如果是3100內的就不用拆數,但因為ITEM名稱與其他的不一樣,所以都要隔行。

現時要求如果我要在N欄前加多一欄,將另外一個欄位名稱新增上去


擷取3.JPG
2019-12-28 10:14

擷取4.JPG
2019-12-28 10:14


按code 的資料來做數量拆數應該如何做。

code01=3000    3100內
code02=4000    4100內
code03=5000    5100內
code04=6000    6100內

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題