如何将Evaluate()转换为字符串而不截断?

时间:2013-10-09 18:08:40

标签: excel-vba vba excel

以下代码......

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))

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

由于其他原因,我不能将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”我仍然获得“{2015”错误Output

缩短公式确实解决了我的一些错误,但是这个特殊的公式(220个字符)仍然给我带来了问题。关于这个的任何想法,现在?

1 个答案:

答案 0 :(得分:4)

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

  1. 尝试删除所有不必要的空格并使用&而不是连接函数。这可能会缩短你的公式。
  2. 将公式分解为多个部分并使用WorksheetFunction方法而不是Evaluate方法。
  3. 将公式放入工作表的单元格中,计算并检索值。