我的工作簿中有 10 张纸,第 10 张纸包含前 9 张纸的名称。我试图使用 VBA 创建一个公式来获取每张纸的计数。
例如,我有sheet1
来自范围 (a1:b500) 的数据,计数的标准是 A 列中的每个非空白单元格,B 列中应该有一个空白单元格。
是否可以创建一个UDF,它将范围(a1:a500)作为一个数组,将范围(b1:b500)作为第二个数组并根据上述标准给出计数?函数中的参数应该只是工作表名称 - 例如,函数应该将参数作为=GetCount(sheet1)
,其中GetCount
是函数名称,而 sheet1 是参数。
我找到了使用循环的解决方案,但我想避免在 vbacountif
和sum(array)
Excel 中使用循环并尝试使用数组功能
Function GetCount(Str As String)
Application.Volatile (True)
Dim wb As Workbook
Dim sh As Worksheet
Dim rng1 As Range
Dim r As Integer
Dim strCount As Integer
Set wb = Workbooks("Integrated Working Tracker")
Set sh = wb.Sheets(Str)
Set rng1 = sh.Range("a1:a500")
For Each c In rng1.Cells
If c.Value <> "" And c.Offset(0, 1).Value = "" Then
strCount = strCount + 1
End If
Next
GetCount = strCount
Set sh = Nothing
Set wb = Nothing
Set rng1 = Nothing
End Function
任何帮助深表感谢。先感谢您