计算在excel中两列之间找到数字的次数

时间:2013-09-04 23:52:01

标签: excel

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

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

谢谢!

2 个答案:

答案 0 :(得分:2)

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

公式解决方案(由@dwarduk发布)使用扩展说明

=COUNTIF($A:$A, $B1) 
  • COUNTIF(...) - 接受两个参数,第一个是要查看的范围,第二个是要查找的值。它返回在范围内找到值的次数。请注意,第二个参数不必是对单元格的引用。
  • $A:$A - 表示 A 列中的每个单元格(与$A$1:$A$65535相同)
  • $B1 - 表示 B 列中的第一个单元格。请注意,因为1前面没有美元符号($),所以如果您通过另一行中的公式,它将适当增加或减少。因此,您需要先确保先在 C1 中使用此公式,然后填写其下方的单元格。

附加说明:COUNTIF(...)对单元格的实际值进行操作,它不对单元格的格式化值进行操作。因此,如果您在 A 列中的单元格中有826.2,但是将数字格式设置为丢弃所有小数位,则不会计算826的值在列 B 中。即使用肉眼看来它们看起来也是一样的。

替代公式选项

如果 B 列中的值是硬编码的。只需将 B 列中的值替换为COUNTIF(...)公式,并使用相应的数字作为第二个参数。以下是 B1 的示例。

=COUNTIF($A:$A,444)

VBA / Macro Solution

这将填充 C 列中的单元格,其中列 A 中列 B 中的相应值的次数。

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

答案 1 :(得分:1)

=COUNTIF($A:$A,$B1),其中$ B1实际上是指$ B<行号>

不是很多解释,但它的工作方式非常像“等于”的数量