
Tengo datos en una celda como:
Buena respuesta -6,RNR -2,Sin voz -1
Necesito obtener la suma solo de los números de la celda. ¿Cómo puedo hacerlo en una sola fórmula?
Respuesta1
yo uso excelComplemento RegEx Buscar/Reemplazar, agrega funcionalidad de expresión regular a Excel.
(No estoy afiliado a ese complemento de ninguna manera, solo soy un usuario entusiasta)
Aquí puedes usar fórmulas como esta para encontrar y sumar todos los números:
=SUM(RegExFind(A1,"\d+"))
O considerar valores negativos también:
=SUM(RegExFind(A1,"[-\d]+"))
Respuesta2
Según la información proporcionada y suponiendo que solo habrá 3 valores para extraer y cada uno de 1 dígito de longitud, lo siguiente funcionará para una cadena enA2:
=LEFT(SUMPRODUCT(MID(0&A2,LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$25),1))* ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10),1)+RIGHT(SUMPRODUCT(MID(0&A2,LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$25),1))* ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10),1)+RIGHT(A2,1)
Por supuesto, he hecho algunas suposiciones aquí,
Si esto no funciona, explícame con más detalle cómo están estructurados tus datos, etc., e intentaré modificarlos.
Respuesta3
Si sus datos son realmente como los muestra, con el número precedido por un <space>
y seguido por un <comma>
o el final de la cadena, entonces puede usar lo siguiente.
Definir una fórmula y nombrarla seq_99
donde
seq_99 refers to: =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)
Entonces puedes usar estoingresado en matrizfórmula:
=SUM(IF(ISNUMBER(--TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",REPT(" ",99)),seq_99,99))),--TRIM(MID(SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",REPT(" ",99)),seq_99,99))))
Aentrar en matrizuna fórmula, mantenga presionado ctrl+ shiftmientras presiona enter. Si hace esto correctamente, Excel colocará llaves {...}
alrededor de la fórmula que puede ver en la barra de fórmulas.
Supuse que -
denotaba un número negativo. Si no es así, resulta trivial alterar la fórmula para excluirlo.
Respuesta4
Me gustaría sugerir una pequeña función de VBA. Tenga en cuenta que el delimitador se puede ajustar como se muestra a continuación.
Function SumNumbers(rngS As Range, Optional strDelim As String = "-") As Double
Dim xNums As Variant, lngNum As Long
xNums = Split(rngS, strDelim)
For lngNum = LBound(xNums) To UBound(xNums) Step 1
SumNumbers = SumNumbers + Val(xNums(lngNum))
Next lngNum
End Function
Notas:
- Utilice esta función de la forma habitual:=SumNumbers(Dirección de celda).
- Si el delimitador es ESPACIO, utilicestrDelim como cadena = " "en la lista de argumentos.
- Si el delimitador es COMA, utilicestrDelim como cadena = ","en la lista de argumentos.
Espero que esto te ayude.