首页 文章

VBA Excel查找并计数

提问于
浏览
-3

我想使用VBA在Excel中自动执行此功能 .

  • 从D1获取值(np.taks-223)

  • 搜索工作簿,检查D1中的数据(现在手动CTRL F - > options {within:woorkbook} - >查找全部)

  • 计算工作簿中数据出现的次数,将结果写入单元格H1

我可以使用Makro或其他方式执行此功能吗?我最近一直在使用excel,但还没有找到答案 . 谢谢 :)

1 回答

  • 0

    使用上面列出的确切步骤记录宏将不会为您提供任何要查看的代码,因为“查找全部”不会生成任何代码 . 但是,您可以使用代码构建一个可以提供所需内容的公式,并将该公式写入$ H $ 1 . 这是一个包含3张工作簿的示例 . Sheet1是您的搜索值所在的位置,另外两张图表的搜索值随机分散 . 假设您不想在计数中包含单元格D1,您可能会执行以下操作:

    Sub countValueInWorkbook()
        Dim formulaString As String
    
        '//If you put your formula in any cell of Row 1, you will have a circular reference.
        '//Start your formula with the sheet the search value cell is on, and count rows 2 thru 500 (or something)
        formulaString = "=SUM(COUNTIF(Sheet1!2:500, $D$1),"
    
        For Each wksht In ThisWorkbook.Sheets
            If wksht.Name <> "Sheet1" Then
                formulaString = formulaString & "COUNTIF(" & wksht.Name & "!1:500, $D$1),"
            End If
        Next wksht
    
        '//Trim trailing comma and add ending parenthesis
        formulaString = Left(formulaString, Len(formulaString) - 1)
        formulaString = formulaString & ")"
    
        '//Write formula to desired cell
        Sheets("Sheet1").Range("$H$1").Value = formulaString
    End Sub
    

    使用与此类似的东西,您将能够计算工作簿的每个工作表中的搜索值的所有实例 . 如果要在计数中包含搜索值单元格,请更改以下行:

    formulaString = formulaString & ")"
    

    formulaString = formulaString & ", 1)"
    

    这样SUM将添加额外的1 .

    运行此代码后,我最终在单元格H1中使用以下公式:

    =SUM(COUNTIF(Sheet1!2:500, $D$1),COUNTIF(Sheet2!1:500, $D$1),COUNTIF(Sheet3!1:500, $D$1))
    

    希望这对你有所帮助!

    编辑显示使用搜索单元本身而不是静态值,以便当您更改D1中的内容时,H1中的公式将更新以计算新值 .

相关问题