我在做Excel的公式处理。
现有
=TEXT("2005-1-1","d-mmm-yyyy")  重点处理
=TEXT(2005-1-1,"d-mmm-yyyy")   重点处理
=TEXT(38353,"d-mmm-yyyy")
上面的"="号不是必须的。嵌套的时候就没有等号
在Excel中,以上三种公式调用,结果是一样的。
在VB里面已经取得整个公式的字符串。
我的要求是,第一,第二种情况,我就转换成第三个公式。
实际问题就是取得TEXT函数中第一个参数进行替换
考虑到EXCEL公式可以嵌套,所以不使用mid(),instr()这些来判断字符串
如用正则表达式。怎样才能正确匹配出,符合"TEXT(p1,p2)"的正则表达式

解决方案 »

  1.   

    难道我的问题真的没人会?
    详细点举例
    TEXT(TEXT("2005-1-1","d-mmm-yyyy"),"DD-MMM-YYY")
    虽然EXCEL里面这样用法有点无稽,但绝对是合法的。
    我的目的就是要把上面的字串转换成
    TEXT(TEXT(38353,"d-mmm-yyyy"),"DD-MMM-YYY")
      

  2.   

    只是查找,还是照还要做替换?
    如果替换,2005-1-1 替换成 38353,那么 2005-1-2 是不是要替换成 38354?如果只是查找:
    TEXT\((['"]?)\d{4}-\d\d?-\d\d?\1,\s*('|")d-mmm-yyyy\2\)这个表达式可以适应 '单引号'测试工具:
    http://www.regexlab.com/zh/workshop.asp?pat=TEXT%5C%28%28%5B%27%22%5D%3F%29%5Cd%7B4%7D-%5Cd%5Cd%3F-%5Cd%5Cd%3F%5C1%2C%5Cs*%28%27%7C%22%29d-mmm-yyyy%5C2%5C%29&txt=%3DTEXT%28%222005-1-1%22%2C%22d-mmm-yyyy%22%29%20%20%u91CD%u70B9%u5904%u7406%0D%0A%3DTEXT%282005-1-2%2C%22d-mmm-yyyy%22%29%20%20%20%u91CD%u70B9%u5904%u7406%0D%0A%3DTEXT%28%272005-1-3%27%2C%27d-mmm-yyyy%27%29%20%20%u91CD%u70B9%u5904%u7406%uFF0C%u5355%u5F15%u53F7%0D%0A%3DTEXT%282006-12-31%2C%27d-mmm-yyyy%27%29%20%20%20%u91CD%u70B9%u5904%u7406%uFF0C%u5355%u5F15%u53F7%0D%0A%0D%0A%3DTEXT%2838353%2C%22d-mmm-yyyy%22%29&dlt=0