我有两列(A 和 B),我想知道在 A 列中找到 B 列中的数字的次数。它们不必位于同一行,只需位于同一列中。
像这样:http: //i.imgur.com/AsgZoab.jpg
谢谢!
您没有指定是否需要公式或 VBA/宏解决方案...
=COUNTIF($A:$A, $B1)
COUNTIF(...)
— 接受两个参数,第一个是要查找的范围,第二个是要查找的值。它返回在该范围内找到该值的次数。请注意,第二个参数不必是对单元格的引用。$A:$A
— 表示A列中的每个单元格(与 相同$A$1:$A$65535
)$B1
— 表示B列中的第一个单元格。请注意,因为1
前面没有美元符号 ( $
),如果您在另一行中超过公式,它将适当地递增或递减。因此,您需要确保首先在C1中通过此公式,然后填写其下方的单元格。附加说明:COUNTIF(...)
对单元格的实际值进行操作,它不对单元格的格式化值进行操作。因此,如果您在A826.2
列中有一个单元格,但将“数字格式”设置为删除所有小数位,则这将不计入B列中的值。尽管在肉眼看来它们是相同的。826
如果您在B列中的值是硬编码的。只需将B列中的值替换为COUNTIF(...)
公式,并将相应的数字用作第二个参数。这是B1的外观示例。
=COUNTIF($A:$A,444)
这将使用在列A中找到列B中相应值的次数填充列C中的单元格。
Public Sub CountA_FillC()
Dim RowA As Long, RowB As Long
Dim UsedRange As Range: Set UsedRange = ActiveSheet.UsedRange
For RowB = 1 To UsedRange.Rows.Count
Dim Count As Long: Count = 0
For RowA = 1 To UsedRange.Rows.Count
If UsedRange(RowA, "A").Value = UsedRange(RowB, "B").Value Then
Count = Count + 1
End If
Next RowA
UsedRange(RowB, "C").Value = Count
Next RowB
End Sub
=COUNTIF($A:$A,$B1)
, 其中 $B1 实际上意味着 $B<row number>
没有太多的解释,但它的工作原理很像“如果等于则计数”