自动计算当年填写的特定单元格值的数量 - 每年
Auto calculate amount of specific cell values filled in current year - every year
我正在尝试让我的 excel sheet 提取每年访问过特定访问的人员列表 - 例如 - 我想了解人们参加年度访问的频率疫苗 - 这是输入到每项工作的第 27 行 sheet(结果除外),然后我使用查找将最新结果填充到单元格 E13[=35= 中人员文件的顶部](也在每部作品上sheet)。
=LOOKUP(2,1/(27:27<>""),27:27)
但是我希望我的结果sheet统计今年有多少人在单元B14中接种了年度疫苗(并自动计算未来的每一年 - 所以在 2017 年我必须更改代码。
我正在使用一个模块从不同的工作中提取结果sheets(每个人都有一份工作sheet):(也将其用于其他结果,但今年是难倒我)
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 是 "Yes" 并且 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
这是工作人员sheet(他们都是一样的)
Persons file
这是结果页面,我希望在单元格 B14 中显示年份
Results page
非常感谢任何帮助
试试下面修改后的 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 sheet 的(您的示例中的单元格 B14)调用它,请使用下面的行:
=my3CountIfs(E13,2016,E13,2015,I7,"Yes")
请参阅下面的屏幕截图,了解在 Excel 中使用此 UDF 的示例:2 sheet 在单元格 I7 中有 "YES",单元格 E13 中的日期是 15/12/2016
.因此结果是 2.
我正在尝试让我的 excel sheet 提取每年访问过特定访问的人员列表 - 例如 - 我想了解人们参加年度访问的频率疫苗 - 这是输入到每项工作的第 27 行 sheet(结果除外),然后我使用查找将最新结果填充到单元格 E13[=35= 中人员文件的顶部](也在每部作品上sheet)。
=LOOKUP(2,1/(27:27<>""),27:27)
但是我希望我的结果sheet统计今年有多少人在单元B14中接种了年度疫苗(并自动计算未来的每一年 - 所以在 2017 年我必须更改代码。
我正在使用一个模块从不同的工作中提取结果sheets(每个人都有一份工作sheet):(也将其用于其他结果,但今年是难倒我)
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 是 "Yes" 并且 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
这是工作人员sheet(他们都是一样的) Persons file
这是结果页面,我希望在单元格 B14 中显示年份 Results page
非常感谢任何帮助
试试下面修改后的 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 sheet 的(您的示例中的单元格 B14)调用它,请使用下面的行:
=my3CountIfs(E13,2016,E13,2015,I7,"Yes")
请参阅下面的屏幕截图,了解在 Excel 中使用此 UDF 的示例:2 sheet 在单元格 I7 中有 "YES",单元格 E13 中的日期是 15/12/2016
.因此结果是 2.