- 帖子
- 21
- 主題
- 5
- 精華
- 0
- 積分
- 67
- 點名
- 0
- 作業系統
- WIN10
- 軟體版本
- 10
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2018-7-23
- 最後登錄
- 2020-9-3
|
[發問] 用VBA 執行COUNTIF 後,貼值及工作頁的疑問及簡化VBA
有請問版上的高手。
COUNTIF -TEST.zip (41.72 KB)
我用錄製巨集的方式想統計出 金融/電子/傳產的內外盤並做成圓餅圖想要方便觀察。
但是遇到幾個問題。
1-目的想要每10秒鐘執行巨集後運算一次然後畫圓餅圖 , 但巨集一執行,工作表1的ABC行的RAND 值都不會跳動了(巨集沒執行時會自已跳動) 。我也沒辨法切到其它工作表做其它事
有辨法讓運算只在工作頁1 自已背景執行 我還可以做其它儲存格的KEY IN嗎?
2-附件是想要利用VBA在$E$1 做完COUNTIF 運算後 再貼"值到下方 。 想說這樣可以節省EXCEL 在金融/傳產/電子/內外盤12格內寫一樣的公式浪費EXCEL運算時間。
可是錄製出來的VBA 感覺也是貼了12次一樣的運算 ? 可以有高手幫忙簡化嗎?
3- 因為想要在EXCEL一打開後 就不管這個CONUTIF 讓它自已在工作頁1自已背景執行 。 EXCEL 縮小或切換到其它的 EXCEL 檔案並不影響這個COUNTIF 工作頁的執行
這語法還需做什麼設定嗎? 還是我需要把VBA程式貼在工作表1內,然後工作表1設定成worksheet 宣告成calculation 呢?
4- 一直搞不懂巨集執行後 要怎麼把巨集停止。是否有語法可以快速中斷vba?
請高手幫幫忙解答。感謝
Sub ¥¨¶°10sec()
'
'
'
'¤º¥~½L
Range("E1").FormulaR1C1 = "=COUNTIF(R[4]C[-4]:R[935]C[-4],1)"
Range("E1").Copy
Range("E5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1").FormulaR1C1 = "=COUNTIF(R[4]C[-4]:R[935]C[-4],-1)"
Range("E1").Copy
Range("F5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1").FormulaR1C1 = "=COUNTIF(R[4]C[-4]:R[935]C[-4],0)"
Range("E1").Copy
Range("G5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'¶Ç²£
Range("E1").FormulaR1C1 = "=COUNTIF(R[4]C[-3]:R[257]C[-3],1)"
Range("E1").Copy
Range("E7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1").FormulaR1C1 = "=COUNTIF(R[4]C[-3]:R[257]C[-3],-1)"
Range("E1").Copy
Range("F7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1").FormulaR1C1 = "=COUNTIF(R[4]C[-3]:R[257]C[-3],0)"
Range("E1").Copy
Range("G7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'ª÷¿Ä
Range("E1").FormulaR1C1 = "=COUNTIF(R[461]C[-3]:R[492]C[-3],1)"
Range("E1").Copy
Range("E9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1").FormulaR1C1 = "=COUNTIF(R[461]C[-3]:R[492]C[-3],-1)"
Range("E1").Copy
Range("F9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1").FormulaR1C1 = "=COUNTIF(R[461]C[-3]:R[492]C[-3],0)"
Range("E1").Copy
Range("G9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'¹q¤l
Range("E1").FormulaR1C1 = "=COUNTIF(R[258]C[-3]:R[397]C[-3],1)+COUNTIF(R[508]C[-3]:R[562]C[-3],1)"
Range("E1").Copy
Range("E11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1").FormulaR1C1 = "=COUNTIF(R[258]C[-3]:R[397]C[-3],1)+COUNTIF(R[508]C[-3]:R[562]C[-3],-1)"
Range("E1").Copy
Range("F11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E1").FormulaR1C1 = "=COUNTIF(R[258]C[-3]:R[397]C[-3],1)+COUNTIF(R[508]C[-3]:R[562]C[-3],0)"
Range("E1").Copy
Range("G11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Call Second
End Sub
Sub Second()
'
'
Application.OnTime Now + 10 / 86400#, "¥¨¶°10sec"
End Sub |
|