Función SCAN – Excel y Google Sheets

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on febrero 5, 2023

Este tutorial demostrará cómo utilizar la función SCAN en Excel. (Nota: Esta función sólo está disponible en Excel 365.)

Función SCAN en Excel

 

Definición

La función SCAN aplica una función LAMBDA para cada elemento de un array y devuelve un array de resultados con el mismo tamaño que el array de origen.

=SCAN(0;C3:C7;LAMBDA(a;b;a+b))

Función SCAN Ejemplo en Excel

 

Sintaxis y Argumentos

Esta es la sintaxis de la función SCAN:

=SCAN ([valor_inicial]; array; lambda(acumulador; valor))

Valor_inicial

El 1er argumento es el valor_inicial. Este argumento es el valor inicial del acumulador en la función LAMBDA. Es una entrada opcional con un valor vacío por defecto.

Argumento Valor Inicial Función Scan

Array

El 2do argumento es el array, que es el array fuente. La función SCAN iterará y aplicará la función LAMBDA a través de cada elemento de este array dado.

Argumento Array Función Scan

Nota: La dimensión del array puede ser 1D Vertical u Horizontal o 2D.

Función LAMBDA

La función LAMBDA en la función SCAN consta de dos parámetros y una fórmula:

Acumulador:

En una suma acumulativa, el acumulador acumula su valor por iteración, pero esto no es necesariamente cierto para todos los escenarios. El acumulador es técnicamente la salida de la Función LAMBDA del elemento anterior.

Acumulador de la Función LAMBDA

Nota: Su valor inicial depende del argumento valor_inicial.

Valor

El valor es el elemento actual del array.

Valor de la Función LAMBDA

Una propiedad importante del parámetro valor es que también toma la naturaleza del elemento del array. Si el array es un rango, entonces el parámetro value se convierte en una celda. Por lo tanto, podemos utilizar funciones que pueden obtener las propiedades de las celdas, como la función FILA.

=SCAN(0;C3:C7;LAMBDA(a;b;FILA(b)))

Función FILA dentro de Función LAMBDA

Nota: Podemos utilizar cualquier letra como variable para el acumulador y el valor.

Función LAMBDA puede usar Cualquier Letra

 

Fórmula Personalizada:

Aquí utilizamos cualquier fórmula y anidamos cualquier función.

Fórmula Personalizada dentro de Función SCAN

Nota: Podemos omitir el acumulador, el valor o ambos parámetros de la fórmula personalizada.

Debido a la naturaleza de su Función LAMBDA, la mayoría de las aplicaciones de la Función SCAN están relacionadas con cálculos acumulativos. Veamos algunas de las aplicaciones.

Suma Acumulada

Con la función SCAN, ahora podemos realizar fácilmente una suma acumuda de matrices.

=SCAN(0;C3:C7;LAMBDA(a;b;a+b))

Suma Acumulada de Matrices

Vamos a recorrer la fórmula:

Iteración

El acumulador (a) comienza con el valor_inicial.

Acumulador Valor Inicial 1era Iteración

El valor (b) comienza con la 1era celda del rango.

=C3

Valor b 1era Iteración

Por último, calculamos la suma de los dos.

=E3+F3

Suma de Acumulador y Valor b 1era Iteración

 

Iteraciones siguientes

El acumulador (a) es ahora igual a la salida anterior de la función LAMBDA.

=G3

Acumulador 2da Iteración

El parámetro de valor (b) es igual al elemento actual del array.

=C4

Valor b 2da Iteración

De nuevo, podemos calcular la suma de los dos.

=E4+F4

Suma de Acumulador y Valor b 2da Iteración

Todo este proceso continúa hasta el último elemento de la matriz.

Promedio Acumulado

También podemos realizar una media acumulada utilizando la función SCAN.

=SCAN(0;C3:C7;LAMBDA(a;b;a+b))/SECUENCIA(CONTARA(C3:C7))

Promedio Acumulado Función SCAN

Vamos a recorrer la fórmula:

Suma acumulada

En primer lugar, utilizamos la función SCAN para realizar una suma acumulativa de matrices (véase la sección anterior para el desglose).

=SCAN(0;C3:C7;LAMBDA(a;b;a+b))

Suma Acumulada Función SCAN

 

Función CONTARA

A continuación, contamos el número total de elementos del array utilizando la función CONTARA.

=CONTARA(C3:C7)

Función CONTARA

 

Función SECUENCIA

Luego, utilizamos el resultado de la Función CONTARA para crear una lista vertical de números consecutivos utilizando la Función SECUENCIA.

=SECUENCIA(F3)

Función SECUENCIA

 

Promedio Acumulado

Por último, podemos calcular la media acumulada dividiendo los resultados de la Función SECUENCIA por la suma acumulada.

=E3/G3

Promedio Acumulado

Combinando todas las fórmulas se obtiene nuestra fórmula original:

=SCAN(0;C3:C7;LAMBDA(a;b;a+b))/SECUENCIA(CONTARA(C3:C7))

Máximo Acumulado

También podemos calcular el valor máximo acumulado utilizando la función SCAN junto con la función MAX.

=SCAN(0;C3:C7;LAMBDA(a;b;MAX(a;b)))

Max Acumulado Función SCAN

Veamos la fórmula.

Iteración

El acumulador (a) comienza con el valor_inicial.

Max Acumulado Acumulador Inicial 1era Iteración

El parámetro de valor (b) comienza con la 1era celda del rango.

=C3

