- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
30#
發表於 2022-10-14 08:00
| 只看該作者
本帖最後由 Andy2483 於 2022-10-14 08:09 編輯
回復 27# cclo0728
前輩早安
後學早上複習了拆解長序號增加兩欄放入日期與短序號
練習陣列
提供前輩參考!
原出貨資料長序號篩選:
執行程式後產生新檔案可篩選日期:
新檔案可篩選短序號:
以下複習的程式碼供參考:
Option Explicit
Sub 長序號轉_日期_短序號()
Dim Arr, i&, xB, N&, D1 As Date
'↑宣告變數:D1 是日期,N是數字
Set xB = Sheets("出貨資料")
'↑令xB是 "出貨資料" 工作表
Arr = xB.Range(xB.[J1], Cells(xB.UsedRange.EntireRow.Count, 1))
'↑令Arr是"出貨資料" 工作表 A:G欄之間有使用列的區域儲存格值
For i = 2 To UBound(Arr)
'↑設迴圈拆解B欄的長序號
D1 = "20" & Mid(Arr(i, 2), 1, 2) & "/" & Mid(Arr(i, 2), 3, 2) & "/" & Mid(Arr(i, 2), 5, 2)
'↑ "20",加長序號第1個字開始取兩字元="22"
',再加長序號第3個字開始取兩字元="10"
',再加長序號第5個字開始取兩字元="08"
'D1="2022/10/08"字串轉化為日期,因D1宣告為日期
Arr(i, 9) = D1
'↑把D1日期放入Arr的第9欄位置
N = Right(Arr(i, 2), 3)
'↑令N是常序號的右邊3個字元字串轉數字,因N宣告為數字
Arr(i, 10) = N
'↑把N數字放入Arr的第10欄位置
Next
Workbooks.Add
'↑開一個新的檔案
[A1].Resize(UBound(Arr), 10) = Arr
'↑把Arr陣列的資料從[A1]開始倒入新工作表的存格
[I1] = "出貨日期"
[J1] = "當日序號"
Cells.Columns.AutoFit
'↑自動調整欄寬
Cells.Rows.AutoFit
'↑自動調整列高
[2:2].Select
ActiveWindow.FreezePanes = True
'↑第二列以上儲存格凍結窗格
[A1].Select
[A1].AutoFilter
'↑設定篩選
Cells.Borders.LineStyle = xlContinuous
'↑顯示格線
End Sub |
|