如下例所示,在vba或excel公式中,count列的值应该是column1和column2的组合。
发布于 2020-12-28 08:16:40
比较-计数两列
Range(FirstCell)
替换为ThisWorkbook.Worksheets("Sheet1").Range(FirstCell)
,以确保它在正确的工作表上运行。代码
Option Explicit
Sub compareCountTwoColumns()
Const FirstCell As String = "A2"
Dim rng As Range
With Range(FirstCell)
Set rng = .Resize(.Worksheet.Rows.Count - .Row + 1, 2)
Set rng = rng.Find( _
What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious)
If rng Is Nothing Then
MsgBox "No data found.", vbCritical, "No Data"
Exit Sub
End If
Set rng = .Resize(rng.Row - .Row + 1, 2)
End With
Dim Data As Variant: Data = rng.Value
Dim Previous As Variant: ReDim Previous(1 To 2)
Previous(1) = Data(1, 1): Previous(2) = Data(1, 2)
Dim Current As Variant: ReDim Current(1 To 2)
Dim Result As Variant: ReDim Result(1 To UBound(Data, 1), 1 To 1)
Dim cCount As Long
Dim i As Long
For i = 1 To UBound(Data, 1)
Current(1) = Data(i, 1): Current(2) = Data(i, 2)
If Previous(1) <> Current(1) Or Previous(2) <> Current(2) Then
Result(i - 1, 1) = cCount
cCount = 1
Else
cCount = cCount + 1
End If
Previous(1) = Current(1): Previous(2) = Current(2)
Next i
Result(i - 1, 1) = cCount
rng.Resize(, 1).Offset(, 2).Value = Result
End Sub
发布于 2020-12-28 07:45:03
新答案:
将此公式粘贴到第3列:=IF(AND(A4=A5,B4=B5),"",SUM(IF(A1=$A$1:$A$12,1,0)*IF(B1=$B$1:$B$12,1,0)))
。确保在两个IF语句中都调整了范围的大小以适应整个范围...
老生常谈:
快速解决方案(使用helper列,假设数据从单元格A开始!):
将此公式放入第三列,然后向下拖动第四列,将此=IF(C2=C1,"",COUNTIF($C$1:$C$12,C1))
放入
注意:如果你有20 | 1
和2 | 01
,它会根据它们的计数对它们进行分组,这将会中断。
此外,请确保调整COUNTIF($C$1:$C$12,C1)
以适应整个范围
发布于 2020-12-28 07:53:56
您可以在单个公式中使用IF
/COUNTIFS
:
=IF(A1&B1<>A2&B2,COUNTIFS($A$1:$A$9,A1,$B$1:$B$9,B1),"")
https://stackoverflow.com/questions/65471281
复制相似问题