A 列包含数字列表,其中一些是重复的
B 列包含代表月份的 1-12 的数字列表
我需要计算 A 列中唯一数字,其中 B 列中的月份 = 1
例子:
ColumnA ColumnB
123 1
223 2
312 3
412 1
123 1
312 2
123 3
例如,当 B=1 时,123 会出现两次,而 412 在同一个月会出现一次,因此唯一计数应为 = 2
答案1
我知道你想要一个使用 countif 的解决方案,但我不知道是否可以只使用 countif 来完成;因此,作为替代方案,这个 VBa 可以做到
Option Explicit
Sub CountDuplicatesPerMonth()
Dim row As Integer
row = 1
Range("C:C").Value = "" 'clear the results
Do While (Range("A" & row).Value <> "")
Dim val As String
val = Range("A" & row).Value
Dim month As Integer
month = Range("B" & row).Value
Range("C" & row).Value = 0
Dim innerRow As Integer
innerRow = 1
Do While (Range("A" & innerRow).Value <> "")
Dim innerVal As String
innerVal = Range("A" & innerRow).Value
Dim innerMonth As Integer
innerMonth = Range("B" & innerRow).Value
If (innerVal = val And innerMonth = month) Then
Range("C" & row).Value = Range("C" & row).Value + 1
End If
innerRow = innerRow + 1
Loop
row = row + 1
Loop
End Sub
前
VBa 运行后