Un lector consultaba por la manera de reducir un número a su suma mínima de los valores de sus dígitos en nuestra hoja de Excel:
La pregunta parece sencilla a priori, y quizá tenga un componente 'esotérico' detrás... ya que esta es una de las maneras en que se obtiene el número de la suerte personal de cada uno
;-)
Sin embargo, hay un componente matemático relevante detrás de todo esto, y es que la Prueba del nueve para la suma (o resta) explica en parte algunas de las fórmulas que vamos a desarrollar a continuación.
Puedes leer algo más en la Wikipedia
Partiremos de un número cualquiera en nuestra celda A2 (por ejemplo 1309)
Una primera solución para conseguir 'nuestro número de la suerte' (1309 - 1+3+0+9 = 13 - 1+3 = 4) sería mediante la siguiente fórmula:
=1+RESIDUO(SUMAPRODUCTO(--EXTRAE(A2;FILA(INDIRECTO("1:" & LARGO(A2)));1))-1;9)
Reduciendo mucho el método o prueba, el asunto consiste en:
1) Hallar los restos de la división por 9 de los componentes de la operación aritmética.
2) Realizar con estos restos la misma operación aritmética y calcular para el resultado obtenido su resto cuando se divida por 9.
3) Obtener también el resto de dividir por 9 el resultado de la operación aritmética.
4) Comparar los números obtenidos en los pasos 2 y 3.
Esta fórmula trabaja, en realidad, matricialmente (una virtud de la función SUMAPRODUCTO), donde:
(--EXTRAE(A2;FILA(INDIRECTO("1:" & LARGO(A2)));1))
nos devuelve el listado de los componentes del valor a estudiar, en nuestro ejemplo:
{1;3;0;9}
Al aplicarle posteriormente SUMAPRODUCTO, conseguimos sus suma de elementos.
Finalmente, aplicamos la regla del nueve y al obtener su resto (función RESIDUO) con los ajustes oportunos (+1 y -1) llegamos al dato deseado.
Una alternativa es el empleo de programación en VBA para Excel, creando una función personalizada (UDF).
ASi pues insertamos en un módulo estándar el siguiente procedimiento Function:
En este caso el procedimiento es sencillo, recorremos los elementos del número, dígito a dígito, sumando sus partes.. y aplicamos recurrentemente mientras el valor obtenido tenga más de un dígito.
Lógicamente en ambos casos obtenemos el mismo resultado; para nuestro ejemplo el 4
[...]necesito una macro que me permita calcular el valor en su mínima expresión de un nombre al introducirlo. ejemplo: María =41991, 4+1+9+9+1=24; 2+4=6 entonces el valor numérico de María=6 [...] |
La pregunta parece sencilla a priori, y quizá tenga un componente 'esotérico' detrás... ya que esta es una de las maneras en que se obtiene el número de la suerte personal de cada uno
;-)
Sin embargo, hay un componente matemático relevante detrás de todo esto, y es que la Prueba del nueve para la suma (o resta) explica en parte algunas de las fórmulas que vamos a desarrollar a continuación.
Puedes leer algo más en la Wikipedia
Partiremos de un número cualquiera en nuestra celda A2 (por ejemplo 1309)
Una primera solución para conseguir 'nuestro número de la suerte' (1309 - 1+3+0+9 = 13 - 1+3 = 4) sería mediante la siguiente fórmula:
=1+RESIDUO(SUMAPRODUCTO(--EXTRAE(A2;FILA(INDIRECTO("1:" & LARGO(A2)));1))-1;9)
Reduciendo mucho el método o prueba, el asunto consiste en:
1) Hallar los restos de la división por 9 de los componentes de la operación aritmética.
2) Realizar con estos restos la misma operación aritmética y calcular para el resultado obtenido su resto cuando se divida por 9.
3) Obtener también el resto de dividir por 9 el resultado de la operación aritmética.
4) Comparar los números obtenidos en los pasos 2 y 3.
Esta fórmula trabaja, en realidad, matricialmente (una virtud de la función SUMAPRODUCTO), donde:
(--EXTRAE(A2;FILA(INDIRECTO("1:" & LARGO(A2)));1))
nos devuelve el listado de los componentes del valor a estudiar, en nuestro ejemplo:
{1;3;0;9}
Al aplicarle posteriormente SUMAPRODUCTO, conseguimos sus suma de elementos.
Finalmente, aplicamos la regla del nueve y al obtener su resto (función RESIDUO) con los ajustes oportunos (+1 y -1) llegamos al dato deseado.
Una alternativa es el empleo de programación en VBA para Excel, creando una función personalizada (UDF).
ASi pues insertamos en un módulo estándar el siguiente procedimiento Function:
Function SumaDigitos(numero As Range) As Long Dim txt As String Application.Volatile 'definimos variable txt = numero.Value 'marcamos un bucle mientras 'que el número de dígitos del dato acumulado sea mayor que 1 While Len(txt) > 1 'comenzamos contador acumulado SumaDigitos = 0 'recorremos cada caracter/número del valor For i = 1 To Len(txt) 'acumulamos dígito tras dígito SumaDigitos = SumaDigitos + Val(Mid(txt, i, 1)) ' * 1 Next 'obtenemos un nuevo valor parcial 'sobre el que operaremos nuevamente... txt = SumaDigitos Wend End Function
En este caso el procedimiento es sencillo, recorremos los elementos del número, dígito a dígito, sumando sus partes.. y aplicamos recurrentemente mientras el valor obtenido tenga más de un dígito.
Lógicamente en ambos casos obtenemos el mismo resultado; para nuestro ejemplo el 4
Hola, el UDF presenta un error cuando uno sobrepasa mas de 8 digitos a considerar y sumar...yo corregi el error...
ResponderEliminar¿¿??
Eliminarhola Pablo, donde te salta el error, probé con los 16 dígitos que permite Excel y devuelve el dato sin problemas
Gracias!