excel - 计算满足特定条件的 Excel 电子表格中的唯一行

标签 excel vba excel-2007 worksheet-function

我想计算包含某个字符串的 Excel 列中的所有唯一值。例如,假设我的专栏中有这个:

斯特拉
字符串
斯特拉
字符串
差异
差异B
字符串

如果我给这个理论函数写一个值“str”,它将计算包含“str”的唯一值,并返回数字 3。

有什么建议么?网络上充斥着这个问题的一半答案,但我花了一个小时试图找到一个明确的解决方案,所以我认为 StackOverflow 可能会从这个问题中受益。

最佳答案

Option Explicit

Sub Test()
    GetCount 1, "str"
End Sub

Sub GetCount(colNum As Integer, str As String)
    Dim row As Integer
    Dim dict
    Set dict = CreateObject("Scripting.Dictionary")

    row = 1

    Dim key As String
    While Cells(row, colNum) <> ""
        key = Cells(row, colNum)
        If InStr(key, str) And Not dict.Exists(key) Then
            dict.Add key, key
        End If

        row = row + 1
    Wend

    MsgBox ("the count is " & dict.Count)

End Sub

使用输入样本运行时,结果为 3。循环的终止条件是在列中找到的第一个空单元格。如果逻辑不是你想要的,你可以调整它。

您需要在 VBA 部分中添加对 Microsoft Scripting Runtime 的引用,才能编译和运行此宏。

关于excel - 计算满足特定条件的 Excel 电子表格中的唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3669909/

相关文章:

vba - 单击 Excel 中的超链接以在不同的工作表上设置自动过滤器

c# - 调用 VBA 函数包含 ActiveWorkbook.Close 会导致 Excel 崩溃

vba - 偶发自动化错误 : Exception Occurred, 可能基于引用

excel - 如何更改轴值标签方向?

Excel图表动态范围选择

excel - 在 Thunderbird 电子邮件客户端中粘贴 Excel 表格

string - 使用带有 FormulaR1C1 的字符串变量有效,除非它以数字开头

vba - 使用 VBA 将 Excel xlsm 文件上传到 php 脚本

excel - 如何将 Excel 工作表名称传递给 Access 子例程?

c# - 在 C# 中使用 EPPLUS 设置列数据格式