【问题标题】:excel vba syntax for evaluate("min(index(rowexcel vba语法评估(“分钟(索引(行
【发布时间】:2015-05-26 10:11:59
【问题描述】:

从另一个帖子combine rows with duplicates 我收到了答案,但在解析评估行时遇到问题。

mr = Application.Evaluate("MIN(INDEX(ROW(1:" & rw & ")+(('" & wsn & "'!B1:B" & rw & "<>'" & wsn & "'!B" & rw & ")+('" & wsn & "'!C1:C" & rw & "<>'" & wsn & "'!C" & rw & "))*1E+99, , ))")
  1. 我最初被困在这个部分

    INDEX(ROW(1:" &amp; rw &amp; ")

我知道 Row 函数提供行号,但上面的语法是什么范围 1:rw 或 ??

  1. + 加号是逻辑 OR 语句?

如果有人可以提供一个更简单的 MIN(INDEX(ROW(...

【问题讨论】:

  • 我认为您的双引号有问题。请使用您在工作表单元格中实际看到的方程式更新您的帖子。

标签: vba excel


【解决方案1】:

如有疑问,请在“立即”窗口中调试公式。这是一个例子

Sub Sample()
    Dim sFormula As String
    Dim rw As Long
    Dim wsn As String

    rw = 1      '<~~ Giving them some fictitious values. Give actual value if you have one
    wsn = "Sid" '<~~ Giving them some fictitious values. Give actual value if you have one

    sFormula = "MIN(INDEX(ROW(1:" & _
               rw & _
               ")+(('" & _
               wsn & _
               "'!B1:B" & _
               rw & _
               "<>'" & _
               wsn & _
               "'!B" & _
               rw & _
               ")+('" & _
               wsn & _
               "'!C1:C" & _
               rw & _
               "<>'" & _
               wsn & _
               "'!C" & _
               rw & _
               "))*1E+99, , ))"

    Debug.Print sFormula

    'mr = Application.Evaluate(sFormula)
End Sub

然后你就会明白公式了:)

您甚至可以将该公式复制到新工作表中进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    相关资源
    最近更新 更多