La función SELECT() en AppSheet te permite extraer valores específicos de una columna, pero solo si cumplen ciertas condiciones. Es una de las expresiones más poderosas y versátiles, muy útil cuando quieres filtrar datos de una tabla y devolver resultados en forma de lista.
Con SELECT() puedes crear resúmenes, listas dinámicas, validaciones, conteos y mucho más.
Una forma sencilla de usarla es así:
SELECT(Pedidos[Producto], [ClienteID] = [_THISROW].[IDCliente])
📌 Esta fórmula extrae los productos comprados por el cliente:
Pedidos[Producto]: Indica que queremos obtener los valores de la columnaProductode la tablaPedidos.[ClienteID] = [_THISROW].[IDCliente]: Es el filtro. Solo se seleccionan los productos de los pedidos cuyoClienteIDcoincida con el cliente actual (es decir, la fila actual de la tablaClientes).

Obtener los IDs de los pedidos de un cliente con SELECT()
En este caso, queremos mostrar los ID de los pedidos realizados por un cliente específico, usando esta fórmula:
SELECT(Pedidos[IDPedido], [ClienteID] = [_THISROW].[IDCliente])
Fíjate que esta expresión sigue la estructura básica para extraer datos con SELECT(). Solo cambiamos dos cosas:
- La columna que queremos obtener: aquí es
IDPedidoen lugar deProducto. - La condición: en este ejemplo, mantenemos la misma, filtrando los pedidos cuyo
ClienteIDcoincida con el cliente actual.
Esta flexibilidad hace que SELECT() sea una función muy poderosa y fácil de adaptar a distintos escenarios, simplemente modificando la columna a extraer y las condiciones para filtrar.

Filtrado avanzado con SELECT() usando condiciones múltiples
Supongamos que en la tabla Pedidos tienes una columna llamada Estado, donde se registran los diferentes estados de cada pedido: Pendiente, Entregado y Cancelado.
Con la función SELECT(), podemos crear filtros más precisos para extraer listas según esos estados. Por ejemplo, para obtener solo los pedidos que están en estado Pendiente, usamos esta fórmula:
SELECT(
Pedidos[IDPedido],
AND(
[ClienteID] = [_THISROW].[IDCliente],
[Estado] = "Pendiente"
)
)
¿Qué hace esta fórmula?
- Primero, filtra los pedidos para que coincidan con el cliente actual (
[ClienteID] = [_THISROW].[IDCliente]). - Segundo, solo extrae los pedidos cuyo estado sea
"Pendiente".

Crear listas separadas para cada estado
Si quieres separar y mostrar los pedidos según su estado, puedes crear columnas virtuales diferentes, cada una con una expresión similar pero cambiando el valor del estado:
SELECT(Pedidos[IDPedido], AND([ClienteID] = [_THISROW].[IDCliente], [Estado] = "Entregado"))
Y otra para los pedidos cancelados:
SELECT(Pedidos[IDPedido], AND([ClienteID] = [_THISROW].[IDCliente], [Estado] = "Cancelado"))
De esta forma tendrás tres listas claras y filtradas por cada estado para cada cliente.

Uniendo SELECT() con otras funciones: Count, Sum y más
Una de las grandes ventajas de la función SELECT() en AppSheet es que puede combinarse fácilmente con otras funciones para realizar cálculos dinámicos y personalizados.
Por ejemplo, si combinamos SELECT() con COUNT(), podemos saber cuántos elementos cumplen una condición específica. Esta lógica también funciona con funciones como SUM(), MAX(), MIN() y muchas más.
Veamos un caso concreto usando COUNT() para saber cuántos pedidos ha realizado un cliente:
COUNT(SELECT(Pedidos[IDPedido], [ClienteID] = [_THISROW].[IDCliente]))
Esta expresión:
- Filtra los pedidos del cliente actual.
- Cuenta cuántos pedidos hay en esa lista.
Este mismo patrón lo puedes usar para sumar montos, contar elementos filtrados por estado, o incluso para calcular promedios, usando funciones como SUM() o AVERAGE() junto a SELECT().

📥 Base de Datos para Practicar
Haz clic en el siguiente enlace para acceder a la hoja de cálculo (base de datos) que utilizamos en este curso. Recuerda que debes hacer una copia en tu propio Google Drive para poder editarla y conectarla a tu app en AppSheet.
➡️ Haz clic aquí para abrir la base de datos
(Sigue el ejemplo que ves en la imagen de abajo para hacer tu copia correctamente)







