返回列表 上一主題 發帖

[發問] 迴圈速度問題

[發問] 迴圈速度問題

大家好:
     我想請問一下:我的迴圈必須跑很久,有沒有辦法提升迴圈速度
     我的程式是利用"代號比對"取上市損益、上櫃損益、上市合併損益、上櫃合併損益的基本每股盈餘併入首頁1的第三欄
     並且區別損益與合併損益顏色

    本來想用類似Range("BL" & i).Formula = "=IF(ISNA(VLOOKUP($A" & i & ",'X年'!$A$2:$E$" & x1 & ",4,FALSE)),0,VLOOKUP($A" & i & ",'X年'!$A$2:$E$" & x1 & ",4,FALSE))"  
    來寫程式速度應該比較快

    可是我除了併入數值,還要區別顏色
    所以不知道怎麼寫,所以想請一下大家如何提升速度,謝謝。

test.rar (444.46 KB)

回復 1# spermbank
試試看
  1. Sub Ex()
  2.     Dim Rng(1 To 2) As Range, Sh As Worksheet
  3.     Sheets("首頁1").Range("C:C").Interior.ColorIndex = xlNone
  4.     Set Rng(1) = Sheets("首頁1").[a2]
  5.     Do While Rng(1) <> ""               '執行迴圈的條件: Sheets("首頁1").的A不是空格
  6.         For Each Sh In Sheets(Array("上市損益", "上櫃損益", "上市合併損益", "上櫃合併損益"))
  7.             Set Rng(2) = Sh.Range("A:A").Find(Rng(1).Value, LOOKAT:=xlWhole)  '工作表群組中A欄尋找
  8.             If Not Rng(2) Is Nothing Then
  9.                 With Rng(1).Offset(, 2)
  10.                     .Cells = Rng(2).Cells(1, "S")
  11.                     If Sh.Name = "上市損益" Or Sh.Name = "上市合併損益" Then
  12.                         .Interior.Color = vbMagenta
  13.                     Else
  14.                         .Interior.Color = vbCyan
  15.                     End If
  16.                 End With
  17.             End If
  18.         Next
  19.         Set Rng(1) = Rng(1).Offset(1)  'Sheets("首頁1").[a2]....下移
  20.     Loop
  21. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 2# GBKEE


    謝謝大大

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題