返回列表 上一主題 發帖

[發問] 誰能幫這幾乎重複動作的VBA瘦身 謝謝

回復 20# don4831
"當下" 是指只要清除正要貼值之區域 也就是說其餘之前的值不要被清除
謝謝您的用心

TOP

我研判你需要的應是:
Sub clearRow()
    Worksheets(Array("析1", "析2", "析3", "析4", "析5", "析6", "析7", "析8", "析9", "析10")).Select
    lineBegin = Worksheets("Data").Range("K4") '起行
    Rows(lineBegin & ":" & Rows.Count).Select '自你指定的起行清到最後
    Selection.Clear
    Range("A1").Select
    Worksheets("析1").Select
End Sub
[color=blue]KY[/color]

TOP

回復 22# don4831
沒錯 就是這樣 我目前佈局情形如下圖


TOP

回復 19# lcctno


    你沒注意我寫的程式。只有幫你填滿每週需填滿的幾行。而且所需時間較少,就算填滿至65536都OK的
j4 = Sheets("DATA").[j4]''為終止行
dl = .[a65536].End(xlUp).Row為這週的開始行。

TOP

回復 24# lpk187
謝謝您 我不是沒有看 而是看到的內容 與我很低程度的"vba能力" 造成我的認知與實際剛好相反 (看不懂程式碼 頭很大)
我真的只知道該步驟該怎麼進行 但卻不會寫稍微複雜的VBA 雖然您有提供程式語法 但對看不懂的人 實在是只能說聲謝謝您 因為還是不知道該擺在那裏  ....

TOP

光〔複製.貼上〕就要耗費大半天時間,尤其文字或公式更耗時,
使用陣列直接運算取出結果再貼入,因判斷值只有0及1,貼入時還算快,
雖是最基本的〔陣列.array〕運用,但對初學者也頗有難度,恕無法解說,參考即可:
test01.rar (139.58 KB)
 
若資料太多,可能造成記憶體不足問題,試試看!
我只插花,此論壇各板主皆是專業高手,可請求其協助!
 
Sub 分析()
Dim Srr, Sht As Worksheet, Arr, Brr, Crr, X, Y, Z, R, TM
Dim i&, j&, k%, M, Mrr(1 To 2560, 1 To 2), S&, SU&

TM = Timer
R = [data!C65536].End(xlUp).Row
Arr = [Data!C1:D1].Resize(R)
X = [Data!I4]: If X < 2 Then X = 2
Y = [Data!J4]: If Y > R Then Y = R
Z = Y - X + 1: If Z <= 0 Then Exit Sub

ReDim Crr(X To Y, 1 To 256)
Application.ScreenUpdating = False
For i = 1 To 10
    Set Sht = Sheets("析" & i)
    Brr = Sht.Rows(1)
    For k = 1 To 256
        M = M + 1
        For j = X To Y
            If Brr(1, k) <= Arr(j, 1) And Brr(1, k) >= Arr(j, 2) Then S = 1
            Crr(j, k) = S: SU = SU + S: S = 0
        Next j
        Mrr(M, 1) = Brr(1, k):  Mrr(M, 2) = SU:   SU = 0
    Next k
    Sht.UsedRange.Offset(1, 0).ClearContents
    With Sht.[A2].Resize(Z, 256)
         Sht.Rows(2).Copy .Cells
         .Value = Crr
    End With
Next i

Sheets("結果").[A3:B3].Resize(M) = Mrr
MsgBox Timer - TM
End Sub

TOP

本帖最後由 lcctno 於 2015-8-28 12:55 編輯

回復 26# 准提部林

是能執行且僅僅數秒 也太快了 但 出來的值錯誤(目前股價累計發生率=100%) 我沒能力了解這麼深的語法 故無法除錯

   






發生率=100%

TOP

你可以將數據貼上並修改I4及J4日期範圍試試看[結果]工作表運算是否可以符合你預期。
先說附檔並不是用您所期望的方式去修改,運算結果可能也不是你想要的結果,僅供參考...
~test% - TT.zip (123.09 KB)

TOP

程式只取得各股價參數的符合次數,並輸出至〔結果〕表的AB欄,
至於CD欄如何計算〔發生率〕,須自行去套公式!

TOP

回復 27# lcctno


你可以將數據貼上並修改I4及J4日期範圍試試看[結果]工作表運算是否可以符合你預期。
先說附檔並不是用您所期望的方式去修改,運算結果可能也不是你想要的結果,僅供參考...
剛剛28#發的公式只能算到第310列,這是修正檔
~test% - TT2.zip (124.1 KB)

TOP

        靜思自在 : 唯其尊重自己的人,才更勇於縮小自己。
返回列表 上一主題