Допустим, у меня есть результат формулы, который возвращает это +10+5+1+40
, как текст. Затем я хочу сложить эти числа, чтобы получить общую сумму.
Результатом может быть любое количество значений, например +2+5
или +10+5+7+1+8
.
Если это полезно, исходный набор данных выглядит примерно так S10_S5_S1_S40
или так E_E_S2_S5
. Я удалил все, кроме цифр рядом с S, которые я и хочу добавить.
Наконец, я пишу от имени суперпользователя, поскольку хочу по возможности избегать VBA.
Обновлять
По этой формуле:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D25,"E",""),"_",""),"S","=",1),"S","+")
Я свел это к этому =10+5+1+40
, где D25 = S10_S5_S1_S40
... но это на самом деле то же самое, что и наличие a +
спереди, я полагаю!
решение1
Предполагая, что у вас есть только 1- или 2-значные числа, как в ваших примерах, тогда эта «формула массива» будет суммировать все числа «S» из D25.
=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",(0&SUBSTITUTE(MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,2),"_",""))+0))
подтверждено сCTRL+SHIFT+ENTER
так что если D25 содержит S10_S5_S1_S40
это даст вам результат 56
решение2
Формулы на рабочем листе, которая это делает, нет. Вы можете использовать старую макрофункцию Excel 4 EVALUATE(), но ее можно использовать только в именованном диапазоне.
Итак, если у вас есть данные в столбце D, а в столбце E есть формула замены, например, выберите F25 и создайте новую именованную формулу с помощью Name Manager. Дайте ей имя "EvaluateMe" и пусть она ссылается на
=EVALUATE(Sheet1!E25)
Затем введите
=EvaluateMe
в ячейку F25, и результат будет отображен. Этот именованный диапазон использует относительную ссылку, и если активная ячейка была в F25, когда вы ее определили, он всегда будет пытаться оценить ячейку непосредственно слева.
решение3
Это вытекает из «потрясающего» ответа Барри. Следующая «формула массива»
=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,IFERROR(FIND("_",D25,ROW(INDIRECT("1:"&LEN(D25)))+1),LEN(D25)+1)-(ROW(INDIRECT("1:"&LEN(D25)))+1))+0))
(введено с помощью Ctrl+ Shift+ Enter) добавит все числа «S» в ячейке D25
, независимо от длины; так, если D25
содержит «S10_S5_S1_S240», приведенная выше формула даст вам результат 256. Это также будет обрабатывать отрицательные числа: «S10_S5_S–1_S240» даст 254.
Я не проверял это досконально. Я, вероятно, сам найду что-то не так в понедельник утром. :)