整个工作表中数字的计数

整个工作表中数字的计数

我正在使用 Excel 2013。在 B 列中,我(从 B1:B229)有不同的订单号。当我在 Excel 工作表上复制另一份报告时,我想查看是否存在所有订单号。有没有办法创建一个公式(可能countif,但我没有弄清楚),如果数字仅出现在 B 列中,则返回 1,否则返回 2(2 应该是最大值,这意味着它被正确复制)。复制的报告有点混乱,因此该报告的订单号未在同一列中对齐(可以在 L、M、N 直到 Q 列中预设)。这就是我不能使用的原因Vlookup

有没有建议使用公式来计算特定数字在整个工作表中出现的次数?然后将该公式向下拖到 B 列中其余数字?

这张图片显示了我的表格中的 1 行。您看到的第一列是 B。我想知道该数字是否在表格中的其他地方(它应该在有发票号的其他列中:)

1

答案1

首先,我看你是新手,你还没有接受任何 Stack Exchange 网站上的答案,尽管你有几个问题被问到。部分原因是你的问题格式很差,以至于人们无法快速理解你的问题是什么。部分原因是你没有读过游览页面在任何站点上。

阅读全文游览页面。这样你就能以更好的方式提问,我们也会更愿意回答。你想要这个,对吧?


我尝试了几个选项COUNTIF,但我不喜欢它,因为当标准是数字格式时,我无法获得部分匹配的可靠结果。所以我使用 VBA 创建了一个 UDF(用户定义函数)。

  1. 按键盘组合键Alt+F11打开 VBA 编辑器。
  2. 插入新模块:插入 > 模块。您现在应该会看到一个新的空模块。 VBA 编辑器新模块
  3. 粘贴此代码:
公共函数 CountInRange(rWhere 作为范围,rCriterion 作为范围) 只要
  Dim c 作为范围,sCrit 作为字符串
  如果 rCriterion.Count 1 则
    错误提升 (13)
    退出函数
  万一
  sCrit = rCriterion.值
  对于 r 中的每个 c
    如果 Len(c.Value) Len(Replace(c.Value, sCrit, vbNullString)) 那么
      范围内计数 = 范围内计数 + 1
    万一
  下一个
结束函数
  1. 尝试在 Excel 工作表中使用该函数,照常输入,例如:
=CountInRange($I$1:$R$2355,B1)

我的结果如下:
Excel VBA UDF 结果

注意:现在您将无法使用 .xlsx 扩展名存储文件。您可以使用例如.xlsm,以便文件存储 UDF。

相关内容