1

以下代码...

Dim Formula As String  
Dim Output As String  

Formula = "IF(ISBLANK(VLOOKUP(D3, SCALES!N:P, 2, FALSE)), CONCATENATE(""PY "", IF(LEFT(BM3,4) = ""PPY "", RIGHT(BM3,LEN(BM3)-4), BM3) / VLOOKUP(D3, SCALES!N:P, 3, FALSE)), IF(LEFT(M3) = ""PPY "", CONCATENATE(""PPY "", RIGHT(M3, LEN(M3) - 4) / VLOOKUP(D3, SCALES!N:P, 2, FALSE)), M3 / VLOOKUP(D3, SCALES!N:P, 2 FALSE)))"  

Output = CStr(Sheet1.Evaluate(Formula))

...当超过 255 个字符时导致Output等于“错误 2015” 。Formula

由于其他原因,我无法重铸Output为 Double。那么,如何在Evaluate()不将公式截断为 255 个字符的情况下将该调用的结果转换为字符串?

编辑:

当...
Formula = "IF(ISBLANK(SCALES!L3),""PY ""&IF(LEFT(BM2,4)=""PPY "",RIGHT(BM2,LEN(BM2)-4),BM2)/VLOOKUP(D2,SCALES!K:M,3,FALSE),IF(LEFT(M2)=""PPY "",""PPY ""&RIGHT(M2,LEN(M2)-4)/VLOOKUP(D2,SCALES!K:M,2,FALSE)),M2/VLOOKUP(D2,SCALES!K:M,2,FALSE))"
...并且 L3 为空白时,BM2 为“40430”,D2 为“TX”,M2 为“41197”,我仍然收到Output“错误 2015”。

缩短公式确实解决了我的一些错误,但是这个特定的公式(220 个字符)仍然给我带来了问题。现在有什么想法吗?

4

1 回答 1

4

事实是您遇到了 Excel 中的限制——Evaluate 方法只接受最多 255 个字符的字符串。你有几个选择:

  1. 尝试删除所有不必要的空格并使用 & 代替 concatenate 函数。这可能会缩短你的公式。
  2. 将公式分解为多个部分并使用 WorksheetFunction 方法而不是 Evaluate 方法。
  3. 将公式放入工作表的单元格中,计算并检索值。
于 2013-10-09T18:23:33.270 回答