excel - 无法获取 WorksheetFunction 类错误的匹配属性

标签 excel vba

我在一大堆工作表上有一大堆数据,对于每个工作表,我想找到给定列中唯一值的计数。

当我在工作表中使用以下命令时,它可以完美运行

=SUM(IF(FREQUENCY(MATCH(REST!D2:D2225,REST!D2:D2225,0),MATCH(REST!D2:D2225,REST!D2:D2225,0))>0,1))

但是当我在 VBA 中使用等效命令时,出现错误
    range1 = Cell(2,j).Address & ":" & Cells(k,j).Address


= Application.WorksheetFunction.SUM( Application.WorksheetFunction.IF( Application.WorksheetFunction.FREQUENCY( Application.WorksheetFunction.MATCH(Range(range1),Range(range1),0), Application.WorksheetFunction.MATCH(Range(range1),Range(range1),0))>0,1))

我尝试过其他组合,例如使用
 Application.Match 


 Application.Frequency

我也有“类型不匹配错误。

另一方面,以下功能完美运行
  Application.Worksheetfunction.Sum(Range(range2))

range1 和 range2 的最大区别在于 range2 数据是严格的数字,而 range1 数据既是数字又是字符串。

编辑:实现 BX201 的解决方案
     range_TradeID_total_FL = .Cells(2, TradeId_column).Address & ":" & Cells(Finalrow, TradeId_column).Address
     doubleQ = Chr(34) & Chr(34)
    fStr = "=SUMPRODUCT((range_TradeID_total_FL & " <> " & " & doubleQ & ")/COUNTIF(range_TradeID_total_FL , range_TradeID_total_FL & " & " & " & doubleQ & "))"
    var_TOTAL_TradeId_count_FL = Evaluate(fStr)
    MsgBox var_TOTAL_TradeId_count_FL

我不想将值存储在单元格中,而是将其存储在变量中。但是当我这样做时,MsgBox 给我的值是“True”而不是数字。

最佳答案

@SiddharthRout I am not aware of evaluate. Can you please tell me how it would work in my context, especially when I use variables for range.



试试这个(未经测试)

这是一个 row 是变量的示例。
Sub Sample()
    Dim r1 As Long, r2 As Long
    Dim formulaString As String

    r1 = 2
    r2 = 2225

    '=SUM(IF(FREQUENCY(MATCH(REST!D2:D2225,REST!D2:D2225,0),MATCH(REST!D2:D2225,REST!D2:D2225,0))>0,1))
    formulaString = "=SUM(IF(FREQUENCY(MATCH(REST!D" & r1 & _
                    ":D" & r2 & _
                    ",REST!D" & r1 & _
                    ":D" & r2 & _
                    ",0),MATCH(REST!D" & r1 & _
                    ":D" & r2 & _
                    ",REST!D" & r1 & _
                    ":D" & r2 & _
                    ",0))>0,1))"

    Debug.Print Application.Evaluate(formulaString)
End Sub

关于excel - 无法获取 WorksheetFunction 类错误的匹配属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481067/

相关文章:

java - 在java中读取Excel文件不会读取空白单元格或将其计为空

arrays - 对具有相同范围的多张工作表进行排序

vba - 将项目添加到在运行时添加到用户窗体的 ComboBox

excel - 显示 Excel 工作表计数

excel - 用于持续范围 Excel 的 COUNTA

C#Excel : Correct way to get Rows and Columns count

excel - 创建表作为选择位置 - 使用当前数据库编译错误

Excel "Out of Memory"运行宏错误仅发生在内存最多的机器上

excel - 免费的 VB6/VBA 分析器和 Excel 最佳实践

shell - 使用 VBA Shell 命令提取文件夹中的所有 .gz 文件