- 帖子
- 354
- 主題
- 5
- 精華
- 0
- 積分
- 387
- 點名
- 0
- 作業系統
- windows7
- 軟體版本
- vba,vb,excel2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2017-1-8
- 最後登錄
- 2024-8-2
 
|
回復 3# 198188
GPT4
Sub test()
' 定義變量並初始化變量r為第一列最後一個非空行的行號
r = Cells(Rows.Count, 1).End(xlUp).Row
' 初始化輸出起始的列號c為第7列(即G列)
c = 7
' 清除從H2到J1000的內容,為新的輸出做準備
Range("H2:J1000").ClearContents
' 從第三行開始迴圈,直到最後一個非空行
For i = 3 To r
' 檢查當前行第一列的單元格是否不為空
If Cells(i, 1).Value <> "" Then
' 通過分割單元格值並取第一個元素來提取任務代碼
tx = Split(Cells(i, 1).Value, " ")(0)
' 確定當前單元格合併區域的數量
mr = Cells(i, 1).MergeArea.Count
' 如果存在合併的單元格
If mr > 0 Then
' 遍歷合併區域中的每個單元格,排除第一個單元格(因此使用mr - 1)
For Each Z In Cells(i, 2).Resize(mr - 1, 5)
' 如果單元格包含"SR"字樣
If UCase(Z.Value) Like "*SR*" Then
' 分割值以獲取SR編號,去除括號
sp = Split(Z.Value, "(")(0)
' 從SR編號中移除"上架"、"下架"和空格
sp = Replace(sp, "上架", "")
sp = Replace(sp, "下架", "")
sp = Replace(sp, " ", "")
' 用"▲"作為分隔符,將SR編號附加到任務代碼後面
tx = tx & "▲" & sp
End If
Next
' 移動到下一列輸出位置
c = c + 1
' 通過分隔符"▲"分割編譯後的任務代碼和SR編號
sp0 = Split(tx, "▲")
' 將SR編號數組轉置並從當前列開始寫入工作表
Cells(2, c).Resize(UBound(sp0) + 1, 1) = Application.Transpose(sp0)
End If
End If
Next
End Sub
這段VBA宏的目的是將任務列表中的“SR”編號根據第一列指定的任務整理到不同的列中。它會先清除指定範圍的內容,接著處理資料並分割字串,最後將整理好的輸出轉置至工作表中。這些註解應該能幫助你理解這個宏的邏輯和流程。 |
|