=SUMPRODUCT(LEN($A$7) - LEN(SUBSTITUTE($A$7, CHAR(ROW(INDIRECT("65:90"))), "")))
上面的這個公式計算字串中的大寫字符。它作業得很好。我似乎無法將其轉換為 VBA。我在需要的地方替換了 Application.WorksheetFunction,并且我使用了雙引號作為間接函式。
(我的努力)MyCaps =Application.WorksheetFunction.SUMPRODUCT(LEN($A$7) - LEN(Application.WorksheetFunction.SUBSTITUTE($A$7, CHAR(Application.WorksheetFunction.ROW(INDIRECT(""65:90"")) ), "")))
uj5u.com熱心網友回復:
僅供參考,您根本不需要INDIRECT()在作業表中使用公式。=SUMPRODUCT(LEN($A$7)-LEN(SUBSTITUTE($A$7,CHAR(ROW(65:90)),"")))因為SUMPRODUCT(). INDIRECT()不知道為什么在搜索時要使用“互聯網” 。并且,如果必須,將行范圍設為絕對范圍$65:$90并準備好拖動。
將其轉換為 VBA 將類似于:
Sub Test()
Dim s As String: s = "ABCd"
Debug.Print Evaluate(Replace("=SUM(LEN(""X"")-LEN(SUBSTITUTE(""X"",CHAR(ROW(65:90)),"""")))", "X", s))
Debug.Print Evaluate("=SUM(LEN(""" & s & """)-LEN(SUBSTITUTE(""" & s & """,CHAR(ROW(65:90)),"""")))") 'Either of the two.
End Sub
注意: Evaluate將為您自動 CSE 公式。因此SUM(),而不是SUMPRODUCT().
注意:如果您打算使用,請A7務必明確說明您正在使用哪個作業表。默認情況下Evaluate將參考當時的活動作業表。例如:
Debug.Print Worksheets("Sheet1").Evaluate("=SUM(LEN(A7)-LEN(SUBSTITUTE(A7,CHAR(ROW(65:90)),"""")))")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/480553.html
上一篇:SUMIFS不匹配空白值
下一篇:訪問VBA串列不填充資料
