Excel:计算不连续范围内的相同数值

标签 excel vba

我正在寻找最优雅的方法来计算不连续范围内的相同数值(我将其称为“范围”)。这是范围:

=$C$2:$C$31,$E$2:$E$31,$G$2:$G$31,$I$2:$I$31,$K$2:$K$31,$M$2:$M$31,$O$2:$O$31,$Q$2:$Q$31,$S$2:$S$7

这些是参数:

  • 该范围包含不相邻的列。
  • 各列的高度不同。
  • 区域中的单元格为空或包含整数。
  • 我正在检查范围内有多少个单元格等于“1”、有多少个单元格等于“2”等。 (不是一次性的,而是单独的公式)。
  • 我使用命名范围来引用该范围。我真的很想以某种方式在公式中使用这个命名范围。

我希望我已经给您提供了足够的信息...提前致谢!

最佳答案

我同意 Kartik 的观点,即需要 VBA 解决方案。然而,提供的解决方案效率有点低,因为它循环遍历传递给函数的范围中的每个单元格。它还将 key 参数限制为范围引用,并且最多只能计数 32767 个匹配项。这是解决这些缺点的替代方案

Function CountIf_N(rng As Range, key As Variant) As Variant
    Dim r As Range
    Dim count As Long
    count = 0
    For Each r In rng.Areas
        count = count + WorksheetFunction.CountIfs(r, key)
    Next
    CountIf_N = count
End Function

注意:假定为 Excel 07 或更高版本。如果与早期版本一起使用,请将 CountIfs 替换为 CountIf

关于Excel:计算不连续范围内的相同数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11065078/

相关文章:

vba - 如何使在 32 位 Excel 2016 上编写的宏在 64 位 Excel 2016 上工作

vba - Excel VBA - VBA 内的日期和 IF 函数给出错误

vba - 如何将电子表格中的单元格设置为只读?

recursion - 自适应vba excel函数递归

excel - 根据其他单元格中存储的 RGB 值动态更改单元格的背景颜色

vba - 使用表作为 VBA 中的常量值与 listobjects

java - 在 Java 中使用 VisualBasic DLL

excel - 尝试使用 pivot 和 ssis 导入 excel 文件

javascript - 导出带有标题(包括图像)的 Excel

excel - 在VBA中从二维数组分配一维数组?