Función MOD – Ejemplos en Excel, VBA, Google Sheets
Download the example workbook
Este tutorial demostrará cómo utilizar la Función RESIDUO en Excel y Google Sheets para calcular el resto después de dividir.
Visión Feneral de la Función RESIDUO
La función RESIDUO devuelve el resto, o módulo, de un número después de realizar la división.
Sin embargo, la función RESIDUO no es estrictamente para ayudarnos con nuestros problemas de división. Se vuelve aún más poderosa para cuando queremos buscar cada enésimo elemento en una lista, cada «n» fila, o cuando necesitamos generar un patrón de repetición.
RESIDUO Matemáticas Básicas
Cuando tratas de dividir 13 entre 4, puedes decir que la respuesta es 3 y el resto 1. El «1» en este caso se conoce específicamente como el módulo (de ahí el nombre de la funciónen inglés MOD => RESIDUO). En una fórmula entonces, podríamos escribir
=RESIDUO(13;4)
Y la salida sería 1.
Mirando esta tabla se pueden ver más ilustraciones de cómo funcionará la entrada/salida de RESIDUO.
=RESIDUO(A2;3)
Observe que cuando la entrada era 3, no había ningún resto y por lo tanto la salida de la fórmula era 0. También, en nuestra tabla usamos la función FILA para generar nuestros valores. Gran parte de la potencia de RESIDUO vendrá dada por el uso de la función FILA (o COLUMNA) como veremos en los siguientes ejemplos.
RESIDUO Suma Cada Dos Filas
Considere esta tabla:
A modo de ilustración, la segunda columna tiene la fórmula
=RESIDUO(A2;2)
Para añadir todas las filas pares, podría escribir una fórmula SUMAR.SI y hacer que el criterio busque valores 0 en la columna B. O, para añadir todas las filas impares, haga que el criterio busque valores 1.
Sin embargo, no necesitamos crear la columna auxiliar en absoluto. Puedes combinar el poder de RESIDUO dentro de la función SUMAPRODUCTO para hacerlo todo en un solo paso. Nuestra fórmula para esto sería
=SUMAPRODUCTO(A2:A5; --(RESIDUO(B2:B2; 2)=0)
Como está dentro de SUMAPRODUCTO, la función RESIDUO podrá manejar nuestra entrada de array. Ya hemos visto la salida en la columna auxiliar, pero el array de nuestro RESIDUO en esta fórmula será {0, 1, 0, 1}. Después de comprobar los valores iguales a 0 aplicando el doble unario, el array será {1, 0, 1, 0}. El SUMAPRODUCTO entonces hace su magia o multiplica las matrices para producir {2, 0, 4, 0} y luego suma para obtener la salida deseada de 6.
RESIDUO Suma Cada Enésima Fila
Dado que una fórmula de RESIDUO(x; N) dará como resultado un cero (0) en cada n valor, podemos usar esto para ayudar a las fórmulas a elegir qué valores usar en otras funciones. Mira esta tabla.
Nuestro objetivo es tomar los valores de cada fila marcada como «Total». Observa que el Total aparece cada 3 filas, pero a partir de la fila 4. Por lo tanto, nuestra función RESIDUO utilizará el 3 como 2do argumento, y tenemos que restar 1 al primer argumento (ya que 4 -1 = 3). De este modo, las filas deseadas (4, 7, 10) serán múltiplos de 3 (3, 6, 9). Nuestra fórmula para sumar los valores deseados será
=SUMAPRODUCTO(C2:C10; --(RESIDUO(FILA(A2:A10)+2; 3)=0))
El array producido se transformará así:
{2; 3; 4; 5; 6; 7; 8; 9; 10} {1; 2; 3; 4; 5; 6; 7; 8; 9} {1; 2; 0; 1; 2; 0; 1; 2; 0} {Falso; Falso; Verdadero; Falso; Falso; Verdadero; Falso; Verdadero} {0; 0; 1; 0; 0; 1; 0; 0; 1}
La matriz de criterios de nuestro SUMAPRODUCTO está ahora configurada de la manera en que necesitamos tomar cada tercervalor, y obtendremos nuestro resultado deseado de $90.
MOD Suma en Columnas
Hasta ahora hemos estado usando ejemplos que van verticalmente y usan FILA, pero también puedes ir horizontalmente con la función COLUMNA. Considere esta disposición:
Queremos sumar todos los elementos. Nuestra fórmula para ello podría ser
=SUMAPRODUCTO(B2:E2*(RESIDUO(COLUMNA(B2:E2); 2)=0)
En este caso, estamos configurados para tomar cada segunda columna dentro de nuestro rango, por lo que el SUMAPRODUCTO sólo retendrá los valores distintos de cero para las columnas B y D. Como referencia, aquí hay una tabla que muestra los números de las columnas y su valor correspondiente después de tomar RESIDUO 2.
Resaltar Cada N Fila
Otro uso común de la función RESIDUO es resaltar cada n fila. La forma general para esto será
=RESIDUO(FILA() ± Desplazamiento; N)=0
Donde N es el número de filas entre cada fila resaltada (es decir, para resaltar cada 3era fila, N = 3), y Desplazamiento es opcionalmente el número que necesitamos sumar o restar para conseguir que nuestra primera fila resaltada se alinee con N (es decir, para resaltar cada 3era fila pero empezar en la fila 5, necesitaríamos restar 2 ya que 5 -2 = 3). Tenga en cuenta que con la función FILA, al omitir cualquier argumento, devolverá el número de fila de la celda en la que se encuentra la fórmula.
Usemos nuestra tabla de antes:
Para aplicar un resaltado a todas las filas de Total, crearemos una nueva regla de Formato Condicional con una fórmula de
=RESIDUO(FILA()-1; 3)=0
Cuando el formato condicional aplique esta fórmula, la fila 2 verá
=RESIDUO(2-1; 3)=0 =RESIDUO(1; 3) = 0 =1=0 =Falso
La fila 3 experimentará una salida similar, pero entonces la fila 4 verá
=RESIDUO(4-1; 3)=0 =RESIDUO(3; 3) = 0 =0=0 =Verdadero
Resaltar números enteros o pares
En lugar de resaltar filas específicas, también podría comprobar los valores reales dentro de las celdas. Esto podría ser útil para cuando quiera encontrar números que sean múltiplos de N. Por ejemplo, para encontrar múltiplos de 3 su fórmula de formato condicional sería
=RESIDUO(A2; 3)=0
Hasta este punto, hemos estado tratando con números enteros. Sin embargo, puedes tener una entrada de un decimal (por ejemplo, 1,234) y luego dividir por 1 para obtener sólo la parte decimal (por ejemplo, 0,234). Esta fórmula tiene el siguiente aspecto
=RESIDUO(A2; 1)
Sabiendo esto, para resaltar sólo los enteros la fórmula de formato condicional sería
=RESIDUO(A2; 1)=0
Concatenar Cada N Celdas
Anteriormente hemos estado usando RESIDUO para decirle a la computadora cuando debe tomar el valor en cada N elementos. También se puede utilizar para activar una fórmula más grande que se ejecute. Considere esta disposición:
Queremos concatenar los nombres juntos, pero sólo en cada 3era fila a partir de la fila 2. La fórmula utilizada para ello es
=SI(RESIDUO(FILA()+1; 3)=0; CONCATENAR(A2;" "; A3;" "; A4); "")
Nuestra función RESIDUO es la que actúa como criterio para la función SI general. En este ejemplo, añadimos 1 a nuestra FILA, porque estamos empezando en la fila 2 (2 + 1 = 3). Cuando la salida de RESIDUO es 0, la fórmula hace la concatenación. En caso contrario, sólo devuelve el espacio en blanco.
Contar Valores Pares / Impares
Si alguna vez has necesitado contar cuántos valores pares o impares hay en un rango, sabrás que CONTAR.SI no tiene la capacidad de hacerlo. Sin embargo, podemos hacerlo con RESIDUO y SUMAPRODUCTO. Veamos esta tabla:
La fórmula que utilizaremos para encontrar los valores impares será
=SUMAPRODUCTO(1*(RESIDUO(A2:A7; 2)=1))
En lugar de cargar algunos números de fila, nuestro RESIDUO va a cargar los valores reales de las celdas en el array. La transformación general progresará entonces así:
{5; 5; 3; 3; 2; 1} {1; 1; 1; 1; 0; 1} <- Tomó el residuo de 2 { Verdadero, Verdadero, Verdadero, Falso, Verdadero } <- Comprobó si el valor era 0 {1; 1; 1; 1; 0; 1} <- Multiplicado por 1 para convertir de Verdadero/Falso a 1/0
El SUMAPRODUCTO entonces suma los valores en nuestra matriz, dando respuesta deseada de: 5.
Patrón de Repetición
Todos los ejemplos anteriores han estado comprobando la salida de RESIDUO para un valor. También se puede utilizar RESIDUO para generar un patrón de repetición de números, que a su vez puede ser muy útil.
Primero, digamos que tenemos una lista de elementos que queremos que se repitan.
Podríamos intentar copiar y pegar manualmente todas las veces que necesitemos, pero eso sería tedioso. En su lugar, vamos a querer utilizar la función INDICE para recuperar nuestros valores. Para que el INDICE funcione, necesitamos que el argumento de la fila sea una secuencia de números que vaya {1, 2, 3, 1, 2, 3, 1, etc.}. Podemos lograr esto usando residuo.
Primero, empezaremos con la función FILA. Si empiezas con
=FILA(A1)
Y luego lo copias hacia abajo, obtienes la secuencia numérica básica de {1; 2; 3; 4; 5; 6; …}. Si aplicamos la función RESIDUO con el 3 como divisor
=RESIDUO(FILA(A1); 3)
obtendríamos {1; 2; 0; 1; 2; 0; …}. Vemos que tenemos un patrón repetitivo de «0; 1; 2», pero a la primera serie le falta el 0 inicial. Esto cambiará nuestra secuencia inicial a {0; 1; 2; 3; 4; 5; …}
=RESIDUO(FILA(A1)-1; 3)
Y después de salir de la función RESIDUO, tenemos {0; 1; 2; 0; 1; 2; …}. Esto se acerca a lo que necesitamos. El último paso es añadir 1 al array.
=RESIDUO(FILA(A1)-1; 3)+1
Lo que ahora produce una secuencia de números de {1; 2; 3; 1; 2; 3; …}. Esta es nuestra secuencia deseada. Introduciéndola en una función INDICE, obtenemos nuestra fórmula de:
=INDICE(MyList;RESIDUO(FILA(A1)-1;3)+1)
La salida se verá así:
Ejemplos de MOD (RESIDUO) en VBA
También puede utilizar la función MOD (RESIDUO) en VBA.
Dentro de VBA, MOD es un operador (al igual que los operadores de más, menos, multiplicación y división). Así, ejecutando las siguientes sentencias VBA
Range("C2") = Range("A2") Mod Range("B2") Range("C3") = Range("A3") Mod Range("B3") Range("C4") = Range("A4") Mod Range("B4") Range("C5") = Range("A5") Mod Range("B5") Range("C6") = Range("A6") Mod Range("B6") Range("C7") = Range("A7") Mod Range("B7")
producirá los siguientes resultados
Para los argumentos de la función (known_y’s, etc.), puedes introducirlos directamente en la función, o definir variables para utilizarlos en su lugar.
Función RESIDUO de Google Sheets
La función RESIDUO funciona exactamente igual en Google Sheets que en Excel: