Valores de suma complejos en una celda

Valores de suma complejos en una celda

Digamos que tengo un resultado de fórmula que devuelve esto +10+5+1+40, como texto. Luego quiero sumar esos números para obtener el total.

El resultado podría ser cualquier número de valores, como por ejemplo +2+5o +10+5+7+1+8.

En caso de que sea útil, el conjunto de datos original es algo como esto S10_S5_S1_S40o esto E_E_S2_S5. He eliminado todo excepto los números al lado de S, que es lo que quiero agregar.

Por último, estoy publicando en superusuario porque quiero evitar VBA si puedo.

Actualizar

A través de esta fórmula: =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D25,"E",""),"_",""),"S","=",1),"S","+")

Lo he reducido a esto =10+5+1+40, donde D25 = S10_S5_S1_S40... ¡pero eso es realmente lo mismo que tener un +frente, supongo!

Respuesta1

Suponiendo que solo tiene números de 1 o 2 dígitos según sus ejemplos, esta "fórmula matricial" sumará todos los números "S" de D25

=SUM(IF(MID(D25,ROW(INDIRECT("1:"&LEN(D25))),1)="S",(0&SUBSTITUTE(MID(D25,ROW(INDIRECT("1:"&LEN(D25)))+1,2),"_",""))+0))

confirmado conCTRL+SHIFT+ENTER

Entonces, si D25 contiene S10_S5_S1_S40eso, te dará el resultado 56.

Respuesta2

No existe una fórmula de hoja de trabajo que haga eso. Puede usar la antigua función de macro de Excel 4 EVALUAR (), pero solo se puede usar en un rango con nombre.

Entonces, si tiene datos en la columna D y tiene la fórmula sustituta en la columna E, por ejemplo, seleccione F25 y cree una nueva fórmula con nombre con el Administrador de nombres. Dale el nombre "EvaluateMe" y deja que se refiera a

=EVALUATE(Sheet1!E25)

Luego, ingresa

=EvaluateMe 

en la celda F25 y se mostrará el resultado. Este rango con nombre utiliza una referencia relativa, y si la celda activa estaba en F25 cuando la definiste, siempre intentará evaluar la celda directamente a la izquierda.

Respuesta3

Esto se deriva de la “asombrosa” respuesta de Barry. La siguiente “fórmula matricial”

=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))

(ingresado con Ctrl+ Shift+ Enter) sumará todos los números 'S' en la celda D25, independientemente de su longitud; entonces, si D25contiene "S10_S5_S1_S240", la fórmula anterior le dará el resultado 256. Esto también manejará números negativos: "S10_S5_S–1_S240" dará como resultado 254.

No lo he probado exhaustivamente. Probablemente encontraré algún problema el lunes por la mañana. :)

información relacionada