返回列表 上一主題 發帖

[發問] 依條件複製不同欄位資料與尋找取代

[發問] 依條件複製不同欄位資料與尋找取代

本帖最後由 b9208 於 2020-8-22 10:00 編輯

以下程式由錄製修改,資料幾千筆,執行時間需要幾分鐘,請教是否有精進程式可以縮短執行時間?
Sub main()
Application.ScreenUpdating = False
Set WS = Worksheets("資料")
Set WT = Worksheets("輸出")
K = 5
With WS
WT.Cells(2, "A") = .Cells(2, "A")
    For i = 6 To .Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
        If .Cells(i, "AD") <> "" Then
            WT.Cells(K, "A") = .Cells(i, "B")
            WT.Cells(K, "B") = .Cells(i, "C")
            WT.Cells(K, "C") = .Cells(i, "D")
            WT.Cells(K, "D") = .Cells(i, "E")
            WT.Cells(K, "E") = .Cells(i, "F")
            WT.Cells(K, "F") = .Cells(i, "G")
            WT.Cells(K, "G") = .Cells(i, "H")
            WT.Cells(K, "H") = .Cells(i, "AB")
            WT.Cells(K, "I") = .Cells(i, "AC")
            WT.Cells(K, "J") = .Cells(i, "AD")
            WT.Cells(K, "K") = Left(.Cells(i, "AF"), 8)
            WT.Cells(K, "L") = Right(.Cells(i, "AF"), 5)
            WT.Cells(K, "M") = Left(.Cells(i, "AG"), 8)
            WT.Cells(K, "N") = Right(.Cells(i, "AG"), 5)
            
            WT.Range("A" & K & ":O" & K).Select
            Selection.Borders.LineStyle = xlContinuous
            K = K + 1
        End If
    Next i
.Range("a5:o" & [j1048576].End(xlUp).Row).Select
Selection.Sort key1:=.[B5], key2:=.[J5], Header:=xlNo
End With

With WT
.Range("a5:o" & [j1048576].End(xlUp).Row).Select
Selection.Sort key1:=.[B5], key2:=.[J5], Header:=xlNo
.Range("h5:I" & [j1048576].End(xlUp).Row).Select
Selection.Replace What:="*AA*", Replacement:="AAA"
Selection.Replace What:="*BBB*", Replacement:="BBB"
Selection.Replace What:="*CC*", Replacement:="CCC"
Selection.Replace What:="*DDD*", Replacement:="DDD"
Selection.Replace What:="*EEE*", Replacement:="DDD"
Selection.Replace What:="*FFF*", Replacement:="FFF"
Selection.Replace What:="*GGG*", Replacement:="GGG"
Selection.Replace What:="*HH*", Replacement:="GGG"
Selection.Replace What:="*MM*", Replacement:="MMM"
Selection.Replace What:="*LLL*", Replacement:="LLL"
Selection.Replace What:="*QQQ*", Replacement:="LLL"
Selection.Replace What:="*NNN*", Replacement:="NNN"
Selection.Replace What:="*TTT*", Replacement:="NNN"
End With
End Sub
100 字節以內
不支持自定義 Discuz! 代碼

回復 1# b9208
非常抱歉
由於產生亂碼,所以重新以檔案上傳。
程序由錄製修改,資料幾千筆,執行時間需要幾分鐘,請教是否有精進程展式可以縮短執行時間?
程式碼請看附檔模組
q1.rar (21.01 KB)
100 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 3# n7822123
請問下述句子 Arr = Range([資料!AD6], Rg) 中〞AD6〞是指什麼?資料工作表AD6是空白。感謝指導。
Set Rg = [資料!A1048576].End(xlUp)
If Rg.Row = 1 Then Exit Sub
Arr = Range([資料!AD6], Rg)
Brr = [A5].Resize(UBound(Arr), 15)
100 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 5# n7822123
非常抱歉,沒有修訂到。
原檔案共有52欄(AZ),依據AD欄有資料,則copy需要欄位資料。
.cells(i, "AD") <> "" Then 應修改為 .cells(i, "T") <> "" Then
請問如依實際檔案A~AZ欄位,依據“AD”欄位有資料,則copy欄位如下:
Ci = Array(, 2, 3, 4, 5, 6, 7, 8, 28, 29, 30, 32, 32, 33, 33)
請問如何修訂
100 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 7# n7822123
非常感謝,執行OK。
但有一個問題,輸出中框線列數與資料列數相同,也就是輸出中沒有資料列數也劃框線。
另、請教如於執行前,先清除輸出標題列以下儲存格之內容、框線及填滿顏色,不用.Delete方法,有其他方法可以達成? q2.rar (21.7 KB)
100 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 9# n7822123
非常感謝指導
問題解決了
100 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 12# n7822123
准大、龍大
非常感謝二位大大指導
100 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 閒人無樂趣,忙人無是非。
返回列表 上一主題