Max Acumulado Valor b 1era Iteración

Por último, calculamos el máximo entre las dos utilizando la función MAX.

=MAX(E3;F3)

Max Acumulado Función MAX

 

Iteraciones siguientes

El acumulador (a) es ahora igual a la salida anterior de la función LAMBDA.

=G3

Max Acumulado Acumulador Inicial 2da Iteración

El parámetro de valor (b) es igual al elemento actual del array.

=C4

Max Acumulado Valor b 2da Iteración

Repetimos la función MAX.

=MAX(E4;F4)

Max Acumulado 2da Iteración

Todo este proceso continúa hasta el último elemento de la matriz.

Suma Acumulada Con Reinicio

Hay escenarios en los que necesitamos restablecer la suma acumulada. Para hacer esto con la función SCAN, usamos la función IF para reiniciar el acumulador. Veamos los ejemplos.

Total del Año Hasta la Fecha

Un ejemplo perfecto de una suma acumulativa con reinicio es el total del año hasta la fecha. En este caso, necesitamos reiniciar la suma cada enero del nuevo año.

=SCAN(0;C3:C16;LAMBDA(a;b;SI(MES(DESREF(b;;-1))=1;b;a+b)))

Total del Año Hasta la Fecha

Repasemos la fórmula.

Función DESREF

Como la matriz es un rango, podemos utilizar la función DESREF para obtener la fecha correspondiente de la columna de fecha.

=DESREF(C3;;-1)

Función DESREF

 

Función MES

A continuación, utilizamos la función MES para obtener el número del mes a partir de la fecha.

Función MES

 

Función SI

Por último, utilizamos la Función SI para comprobar si el número del mes es 1. Si es VERDADERO, reiniciamos el acumulador (a) devolviendo el elemento actual del array (b) en lugar de calcular la suma (ver resaltado en rojo). En caso contrario, calculamos la suma de a y b.

Función SI

Combinando todas las fórmulas se obtiene nuestra fórmula original:

=SCAN(0;C3:C16;LAMBDA(a;b;SI(MES(DESREF(b;;-1))=1;b;a+b)))

Restablecer Cada Enésima Fila

También podemos reiniciar el acumulador en cada enésima fila. En el caso anterior, debemos reiniciar la suma cada 1era fila en un patrón de 12 series.

=SCAN(0;C3:C16;LAMBDA(a;b;SI(RESIDUO(FILAS(C3:b)-1;12)=0;b;a+b)))

SCAN-Restablecer Cada Enésima Fila

Repasemos la fórmula:

Función FILAS

Primero, usamos la función FILAS para obtener la fila relativa del valor (b) de la primera entrada (C3) del array.

=FILAS($C$3:C3)

Función FILAS

 

Relativo Desde 0

A continuación, deducimos 1 de las filas relativas para hacer referencia a las filas relativas desde 0 en lugar de 1. La razón principal para hacer esto es para la creación del patrón de la serie 12. Empezando por 0, podemos crear una serie de números consecutivos que empiecen por 0 (véase la siguiente sección).

=F3-1

Relativo Desde Cero

 

Función RESIDUO

A continuación, dividimos cada fila relativa por el número total del patrón de la serie, que es 12, y obtenemos el resto utilizando la función RESIDUO. Esto crea el patrón de la serie 12 (0 – 11).

=RESIDUO(G3;12)

Función RESIDUO

 

Función SI

Observa que la 1era fila del patrón de la serie 12 es siempre 0. Ahora usamos la función SI para comprobar si hay 0 y devolver el elemento actual del array (b) para reiniciar el acumulador (a). En caso contrario, calculamos la suma.

=SI(H3=0;C3;E3+C3)

Función SI Ejemplo Restablecer Cada Enésima Fila

Combinando todas las fórmulas se obtiene nuestra fórmula original:

=SCAN(0;C3:C16;LAMBDA(a;b;SI(RESIDUO(FILAS(C3:b)-1;12)=0;b;a+b)))

Suma Acumulada por Fila

Podemos ampliar la aplicación de la suma acumulada para añadir otra dimensión como una suma acumulada por fila. En el caso siguiente, tomamos las ventas acumuladas de cada vendedor a medida que avanza el mes de enero a marzo.

=SCAN(0;C3:E7;LAMBDA(a;b;SI(COLUMNA(b)=3;b;a+b)))

Suma Acumulada por Fila

Veamos la fórmula:

Función COLUMNA

Primero, usamos la función COLUMNA para obtener las posiciones de las columnas de los elementos del array.

=COLUMNA(C3)

Función COLUMNA

 

Función SI

A continuación, utilizamos la función IF para restablecer el acumulador (a). Si la posición de la columna es igual a 3 (Columna de Enero), entonces reseteamos el acumulador al elemento actual del array (b). En caso contrario, calculamos la suma.

=SI(J3=3;C3;G3+C3)

Función SI Suma Acumulada por Fila

Combinando todas las fórmulas se obtiene nuestra fórmula original:

=SCAN(0;C3:E7;LAMBDA(a;b;SI(COLUMNA(b)=3;b;a+b)))

SCAN Google Sheets

Actualmente la función SCAN no está disponible en Google Sheets

AI Formula Generator

Pruébelo Gratis

Excel Practice Worksheet

practice excel worksheet

Practice Excel functions and formulas with our 100% free practice worksheets!

  • Automatically Graded Exercises
  • Learn Excel, Inside Excel!

Free Download

Return to List of Excel Functions