我在做Excel的公式处理。
现有
=TEXT("2005-1-1","d-mmm-yyyy")  重点处理
=TEXT(2005-1-1,"d-mmm-yyyy")   重点处理
=TEXT(38353,"d-mmm-yyyy")
上面的"="号不是必须的。嵌套的时候就没有等号
在Excel中,以上三种公式调用,结果是一样的。
在VB里面已经取得整个公式的字符串。
我的要求是,第一,第二种情况,我就转换成第三个公式。
实际问题就是取得TEXT函数中第一个参数进行替换
EXCEL公式可以嵌套怎样才能正确匹配出,符合TEXT(p1,p2)
详细点举例
TEXT(TEXT("2005-1-1","d-mmm-yyyy"),"DD-MMM-YYY")
虽然EXCEL里面这样用法有点无稽,但绝对是合法的。
我的目的就是要把上面的字串转换成
TEXT(TEXT(38353,"d-mmm-yyyy"),"DD-MMM-YYY")
也就是当公式
TEXT(TEXT(...(p1,p2),p3),...pn)这样的形式,然后将其中的p1替换成指定的数字
因为是做一个公式转换处理,所以公式是以字符串方式保存。目的是从EXCEL中将公式导出,而保持公式的合法性。

解决方案 »

  1.   

    先求X,Y,Z的值
    2005*X + 1*Y - 1*Z = 38353
    2006*X + 1*Y - 1*Z = 39353
    2006*X + 2*Y - 14*Z = 39453然后写一个功能函数,把"2005-1-1"
    转换成38353.
      

  2.   

    Dim str As String, pStart As Long, pEnd As Long, strTmp As String, strRlt As String
    str = "TEXT(TEXT(...(p1,p2),p3),...pn)"pStart = InStr(str, ",")
    strTmp = Left(str, pStart - 1)pEnd = InStrRev(tmp, "(")
    strRlt = Mid(tmp, pEnd + 1, Start - 1)
      

  3.   

    CLng(CDate("2005-1-1")) ------->38353
    Dim str As String, pStart As Long, pEnd As Long, strTmp As String, strRlt As String
    str = "TEXT(TEXT(...(p1,p2),p3),...pn)"pStart = InStr(str, ",")
    strTmp = Left(str, pStart - 1)pEnd = InStrRev(tmp, "(")
    strRlt = Mid(tmp, pEnd + 1, Start - 1)CLng(CDate(strRlt)) '将日期转换为长整型数