第二个需求,把
SUM(A1,A3:A5)+A8 这样的excel公式解析成
A1+A3+A4+A5+A8不胜感激额。

解决方案 »

  1.   

    第一个
    var a="(sheet2!A8 + sheet3!B8)/sheet4!AA12*E5"
    var b=a.replace(/(sheet)?([0-9]+)?(?:!?)([A-Z]+)([0-9]+)/g,"YS(tempid,$1$2,$3,$4)")
    var c=b.replace(/YS\(tempid,,/,"YS\(tempid,sheetname,")
    alert(c)//弹出(YS(tempid,sheet2,A,8) + YS(tempid,sheet3,B,8))/YS(tempid,sheet4,AA,12)*YS(tempid,sheetname,E,5)第二个
    var a="SUM(A1,A3:A5)+A8"
    var b=a.replace(/SUM\(([A-Z]+[0-9]+),([A-Z]+[0-9]+):([A-Z]+[0-9]+)\)\+([A-Z]+[0-9]+)/g,"$1+$2+$3+$4")
    alert(b)楼主是不是写错了? 怎么来了个A4??方法不是很简洁  期待高手方法
      

  2.   

    第一个
    <script>
    var str = '(sheet2!A8 + sheet3!B8)/sheet4!AA12*E5';
    //var reg = /(\w+)!(\D+)(\d+)|\*(\D+)(\d+)/g;
    var reg = /^\((\w+)!(\D+)(\d+)\s*\+\s*(\w+)!(\D+)(\d+)\)\/(\w+)!(\D+)(\d+)\*(\D+)(\d+)$/;
    str = str.replace(reg, '(YS(tempid,$1,$2,$3) + YS(tempid,$4,$5,$6))/YS(tempid,$7,$8,$9)*YS(tempid,sheetname,$10,$11)');
    alert(str);
    </script>
      

  3.   

    第一个
    <script>
    var str = '(sheet2!A8 + sheet3!B8)/sheet4!AA12*E5';
    //var reg = /(\w+)!(\D+)(\d+)|\*(\D+)(\d+)/g;
    var reg = /^\((\w+)!(\D+)(\d+)\s*\+\s*(\w+)!(\D+)(\d+)\)\/(\w+)!(\D+)(\d+)\*(\D+)(\d+)$/;
    str = str.replace(reg, '(YS(tempid,$1,$2,$3) + YS(tempid,$4,$5,$6))/YS(tempid,$7,$8,$9)*YS(tempid,sheetname,$10,$11)');
    alert(str);
    </script>
      

  4.   


    没错。EXCEL的公式 sum(D3:D6) = D3+D4+D5+D6 不是吗? 呵呵 
      

  5.   

    怪我没说清楚。
    sheetname不是固定sheet1的样式,是任意字符。比如说  工资表!D4,比如说,库存表!AB12
      

  6.   

    第二个麻烦点儿
    <script>
    var str = 'SUM(A1,A3:A5)+A8';
    var reg = /[\w:]+/ig, arr = str.match(reg), sum = '';
    arr.shift();
    arr[1]=s(arr[1]);
    alert(arr.join('+'));
    function s(str){
    var arr= str.split(':'), s = arr[0].charAt(0),a=arr[0].charAt(1), b = arr[1].charAt(1);
    if(a==b)return;
    var tem='';
    while(a<b){
    tem+= s+(a++)+'+';
    }
    return tem+arr[1];
    }
    </script>
      

  7.   

    多谢几位,第二个问题解决。剩第一问题,把
    (工资表!A8 + 奖金表!B8)/sheet4!AA12*E5解析成(YS(tempid,工资表,A,8) + YS(tempid,奖金表,B,8))/YS(tempid,sheet4,AA,12)*YS(tempid,sheetname,E,5) 
      

  8.   

    var a="(工资表!A8 + 奖金表!B8)/sheet4!AA12*E5"
    var b=a.replace(/([\u4e00-\u9fa5a-zA-Z0-9]+){1}(?:[!]{1})([A-Z]+)(\d+)|\*(\d)/g,"YS(tempid,$1,$2,$3)")
    var c=b.replace(/\*(\D)(\d)/,"*YS\(tempid,sheetname,$1,$2)")
    alert(c)
      

  9.   

    第二个仍存在问题,要判断的内容多了。
    比如 公式是A3 - SUM(A1,B1:F1)+A8我先自己写着44,同时也期盼高手给出绝佳答案。