vba程式簡化
請問各位高手幫我把程式簡化:
圖片參考:http://imgcld.yimg.com/8/n/AD05141276/o/1511121200...
X軸從H1-1前測開始為I22:P22儲存格
Y軸從H22~H26
資料表單名稱:為J20儲存格 '\在vSht.Range("J20").Value = DataSht.Name(NC1112524_1)
這張圖表單名稱為:檢驗報告
想要統計NC1112524_1表單內BL:BS儲存格符合Y軸(H23:H26)資料數數統計
vSht.Range("I22").Value = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H$22)"
'vSht.Range("J22").Value = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H$22)"
'vSht.Range("K22").Value = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H$22)"
'vSht.Range("L22").Value = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H$22)"
'vSht.Range("M22").Value = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H$22)"
'vSht.Range("N22").Value = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H$22)"
'vSht.Range("O22").Value = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H$22)"
'vSht.Range("P22").Value = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H$22)"
上述程式內容打錯更正如下:
vSht.Range("I22").Value = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H$22)"
'vSht.Range("J22").Value = "=COUNTIF(" & DataSht.Name & "!BM:BM,檢驗報告!$H$22)"
'vSht.Range("K22").Value = "=COUNTIF(" & DataSht.Name & "!BN:BN,檢驗報告!$H$22)"
'vSht.Range("L22").Value = "=COUNTIF(" & DataSht.Name & "!BO:BO,檢驗報告!$H$22)"
'vSht.Range("M22").Value = "=COUNTIF(" & DataSht.Name & "!BP:BP,檢驗報告!$H$22)"
'vSht.Range("N22").Value = "=COUNTIF(" & DataSht.Name & "!BQ:BQ,檢驗報告!$H$22)"
'vSht.Range("O22").Value = "=COUNTIF(" & DataSht.Name & "!BR:BR,檢驗報告!$H$22)"
'vSht.Range("P22").Value = "=COUNTIF(" & DataSht.Name & "!BS:BS,檢驗報告!$H$22)"
vSht.Range("I23").Value = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H$23)"
'vSht.Range("J23").Value = "=COUNTIF(" & DataSht.Name & "!BM:BM,檢驗報告!$H$23)"
'vSht.Range("K23").Value = "=COUNTIF(" & DataSht.Name & "!BN:BN,檢驗報告!$H$23)"
'vSht.Range("L23").Value = "=COUNTIF(" & DataSht.Name & "!BO:BO,檢驗報告!$H$23)"
'vSht.Range("M23").Value = "=COUNTIF(" & DataSht.Name & "!BP:BP,檢驗報告!$H$23)"
'vSht.Range("N23").Value = "=COUNTIF(" & DataSht.Name & "!BQ:BQ,檢驗報告!$H$23)"
'vSht.Range("O23").Value = "=COUNTIF(" & DataSht.Name & "!BR:BR,檢驗報告!$H$23)"
'vSht.Range("P23").Value = "=COUNTIF(" & DataSht.Name & "!BS:BS,檢驗報告!$H$23)"
其它內容依順'vSht.Range("I24").Value = "=COUNTIF(" & DataSht.Name & "!BR:BR,檢驗報告!$H$24)"
十直到I26...."=COUNTIF(" & DataSht.Name & "!BS:BS,檢驗報告!$H$26)"
大大您太厲害了,為什麼
vSht.[I22:P26] = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H22)" 一行就能搞定,為什麼可以不用寫迴圈,還請大大方便指導一下.
感恩!!
謝謝2位大大的解說,可讓40行的程式變成一行就能搞定,真是受益非淺
感恩!
3 個解答
- DanielLv 79 年前最佳解答
I22~P26的所有公式輸入, 程式碼改為:vSht.[I22:P26] = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H22)" 只要一行喔!
.
2011-12-12 09:27:53 補充:
連同前方輸入資料的三行, 可再簡化為:
With vSht
.[J20] = DataSht.Name
.[O20] = "=SUBTOTAL(3," & .[J20] & "!BD2:BD" & uRow & ")" '資料總筆數
.[I22:P26] = "=COUNTIF(" & .[J20] & "!BL:BL,檢驗報告!$H22)"
End With
.
- 准提部林Lv 79 年前
這樣一步一步求解是不是容易些?回答的人也可立即上手。
除Daniel大的正解外,還是提供〔錄製〕法:
將i22公式確定:
=COUNTIF(NC1112524_1!BL:BL,檢驗報告!$H22)
以錄製取得:
ActiveCell.FormulaR1C1 = "=COUNTIF(NC1112524_1!C[55],檢驗報告!RC8)"
再更改為:
vSht.Range("I22:P26").FormulaR1C1 = "=COUNTIF(" & DataSht.Name & "!C[55],檢驗報告!RC8)"
2011-12-12 11:59:16 補充:
先了解〔絕對位址〕.〔相對位址〕的差異性,
範圍中的第一個公式即可套用到整個範圍,
與直接在工作表將公式右拉下刷是同樣道理,它會自動位移參照。
2011-12-12 11:59:50 補充:
另要注意:
vSht.[I22:P26] = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H22)"
若改成
vSht.[I24:P26] = "=COUNTIF(" & DataSht.Name & "!BL:BL,檢驗報告!$H22)"
就會有錯誤!
2011-12-12 12:00:01 補充:
但使用
vSht.Range("I24:P26").FormulaR1C1 = "=COUNTIF(" & DataSht.Name & "!C[55],檢驗報告!RC8)"
就不會有問題!