【问题标题】:How to make this match/index worksheetfunction as array formula?如何将此匹配/索引工作表用作数组公式?
【发布时间】:2023-04-10 15:46:01
【问题描述】:
matchRECORD1 = Application.WorksheetFunction.Index(Sheets("TEMPDB").Range("D" & lrCHIMPORT2 + 1 & ":D" & lr3CHIMPORT2), _
                                    Application.WorksheetFunction.Match(Sheets("STATIONS").Cells(RARSTAT3, 2) & Sheets("STATIONS").Cells(1, cARTIST), _
                                    Sheets("TEMPDB").Range("C" & lrCHIMPORT2 + 1 & ":C" & lr3CHIMPORT2) & Sheets("TEMPDB").Range("A" & lrCHIMPORT2 + 1 & ":A" & lr3CHIMPORT2)))

如何使它像一个数组公式?

【问题讨论】:

  • 使用评估。还有实际的公式。
  • Thnx Scott,使用 Evaluate 的代码究竟会是什么样子?实际上之前从未使用过...

标签: arrays excel excel-formula match vba


【解决方案1】:

您可以使用以下语句:

  matchRECORD1 = Evaluate("INDEX(TEMPDB!D" & lrCHIMPORT2 + 1 & ":D" & lr3CHIMPORT2 & _
  ", MATCH(STATIONS!B" & RARSTAT3 & "& STATIONS!" & cells(1, cARTIST).Address & _
  " , TEMPDB!C" & lrCHIMPORT2 + 1 & ":C" & lr3CHIMPORT2 & _
  " & TEMPDB!A" & lrCHIMPORT2 + 1 & ":A" & lr3CHIMPORT2 & "))")

这是一些乏味的工作,但这是强制 Excel 将其评估为数组公式的唯一(可能)方法。问题是 VBA 连接运算符 & 不适用于数组或范围对象。

【讨论】:

  • 谢谢@A.S.H!我会尝试这个解决方案。我可以简要解释一下提议的代码吗?为什么您只为第二个标准放置 .Address 属性?我们不应该将 .Address 属性用于 MATCH 内的所有范围吗?两个条件和两个条件范围?
  • 顺便说一句,连接旨在用作先前在代码内部创建的单独的“单元格键”,而该单元格将用作标准和标准范围(我们只有一个标准和一个标准范围) .但是...这会导致在此行之前更改整个代码结构,我想避免这种情况。有了这个 EVALUATE 很可能......
  • @IvanKočiš 我使用了cells(1, cARTIST).Address 我假设cARTIST 是一个数字,并且对范围引用中的列使用数字更复杂(如果它是一个字母,我们可以使用@987654325 @)。对于其他范围,列字母很明显。
  • 谢谢。我仍然需要检查它,我不在家,但我认为它会做的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多