返回列表 上一主題 發帖

迴圈耗時的問題

迴圈耗時的問題

本帖最後由 ziv976688 於 2019-8-22 01:26 編輯

測試檔︰ 迴圈問題.rar (104.1 KB)

想將"前三小數"工作表的.Range("AP2:AP127")範圍內的"大"改為"小";
並將44號底色改為38號底色,4號底色改為40號底色,8號底色改為39號底色。
另將.Range("AX2:BB127")範圍內的"大"改為"小";
最後將[AP2:BC127].Copy [BE2]
目前的程式碼如下︰
'更改文字和底色  '=>列247
    For Each Rng In .Range("AP2:AP127")
        Rng.Value = Replace(Rng, "大", "小")
        i = Rng.Interior.ColorIndex
        Rng.Interior.ColorIndex = IIf(i = 44, 38, IIf(i = 4, 40, IIf(i = 8, 39, i)))
    Next
    For Each Rng In .Range("AX2:BB127")
        Rng.Value = Replace(Rng, "大", "小")
    Next
    [AP2:BC127].Copy [BE2]   '=>列256

問題︰上述的區段程式碼跑的時間異常(約須耗時15秒)。
需求︰請問要如何正確編寫?以利提升執行的效率。

PS︰附上2個.CSV測試檔
誠請各位大大不吝幫忙! 謝謝!

爬文許久,還是找不到適用的語法^^"
先以錄製的語法暫用~~如果可以再修減的話,誠請各位大大不吝賜教!謝謝!
'更改文字和底色
    Range("AP2:AP127").Select
    Application.FindFormat.Interior.ColorIndex = 44
    Application.ReplaceFormat.Interior.ColorIndex = 38
    Selection.Replace What:="大", Replacement:="小", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, _
        ReplaceFormat:=True
    Application.FindFormat.Interior.ColorIndex = 4
    Application.ReplaceFormat.Interior.ColorIndex = 40
    Selection.Replace What:="大", Replacement:="小", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, _
        ReplaceFormat:=True
    Application.FindFormat.Interior.ColorIndex = 8
    Application.ReplaceFormat.Interior.ColorIndex = 39
    Selection.Replace What:="大", Replacement:="小", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, _
        ReplaceFormat:=True
   
    Range("AX2:BB127").Select
    Selection.Replace What:="大", Replacement:="小", LookAt:=xlPart

TOP

回復 3# linyancheng
謝謝版主指教!我試試看^^

TOP

回復 5# mistery
謝謝大大的指教。

可否再請問 : 底色取代要怎麼寫才正確?
謝謝您^^

TOP

本帖最後由 ziv976688 於 2019-8-29 03:03 編輯

回復 7# 准提部林
感謝版主的熱心相助。
測試結果 : 沒有受到  For Each Rng In .Range("AP2:AP127")...... Next  的迴圈影響,快很多。
萬分感謝^^

TOP

回復 9# 准提部林
再次萬分感謝版主的熱心幫忙^^(鞠躬)

TOP

        靜思自在 : 真正的愛心,是照顧好自己的這顆心。
返回列表 上一主題