- 帖子
- 63
- 主題
- 32
- 精華
- 0
- 積分
- 125
- 點名
- 0
- 作業系統
- WIn10
- 軟體版本
- OFFICE2013
- 閱讀權限
- 20
- 註冊時間
- 2018-7-19
- 最後登錄
- 2022-8-11
|
本帖最後由 stephenlee 於 2019-12-28 10:19 編輯
大家好,我有一個工作表,是要按數量的大小來分隔列數及數量。
以下圖為例,我需要以M欄的分拆數量和列數。
目前已有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
如果是3100內的就不用拆數,但因為ITEM名稱與其他的不一樣,所以都要隔行。
現時要求如果我要在N欄前加多一欄,將另外一個欄位名稱新增上去
按code 的資料來做數量拆數應該如何做。
code01=3000 3100內
code02=4000 4100內
code03=5000 5100內
code04=6000 6100內 |
|