0

我有两列(A 和 B),我想知道在 A 列中找到 B 列中的数字的次数。它们不必位于同一行,只需位于同一列中。

像这样:http: //i.imgur.com/AsgZoab.jpg

谢谢!

4

2 回答 2

2

您没有指定是否需要公式或 VBA/宏解决方案...

带有扩展说明的公式解决方案(由@dwarduk 发布)

=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)

VBA/宏解决方案

这将使用在列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
于 2013-09-05T00:32:09.630 回答
1

=COUNTIF($A:$A,$B1), 其中 $B1 实际上意味着 $B<row number>

没有太多的解释,但它的工作原理很像“如果等于则计数”

于 2013-09-04T23:57:17.883 回答