我试图让我的excel表格列出每年访问过一次的人员名单 - 例如 - 我想看看人们每年接种疫苗的频率 - 这是输入第27行的每个工作表(结果除外)然后我使用查找将最新结果填入单元格 E13 (也在每个工作表上)的人员文件的顶部。
=LOOKUP(2,1/(27:27<>""),27:27)
但后来我希望我的结果表计算今年每年有多少人在细胞 B14 中获得年度疫苗(并自动计算每年的未来 - 所以在2017年,我必须更改代码。
我正在使用一个模块从不同的工作表中提取结果(每个人都得到一张工作表):(使用它来获取其他结果,但当前年份让我感到难过)
Function myCountIfs(Rng1 As Range, Criteria1, Rng2 As Range, Criteria2) As Long
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Summary-Sheet" And ws.Name <> "Notes" And ws.Name <> "Results" Then
myCountIfs = myCountIfs + WorksheetFunction.CountIfs(ws.Range(Rng1.Address), Criteria1, ws.Range(Rng2.Address), Criteria2)
End If
Next ws
End Function
我可以在使用此模块时弄清楚如何从当前年份获取信息。 我尝试使用,但我必须每年手动更改它,我希望它自动更新
=my3COUNTIFS(E13,"<="&YEAR(2016),E13,">="&YEAR(2015)-1, I7,"Yes")
使用以下VBA:I7是必须调用的另一个函数 - 如果I7是&#34;是&#34;和E13今年有一个日期,然后信息计算
Function my3CountIfs(Rng1 As Range, Criteria1 As String, Rng2 As Range, Criteria2 As String, Rng3 As Range, Criteria3 As String) As Long
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case "Summary-Sheet", "Notes", "Results"
' do nothing
Case Else
my3CountIfs = my3CountIfs + Application.CountIfs(ws.Range(Rng1.Address), Criteria1, ws.Range(Rng2.Address), Criteria2)
End Select
Next ws
End Function
这是人工作表(它们都是一样的) Persons file
这是结果页面,我希望年份进入单元格B14 Results page
非常感谢任何帮助
答案 0 :(得分:1)
尝试下面修改过的UDF:
Option Explicit
Function my3CountIfs(Rng1 As Range, EndYear As Variant, Rng2 As Range, StartYear As Variant, Rng3 As Range, Criteria3 As String) As Long
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case "Summary-Sheet", "Notes", "Results"
' do nothing
Case Else
' needed to use regular Ifs here
If Year(CDate(ws.Range(Rng1.Address))) >= CInt(StartYear) And Year(CDate(ws.Range(Rng2.Address))) <= CInt(EndYear) Then
If ws.Range(Rng3.Address) = Criteria3 Then ' if 3rd range (I7) = "Yes"
my3CountIfs = my3CountIfs + 1
End If
End If
End Select
Next ws
End Function
但是,要从Excel工作表中调用它(在您的示例中为单元格B14),请使用以下行:
=my3CountIfs(E13,2016,E13,2015,I7,"Yes")
请参阅下面的屏幕截图,例如在Excel中使用此UDF:2张有&#34; YES&#34;在单元格I7中,单元格E13中的日期是15/12/2016
。因此结果是2。