Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

miércoles, 21 de febrero de 2018

Problema: Sabes cómo sumar los dígitos de un número en Excel

Hoy quiero mostrar algo gracioso que vi el otro día en un libro del hijo de un amigo. Venía básicamente a mostrar la suma de los componentes de un número. Por ejemplo, 21, su suma sería 3, y para 15678 sería 1+5+6+7+8 que ya sabemos que 27.

Y en Excel, cómo se podría hacer con una fórmula?



Pues veremos que para hacerlo usaremos 2 métodos, o bien una fórmula matricial o una macro. Lo bueno de ver ésto es que nos ayudará a entender mejor las fórmulas de matriz así como las macros.

Veamos!


Imaginemos que tenemos los siguientes números aleatorios


Su suma sería así:





1. Con fórmula matricial (ver tutorial sobre matriciales Las fórmulas matriciales


La fórmula a utilizar sería (para el número situado en la celda B3)

=SUMA(VALOR(EXTRAE(B3,FILA(INDIRECTO("1:"&LARGO(B3))),1)))


Pues veamos cómo funciona esa fórmula.


  • La función LARGO (mira aquí para entender esta función mejor: La función LARGO) calcula la longitud del texto, en este caso 10.


  • Por la tanto el rango ("1:"&LARGO(B3)) quedaría en (1:10). Para convertirlo en referencia se usa la función INDIRECTO (La función INDIRECTO).
  • Esta función INDIRECTO esta introducida dentro de una función FILA (La función FILA) la cual nos dice la fila de una celda. Así Fila(B3) es 2, pero FILA(1:10) en función matricial (CTRL+MAYUSC+ENTER) es {1;2;3;4;5;6;7;8;9;10}. Para ver esto se puede hacer fácilmente así. Primero se hace CTRL+MAYUSC+ENTER, y se verá un número solo en la celda ya que no puede mostrar un matriz, pero de hecho hay una matriz!. Para poder ver la matriz, estando situado en la celda, se puede hacer F2+F9 y voila!




  • Si la escribimos con lo que ya hemos calculado sería así:                                        EXTRAE(B3,{1;2;3;4;5;6;7;8;9;10},1) cuyo resultado en función matricial (ya sabes mediante CTRL+MAYUSC+ENTER) sería ={"7";"4";"4";"2";"8";"0";"3";"2";"9";"5"}, pero en formato texto
  • Teniendo ese resultado, ahora se convierte el texto a valor para que se pueda sumar. Lo hacemos mediante la función VALOR. Con lo que  =VALOR(EXTRAE(B3,FILA(INDIRECTO("1:"&LARGO(B3))),1)) es función matricial dará como resultado ={7;4;4;2;8;0;3;2;9;5} ya convertido a número.
  • Con lo que ya podemos sumarlo, mediante la función SUMA, claro está!


2. Con código VBA (Macro)

Pues también se puede calcular con un código corto de VBA que calculará el total hasta que el número se convierta en un solo dígito.  


Tengamos en cuenta algunas cosas para personalizar el código

  • B3 es la celda donde se guarda su primer número.
  • B es la dirección de la columna donde se guardan los números

Descárgate el archivo


Aquí te dejo el archivo para que lo descargues y veas cómo se han usado todo lo mencionado en la entrada de hoy.

Sumar dígitos


Te ha gustado el artículo?

No te olvides de mostrar tu gratitud hacia el autor (yo) mediante una de las 3 siguientes acciones:

1. Puedes dejar una donación pinchando en la siguiente imagen.

PayPal. La forma rápida y segura de pagar en Internet


2. Puedes recomendar el artículo en Google haciendo clic en g+1 (justo después del artículo), también puedes compartirlo en Facebook, y/o dejar comentarios.

Quieres aprender más en Excel o tienes algún problema que necesita solución?

Puedo ofrecer servicios de consultoría así como cursos personalizados online. Mírate el siguiente enlace si estás interesado/a.


El Sabio de Excel busca colaborades del blog

Si te interesa compartir tu conocimiento sobre Excel de tal manera que puedas ayudar a otras personas, por favor mándame un email a elsabiodeexcel@gmail.com


Subscríbete y recibe todos las entradas por email


Para ello regístrate suministrando tu email en el sitio "Recibe los trucos en tu email" del menú de la derecha.

O sígueme por las redes sociales


2 comentarios:

  1. La fórmula matricial no me funciona tal como está escrita, el resultado que da no es el correcto. Os sugiero usar esta otra:
    =SUMAPRODUCTO(1*EXTRAE(B3;FILA(INDIRECTO("1:"&LARGO(B3)));1))
    donde B3 es la celda que contiene el número del cual queremos sumar sus dígitos.

    ResponderEliminar
  2. POR FINNNNNNN ALGO QUE FUNCIONA, GRACIAS GENIO

    ResponderEliminar