excel vba syntax for evaluate(“min(index(row

从另一篇文章, 结合行重复我收到答案,但有问题parsing评估线。

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:" & rw & ")

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

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

如果有人可以提供一个更简单的例子MIN(INDEX(ROW(…)只有一些参数和解释,这将是非常有用的。

每当有疑问,请在即时窗口中debugging公式。 这是一个例子

 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 

在这里输入图像说明

公式将清楚你:)

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

在这里输入图像说明