RegEx для сопоставления и замены только номера столбца-цифры из строки формулы Excel - PullRequest
1 голос
/ 04 мая 2019

Мне нужно заменить цифру columnNumber из строки формулы Excel.

Я попытался написать регулярное выражение (/[A-Z]\d+/g), чтобы получить columnNumber с цифрой из строки формулы, которая, кажется, не работает должным образом, так как она просто определяет columnNumber (E2 ~ D2) вместо того, чтобы заменять только цифру этого столбцаNumber-цифра, он заменяет весь columnNumber.

var formula = "=IF(E2<(D2*0.004),100,IF((100-(((E2-(D2*0.004))/(D2*0.004))*100))<0,0,(100-(((E2-(D2*0.004))/(D2*0.004))*100))))";
    var regex = /[A-Z]\d+/g;

    for(var i=2; i<=3; i++)
    console.log(formula.replace(regex,i)

Мне нужно это

/** 
=IF(E2<(D2*0.004),100,IF((100-(((E2-(D2*0.004))/(D2*0.004))*100))<0,0,(100-(((E2-(D2*0.004))/(D2*0.004))*100))))

=IF(E3<(D3*0.004),100,IF((100-(((E3-(D3*0.004))/(D3*0.004))*100))<0,0,(100-(((E3-(D3*0.004))/(D3*0.004))*100))))
**/

Но получая это

/** 
=IF(2<(2*0.004),100,IF((100-(((2-(2*0.004))/(2*0.004))*100))<0,0,(100-(((2-(2*0.004))/(2*0.004))*100))))

=IF(3<(3*0.004),100,IF((100-(((3-(3*0.004))/(3*0.004))*100))<0,0,(100-(((3-(3*0.004))/(3*0.004))*100))))
**/

1 Ответ

2 голосов
/ 04 мая 2019

Я не совсем уверен, хотите ли вы заменить цифру после [AZ] или нет.Если это так, это может помочь вам сделать это:

var formula = "=IF(E2<(D2*0.004),100,IF((100-(((E2-(D2*0.004))/(D2*0.004))*100))<0,0,(100-(((E2-(D2*0.004))/(D2*0.004))*100))))";
    var regex = /([A-Z])\d+/g;

    for(var i=2; i<=3; i++){
        console.log(formula.replace(regex,'\$1'+i));
    }        

Демонстрация RegEx

Этот график показывает, как будет работать выражение:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...