Como utilizar la función BUSCARV o VLOOKUP y errores más frecuentes

Una de las herramientas mas utilizadas de las planillas de cálculo es la función BUSCARV o VLOOKUP, una vez que te familiarizas con ella le “tomarás cariño” ya que permite optimizar el procesamiento de datos. Aquí se muestra como se utiliza y cuales son los errores más comunes que se dan al utilizarla.

Según la ayuda de Microsoft Excel la función Busca un valor en la primera columna de la izquierda de una tabla y luego devuelve un valor en esa misma fila desde una columna especificada. De forma predeterminada, la tabla se ordena de forma ascendente.

Su sintaxis es la siguiente:

BUSCARV(
valor_buscado;
matriz_a_buscar_en;
indicador_de_columnas;
ordenado
)

Donde:

  • Valor_buscado: es el valor buscado en la primera columna de la tabla y puede ser un valor, referencia o una cadena de texto.
  • Matriz_a_buscar_en: Es una tabla de texto, números o valores lógicos en los cuales se recuperan datos. Puede ser una referencia a un rango o un nombre de rango.
  • Indicador_de_columnas: Es el número de columna de la matriz matriz_a_buscar_en desde la cual se debe de devolverse el valor que coincida. La primera columna de valores en la tabla es la columna 1.
  • Ordenado:es un valor lógico para encontrar la coincidencia más cercana en la primera columna (ordenada de forma ascendente) = VERDADERO u omitido; para encontrar la coincidencia exacta = FALSO.

La función VLOOKUP de Microsft Excel en Inglés, Google Docs, OpenOffice.org Calc se comporta de la misma manera que BUSCARV, solo difiere en su nombre.

Los errores mas comunes que se presentan con esta función son los siguientes:

  1. Al escribir la función en la primer fila funciona bien, pero al copiarlo a las filas de abajo comienzan a salir #N/A cuando el valor buscado se encuentra en la matriz a buscar.
    Las referencias de la matriz a buscar están en forma variable. Por ejemplo cuando se escribe un rango A1:B100 en la fila 2 y se copia a la fila 3 este pasa a ser A2:B101, y así sucesivamente.
    La solución es siempre poner el rango de la matriz a buscar en forma fija de la manera $A$1:$B$100 (se escribe el símbolo $ antes de de cada elemento de la dirección, es mas fácil hacerlo con la tecla F4 cuando se está editando la formula y el cursor está sobre las direcciones).
    Otra solución es definirle un nombre al rango y utilizar este nombre en la función.
  2. El dato que recupera es incorrecto, no pertenece a el valor buscado.
    La mayoría de las veces se requiere que la función retorne los valores exactos, y esto se hace ingresando Falso (ó 0) en el cuarto parámetro. En el caso que se omita o se ingresa Verdadero y el valor no se encuentra, retorna el primer dato mayor al valor buscado que encuentre.
  3. La función retorna #N/A aun cuando el dato a buscado se encuentra en la matriz a buscar.
    La función solo busca en la primer columna, por lo que si el dato se encuentra en otra ésta no lo encontrará.
    Se deben de reordenar las columnas de manera que donde se encuentra el valor buscado quede de primera, en caso de que no se pueda se deberá de crear una nueva columna al inicio de la matriz con los mismos datos que la original (por ejemplo si no se puede mover la columna D, debo tener en la columna a una copia de D: en A2: =D2).
  4. La función retorna #N/A sin importar si el dato esté o no en la matriz a buscar.
    Se está tomando una columna que no pertenece al rango. El rango debe de contener desde la columna que contiene los datos a buscar hasta como mínimo la columna donde se encuentran los valores a devolver.
Ver como quitar los resultados #N/A que se obtienen cuando no se encuentra el valor.

Lo expuesto aquí también aplica para las funciones de búsquedas horizontales BUSCARH o HLOOKUP considerando que las búsquedas se hacen por filas en lugar de columnas.

Quitar los valores #N/A en Excel o similar

Cuando se utiliza la función BUSCARV o VLOOKUP y el dato a buscar no se encuentra retorna el valor #N/A el cual no es posible utilizarlo en sumas, cuentas, ni demás operaciones que se requieran aplicarle a los datos que si fueron identificados.

Se deben de quitar estos valores para continuar con las operaciones. La primer opción que se viene a la mente es borrar las celdas que contienen #N/A, creando un nuevo posible problema ya que se pierden las fórmulas.

La manera mas limpia de quitarlos es preguntar por el resultado de la función, si es #N/A se asigna un “valor nulo”, que puede ser el propio nulo (“”), cero (0), las palabras “No se encuentra”, o el valor que se requiera. En caso de no serlo se ejecuta nuevamente la función para mostrar el resultado obtenido.

La función ESNOD (o ISNA para versiones en inglés) retorna verdadero si el valor que se le pasa es #N/A, de lo contrario falso.

La forma de evitar el valor #N/A en Microsoft Excel es:


La forma de evitar el valor #N/A en Google Docs, OpenOffice.org Calc, Microsoft Excel en inglés:


Esta solución aplica para todas las funciones que puedan retornar el valor #N/A.

Calcular primer y ultimo día hábil del mes

En este artículo se mostrará como calcular el primer y/o último día hábil del mes, en principio sin contemplar los días festivos.

Para hallar el primer día hábil del mes, la idea es la siguiente:

  1. Calcular la fecha del primer día del mes.
  2. Ver el día de la semana que "cae" primer día del mes.
  3. Si se trata de un sábado hay que sumarle dos días, de ser un domingo se suma uno, y para el resto de los días es el propio primero.

Para hallar el último día hábil del mes, la idea es la siguiente:

  1. Calcular la fecha del último día del mes.
  2. Ver el día de la semana que "cae" el último día del mes.
  3. Si se trata de un sábado hay que restarle un día, de ser un domingo se restan 2, y para el resto de los días el mismo fin de mes.

Calcular primer y último día laborable en Microsoft Excel en español:

Primer día laborable del mes:


Último día laborable del mes:


Partiendo del supuesto que en A1 se encuentra la fecha perteneciente al mes en cuestión. Si se cambia por HOY() se obtiene el dato respecto al día actual.

Variante al Cálculo en Microsoft Excel en español:

En Excel hay una alternativa en la que si se pueden tener en cuenta dos días festivos.

Calcular el primer día hábil considerando los festivos se identifica el último día calendario del mes anterior y a este se le suma 1 día laborable.

Otra fórmula para calcular el primer día hábil del mes en Microsoft Excel sin considerar festivos.


Otra fórmula para calcular el primer día hábil del mes en Microsoft Excel considerando festivos.


Donde RANGO_DIAS_FESTIVOS corresponde a un rango donde se encuentra la lista de días festivos.

Calcular el primer día hábil considerando los festivos se identifica el último día calendario del mes corriente, a este se le suma 1 día calendario, y se le resta un día laborable.

Otra fórmula para calcular el ultimo día hábil del mes en Microsoft Excel sin considerar festivos.


Otra fórmula para calcular el ultimo día hábil del mes en Microsoft Excel considerando festivos.


Calcular primer y último día laborable del mes en Google Docs, OpenOffice.org Calc, Microsoft Excel en inglés:

Calcular primer día laborable del mes:


Calcular ultimo día laborable del mes:


Al no tener la función que identifica el último día del mes la formula queda un poco mas compleja.

Calcular primer y último día laborable del mes en Oracle:

Cálculo para el primer día laborable del mes:


Cálculo para el ultimo día laborable del mes:


Calcular primer y último día laborable del mes en MySQL:

Cálculo para el primer día laborable del mes:


Cálculo para el ultimo día laborable del mes:


Calcular primer y último día laborable del mes en Microsoft Access:

Cálculo para el primer día laborable del mes:


Consulta que toma datos de una supuesta tabla "datos".

Cálculo para el ultimo día laborable del mes:


Consulta que toma datos de una supuesta tabla "datos". Al no disponer de una función que calcule el ultimo día del mes calendario, se calcula el primer día del mes siguiente y se le resta uno (funciona aun para diciembre: 12 + 1 = enero).

Contar y/o sumar filas con una, dos, tres o mas condiciones con Excel

Una necesidad habitual es poder contar o sumar datos tomando en cuenta solo las filas que cumplen con determinadas condiciones.

Microsoft Excel implementó las funciones CONTAR.SI y SUMAR.SI que realizan cuentas o sumas de con una condición simple sobre una única columna, pero muchas veces esto nos es poco por lo que nos vemos obligados a concatenar columnas así definir una única condición para realizar los cálculos necesarios.

Existe una forma un poco mas rebuscada que permite contar y sumar datos de filas con condiciones múltiples, es utilizando funciones matriciales.

Como ejemplo se tomará la lista que se muestra a la derecha.

Si queremos sumar la cantidad de kilogramos que se solicitaron en Febrero, o sea sumar los datos de la columna D cuando en la columna A contiene febrero la forma tradicional es:


La forma utilizando funciones matriciales es:


Poniendole nombre a cada uno de los parámetros se ve de la siguiente manera:


¿Cómo funciona esto?:

Las condiciones se definen de la forma:

RANGO_CONDICION ="Valor"

cuyo resultados posibles son VERDADERO o FALSO según se cumpla o no la condición, podemos utilizar los operadores =, >, >=, <, <=, o <>.

El valor VERDADERO es representado con un 1, y el FALSO con un 0, por lo que al multiplicar este resultado por el RANGO_A_SUMAR (en este caso D2:D27) por cada fila que cumple la condición suma el obtiene el dato de la columna a sumar.

Por último con SUMAPRODUCTO se suman todas las filas verdaderas obteniendo el resultado final.

Ahora si queremos sumar con dos o mas condiciones, pondremos el producto de tantas condiciones como queramos y al final lo multiplicamos por el valor a sumar:


Aquí se están validando 3 condiciones: que los elementos del primer rango sean igual a "Valor1", y que los elementos del segundo rango sean mayores a "Valor2", y que los elementos del tercer rango sean diferentes de "Valor3". De cumplirse las 3 condiciones sumamos los datos.

También se pueden combinar los resultados, por ejemplo si tenemos que sumar el contenido de dos, o más, columnas cuando cumplen condiciones múltiples lo podemos hacer de la siguiente manera:


Cuando se desea contar registros que cumplen con estas condiciones múltiples, éstas se deben de multiplicar por 1, o anteponer - (dos signos de menos).


ó


A continuación se presentan varios ejemplos:

Contar filas que cumplen con más de una condición (CONTAR.SI con múltiples condiciones):

Cantidad de pedidos de Naranjas que realizó Luis en febrero:


Resultado: 2.

Sumar el producto de dos columnas de filas que cumplen con más de una condición (SUMAR.SI con múltiples condiciones):

Sumar el importe que gastó Luis durante el mes de Febrero:


Resultado: 67.

Contar filas cuya condición es calculada con varias de una columnas. Cantidad de pedidos con importes mayores a 30:


Resultado: 6.

Otros mas:

Cantidad de pedidos de Naranjas que compró Luis en Enero:


Resultado: 0

Cantidad kg de Naranjas que compró Luis en Enero:


Resultado: 0

Cantidad kg de Naranjas que compró Luis en Febrero:


Resultado: 5

Cantidad de pedidos de 3 o mas kilogramos:


Resultado: 8

Importe de los pedidos de 3 o mas kilogramos realizados en marzo:


Resultado: 114.

Cantidad de ventas de 1 kilogramo cada una:


Resultado: 7.

Importe total de los pedidos con importes mayores a 30:


Resultado: 247

Contar cantidad de domingos entre dos fechas o cualquier otro dia de la semana

La formula para calcular la cantidad de un determinado día de la semana (lunes, martes, miércoles, etc.) entre de dos fechas es la siguiente:

Truncar(( Fecha_Final – Fecha_Inicial – DiaDeLaSemana(Fecha_Final-X) + 8) / 7)

Donde X es el número del día de la semana: 0 = Domingo, 1 = Lunes, …, 6 = Sábado.

Esta fórmula puede utilizarse para calcular la cantidad de días laborales entre dos fechas tomando en cuenta los sábados (cosa que las funciones tradicionales no contemplan).

Cálculo en Microsoft Excel en español:

Contar la cantidad de domingos:


Contar la cantidad de lunes:


En B3 se encuentra la fecha final y B2 la fecha inicial.

Cálculo en Google Docs, OpenOffice.org, Calc, Microsoft Excel en inglés:

Traduciendo la fórmula al inglés queda de la siguiente manera:

Contar la cantidad de domingos:


Contar la cantidad de lunes:


Aquí encontrarán un ejemplo al respecto realizado en Google Docs.

Cálculo en Oracle:

Calcular la cantidad de martes que hay entre dos fechas:


Cantidad de martes entre el 2 de enero de 2009 y hoy:


Cálculo en MySQL:

Calcular la cantidad de martes que hay entre dos fechas:


Aquí los cálculos cambian debido a que Weekday retorna 1 para lunes hasta 6 domingo. Para variar el día de la semana se deberá sustituir el 2 que se encuentra en "interval (-2 + 1)" por el número correspondiente con mismo criterio que antes 0: domingo, 1: lunes, etc.

Cálculo en Microsoft Access:

Cantidad de sábados entre ambas fechas.


Cantidad de sábados entre el 2 de enero de 2009 y hoy


NOTA: Tomada de una supuesta tabla "datos".

Operaciones con fechas considerando solo días laborables - Excel

Microsoft Excel provee funciones para el manejo de fechas considerando los días laborables y festivos.

Para poder utilizarlas previamente se deben de activar los complementos de Herramiena para análisis. Acceder al menú Herramientas / Complementos, y en la línea que dice "Herramientas para análisis", el check debe de estar activo, si no lo está activarlo.

Para contar la cantidad de días laborables que existen entre dos fechas, se utiliza la función DIAS.LAB:

DIAS.LAB(Fecha_Inicial; Fecha_Final; Días_Festivos)

Retorna el número total de días laborables entre dos fechas, tomando como día laborable de lunes a viernes (*). Para la cuenta incluye ambas fechas.

Parámetros:

  • Fecha Inicial y Final: marcan el período en que se desea saber la cantidad de días.
  • Días Festivos: es un rango donde se le pueden definir uno a uno todos los festivos que consideramos no laborables. Este dato puede ser omitido, por lo que solo restará sábados y domingos.

A continuación se presenta un ejemplo sobre el uso de dicha formula contando la cantidad de días laborables con y sin festivos adicionales.

Utilizando una combinación de estas formulas podemos llegar a contar la cantidad días no laborables que existen entre dos fechas, cantidad de festivos, etc.

En el siguiente ejemplo, a la izquierda se listan los festivos utilizados, en el medio se encuentran las las fórmulas (en la columna G están los datos y los resultados, y en la F se muestran las formulas utilizadas), y a la derecha están todos los días del mes del ejemplo de manera de poder validar los resultados en forma visual.

Hay otra función que se utiliza para calcular la fecha resultante de sumar una determinada cantidad de días laborables a una fecha se realiza con la función DIA.LAB.

DIA.LAB(Fecha_Inicial; Días_Laborables; Días_Festivos)

Retorna una fecha anterior o posterior a la Fecha Inicial según sea el número de Días Laborables introducidos.

Parámetros:

  • Fecha Inicial: Es la fecha donde comienza la cuenta.
  • Días Laborables: Son la cantidad de días que se desean sumar o restar.
  • Días Festivos: es un rango donde se le pueden definir uno a uno todos los festivos que consideramos no laborables. Este dato puede ser omitido, por lo que solo omitirá sábados y domingos.

El uso de esta función es mostrado en el mismo archivo de ejemplo.

(*) Como se mencionó la función considera días laborales los días de la semana de lunes a viernes. En varios casos es necesario considerar el sábado (ya sea mitad o completo), aquí se muestra como se realiza una fórmula utilizando esta función mas algunos ajustes para contemplar los sábados.

Contar valores diferentes en Excel o similar

A continuación se presentan un par de formas de contar la cantidad de datos diferentes que existan en un rango. La idea es la siguiente:

Crear una nueva columna donde cada dato diferente tendrá un peso de 1, de manera que la sumatoria nos de la cantidad de elementos diferentes.
Para hacer que cada dato diferente sume 1, para los casos en que hay repetidos tendremos que dividir a 1 entre la cantidad de ocurrencias del dato con mismo valor (matemáticamente hablando el inverso de la cantidad de ocurrencias). Esta operación también aplica cuando solo existe una única ocurrencia (1/1=1).

Cálculo en Microsoft Excel en español:

Supongamos que queremos saber la cantidad de elementos diferentes no nulos que existen en el rango A2:A10, para lograrlo tenemos que hacer lo siguiente:

1. Crear una columna por ejemplo en D, donde la celda D2 tendrá el inverso de la cantidad de ocurrencias del valor que se encuentra en A2:


Utilizamos la función CONTAR.SI en todo el rango que nos interesa y lo comparamos con el dato de A2, previamente verificamos que la celda A2 no esté vacía.
La parte que contiene '&””' al final, es para cuando la celda A2 está vacía (para que busque una celda vacía hay que ponerle ""). Esta función nunca la necesitará esta parte porque pusimos una condición al inicio que solo tome celdas con contenido, se deja por si alguien quiere quitarla par que incluya celdas vacías

2. Copiar la función ingresada en la fila 2 para el resto de las filas del rango.

3. Al final debemos sumar los datos de la columna calculada:


El dato resultante es la cantidad de valores diferentes que se encuentran en el rango que estamos buscando (para este caso A2:A10).

Segunda forma:

Hay otra forma para hacer esto sin utilizar una columna auxiliar, entendí necesario mostrar la primer solución ya que se trata de un paso previo para entender la siguiente.

Al manejar funciones matriciales podemos calcular el valor ponderado de cada elemento el la propia función de manera de realizar la sumar al final:


El valor resultante de la condición "diferentes de nulos" (“”) es verdadero, que es lo mismo que 1, para los que la cumplen y cero para los que no.

La función CONTAR.SI se comporta de la misma manera que en el caso anterior.

El rango se puede extender a tantas filas y columnas como se requiera, por ejemplo en un rango de 3 columnas:


Cálculo en Microsoft Excel en inglés, Google Docs, OpenOffice.org, Calc:

Traduciendo al inglés, las formulas de la primer forma queda de la siguiente manera:

Paso 1:


Paso 2:


La segunda forma no me ha funcionado en Google Docs, por ahora lo lamento.

Validar formato de documentos con Excel y similares

Recientemente se mostró una manera de verificar que todos los caracteres de un texto sean válidos, siguiendo con la misma teoría se realizaron unas adaptaciones de manera de obtener una formula que valide formatos, por ejemplo de documentos.

Cálculo en Microsoft Excel en español:


En este montón de formulas, se valida que el número que se encuentra en la celda A1 se corresponda con el formato que esté definido en la celda C1.

Suponiendo que un documento válido es: 123-121289-00001-H. Se deberá definir el formato de la siguiente manera: 999-999999-99999-A

Donde:
"9" corresponde a dígitos numéricos (0 a 9)
"A" corresponde a letras, sin contemplar tildes, (de A a Z).
Y cualquier otro carácter (incluyendo resto de letras y se corresponde al mismo carácter.

Esta función podrá ser utilizada para validar datos de documentos como ser cédulas de identidad, pasaportes, DNI, DNA, NIF, NIT, RUC, RUT, tarjetas de crédito, y cualquier otro documento que presente un formato.

Hay que tener en cuenta que un documento que pase la validación del formato no quiere decir que sea correcto, ya que la numeración puede no estarlo. La numeración se valida con formulas específicas para cada documento.

Validar caracteres contenidos en un texto con Excel o similares

Cuando se necesita validar el contendido de un texto, por ejemplo que solo se contenga letras (con o sin tildes), determinadas letras, número, etc; no hay una operación definida, y menos si no se quiere recurrir a macros.

Aquí se presenta una formula que valida el contenido de un texto en Microsoft Excel sin macros, retorna verdadero si todos los caracteres del texto son válidos, de lo contrario falso.

Para lograrlo se utilizan funciones matriciales, puede que sean algo complejas de entender, si no se comprenden solo es copiar y pegar.

Cálculo en Microsoft Excel en español:


Esta función validará el contenido del texto encontrado en la celda A1, los caracteres válidos son los que se encuentran en la lista incluida en la función.

Se puede cambiar la lista dependiendo de las necesidades del momento, simplemente se deben de escribir los caracteres válidos.

En el caso de que la celda a validar no tenga información la misma dará falso, si se desea admitir nulos la formula sería de la siguiente manera:


Cálculo en Microsoft Excel en inglés, Google Docs, OpenOffice.org Calc:

Traduciendo al inglés, la primer función queda de la siguiente manera:


Traduciendo al inglés, la segunda función queda de la siguiente manera:


Ordenar datos por criterios externos arbitrarios

A continuación se mostrará una forma sencilla de ordenar una serie de datos por un criterio totalmente arbitrario, y que éste se pueda modificar según las necesidades del momento.

La idea del proceso es la siguiente:

  • Crear una tabla que contenga al menos una columna los datos que se deben de ordenar, y en una segunda valores numéricos en la donde se definirá el orden.
  • Cruzar la información a ordenar con la nueva tabla de manera de agregar una columna adicional con la información del orden.
  • Ordenar los datos por la nueva columna.
  • En caso que en el futuro se requiera modificar el orden, simplemente se cambia la numeración de la tabla donde está definido.
Solución para hojas de cálculo:

A modo de ejemplo se mostrará una lista de productos que cada uno de ellos tiene una categoría, se ordenarán los productos según un orden cualquiera que se le asignará a cada categoría. : El mismo está disponible en la siguiente dirección de Google Docs.
Para que se puedan ver las fórmulas ha quedado de libre edición, por lo que si ves algo extraño accede a la versión original (Archivo / Historial de Revisiones).
Para verlo en Microsoft Excel (español) se debe de exportar el documento como xls (Archivo / Exportar).

Los pasos son los siguientes:


  1. Crear la lista donde se definirá el orden a aplicar. En el ejemplo se trata de la lista que se encuentra en la hoja Categorías. Definir el orden.
  2. Crear una nueva columna en la lista de datos originales para posteriormente cruzar la información (columna Orden Externo).
  3. Cruzar la información entre las dos tablas de manera de obtener el valor del orden de la segunda hoja. Esto se realizará utilizando la función BUSCARV (VLOOKUP en ingles):

    La formula para la busqueda es la siguiente:

    Versiones en español:


    Versiones en inglés:


    Siendo C la columna donde se encuentra la clave de búsqueda. En las columnas B y D de la hoja Categorias estarían la clave a buscar y dato resultante respectivamente.

  4. Ordenar la tabla por la nueva columna calculada, adicional a este orden se le puede incluir otros. Para el caso del ejemplo el orden está definido por la columna Orden Externo y posteriormente Nombre Producto.
Solución para base de datos (SQL):

A nivel de base de datos la solución es más fácil, una vez creada la tabla (supongamos con los mismos nombres que la planilla de cálculo mostrada).
Simplemente se debe de hacer un Join entre ambas tablas y ordenar el resultado por el dato del orden.


Identificar repetidos, unir información o validar consistencia de dos o mas reportes

Muchas veces se requiere "cruzar" dos o mas listas de datos, ya sea para unir la información, identificar registros repetidos, o validar la consistencia de los datos (ver si hay diferencias en algún dato).

Se puede hacer esta operación de manera muy sencilla mediante hojas de cálculo utilizando la función BUSCARV para versiones en español, y LOOOKUP para versiones en inglés.

Según ayudas de los productos, la sintaxis es la siguiente:

BUSCARV(
Valor buscado;
Matriz de comparación;
Indicador de columnas;
Ordenado
)

Los argumentos van separados por el carácter que se tenga definido como separador de lista de la configuración del computador, los mas comunes son el ";" (punto y coma) y "," (coma).

La función busca un valor específico en la columna más a izquierda de una matriz y devuelve el valor en la misma fila de una columna especificada en la tabla.

Los argumentos son:

"Valor buscado": es el valor que se busca en la primera columna de la "Matriz de Comparación" que puede ser un valor, una referencia o una cadena de texto.

"Matriz de comparación": es el conjunto de información donde se buscan los datos.

"Indicador de columnas": es el número de columna de "Matriz de Comparación" desde la cual debe devolverse el valor coincidente.

El error más común en esta operación es que los datos se van desplazando una vez que se copian las formulas a las siguientes filas, para evitar esto se deben de fijar la matriz de comparación con los caracteres $ (delante del a letra que indica la columna y el número que indica la fila), o utilizar una matriz con un nombre de referencia que siempre es fijo. Y para el valor buscado es recomendable fijar la columna.

Cuando las calves de la información que se tiene que cruzar son compuestas por mas de una columna se deberá de definir una nueva columna concatenando una única clave (esto se puede hacer en la propia formula o con una columna auxiliar).

Para evitar errores cuando los datos no son del mismo tamaño, antes se deben de uniformar con un formato de texto único.

Las celdas que traigan como resultado #N/A indican que no existen en la segunda lista, estas se deben de cambiar por un valor 0, espacios o nulo dependiendo de sus necesidades. La forma mas elegante de hacerlo es agregarle a la propia función una validación de los datos cuando son nulos, aquí se muestra como hacerlo.

Como siempre si tienes dudas no dejes de consultar.

Identificar siguiente día de la semana, siguiente lunes, siguiente martes, .. siguiente jueves, …, etc.

Hay veces que se requiere poder identificar la fecha correspondiente al, por ejemplo, siguiente jueves de la semana. Puede que nos interese compara la fecha de un pago con la del cierre de una remesa, o lo que sea.

Para el cálculo, la idea es la siguiente:

  1. Identificar el día de la semana que "estamos parados" (ya sea la fecha actual o determinada fecha).
  2. Sabiendo que una de las numeraciones para identificar los días de las semanas es 1: Domingo, 2: Lunes, 3: Martes, ..., 6:Viernes, 7: Sábado.
  3. Contar la cantidad de días que distan, por ejemplo, del jueves de la semana en curso.
  4. El valor resultante se lo sumamos a la fecha en cuestión. Hasta aquí tenemos la fecha correspondiente al jueves de la semana en curso.
  5. Como se requiere el siguiente jueves, debemos ver si ya nos pasamos de ese día para ir a la semana siguiente sumando 7 días.
En el presente ejemplo está realizado para hallar el próximo jueves, si se requiere otro día se debe de cambiar las dos ocurrencias del número 5 correspondiente al jueves por el número correspondiente al día deseado según información del punto 2.

Cálculo en Microsoft Excel en español:


Este ejemplo se calcula según una fecha que se encuentra en la celda A1. Si se desea calcular sobre el día actual se cambia la celda por la función HOY.


Cálculo en Google Docs, OpenOffice.org Calc, Microsoft Excel en inglés:


Este ejemplo se calcula según una fecha que se encuentra en la celda A1. Si se desea calcular sobre el día actual se cambia la celda por la función TODAY.


Cálculo en Oracle:


Este ejemplo se calcula según una fecha fija. Si se desea calcular sobre el día actual se cambia la celda por la función SYSDATE.


Tener en cuenta que muchos de los lenguajes, ej C/C++, de programación no tienen implementada la función de sumar y restar días, en estos casos hay que desarrollarla.

Comparar o Restar horas de diferentes fechas

En varias ocasiones he visto problemas al realizar operaciones con fechas y horas, más precisamente cuando las horas son de diferentes fechas.

Por ejemplo, al restar dos horas cuando las fechas son diferentes, si intentas comparar las fechas y luego las horas restando unas y otras lo puedes hacer pero lleva un poco de lógica algo compleja.

La solución es extremadamente simple: la fecha y hora se deben de sumar generando un único dato del tipo fecha hora.

Esto se debe a que la mayoría de los sistemas para el almacenar un dato que contiene una fecha o una hora utilizan un mismo tipo de dato que contiene la fecha y hora integrada, y de manera visual por formatos se diferencian uno de otro.

Facilitará operaciones tales como:

- Calcular el tiempo transcurrido entre dos horas de igual o distintas fechas.

- Comparar dos horas de igual o distintas fechas.

- Obtener la fecha y hora máxima de un rango.

- Obtener la fecha y hora mínima de un rango.

- Obtener la fecha y hora media de un rango.

Cálculo en Microsoft Excel, Google Docs, OpenOffice.org Calc, Base de Datos:

Diferencia entre fechas (tiempo transcurrido desde la Hora Inicio de la Fecha Inicio hasta la Hora Fin de la Fecha Fin).


Comparar fechas, por ejemplo saber si la Hora de Fin es mayor a la Hora de Inicio.


En programa que tanto las fechas como las horas se almacenan en cadenas de caracteres, a la fecha se le debe de concatenar la hora para poder compararlas.

Generar reportes por rangos variables

Una operación muy común al momento de recuperar datos es clasificar el resultado por rangos de valores dependiendo de un determinado criterio, ya sea para posteriormente agruparla o simplemente para saber en que categorías se encuentra.

Dentro de la Minería de Datos (datamining), podemos decir que estas operaciones están incluidas en las técnicas de Limpieza y Transformación de datos.

El proceso para identificar y agrupar los rangos es el siguiente:

1. Identificar el rango al que pertenece cada dato.

2. Agrupar por los criterios necesarios más la información del rango (paso opcional).

3. Realizar los cálculos de agregación de información necesarios (Suma, cuentas, promedios, máximos, mínimos, etc).

La forma "tradicional" de identificar el rango es hacer tantas condiciones como rangos existan, lo que lleva a un reporte complicado que depende de la cantidad de rangos, y ni hablar cuando hay que hacer cambios.

Como alternativa podemos realizar dicha operación utilizando una tabla auxiliar (lista) donde se definen los rangos, y luego mediante una misma consulta preguntar a que rango de dicha tabla pertenece cada valor.

Para cada rango se debe de realizar la siguiente pregunta:

valor_a_buscar "mayor o igual" rango_minimo Y valor_a_buscar "menor" rango_minimo

Cuando el resultado es verdadero se debe a que lo encontramos. Es muy importante no dejar huecos entre los rangos ni superponerlos para evitar perder información ni duplicarla respectivamente.

Solución para hojas de cálculo:

1. Se crea una nueva hoja, por ejemplo llamada RANGOS, donde tendremos tres columnas: A tendrá el rango mínimo, B el rango máximo, y C el nombre del rango.

2. Para buscar los rangos se debe de utilizar la BUSCARV (VLOOKUP en ingles), utilizando la característica del cuarto parámetro la cual habilita la búsqueda en rangos. Buscará el dato en la lista, de no encontrarlo nos dará el dato correspondiente al menor valor superior al que estamos buscando, aquí es muy importante tener ordenada la lista ya que de lo contrario no nos funcionará.

En la hoja donde tenemos nuestra información, se crea una nueva columna llamada Rango donde se ingresará la siguiente formula:

2.a. Formula en Microsoft Excel en Español:


2.b. Fórmula en Google Docs, OpenOffice.org Calc, Microsoft Excel en inglés:


3. En caso de necesitar agrupar la información, una vez identificado el rango, se crea una tabla dinámica que incluya esta nueva columna y se realiza el reporte. Las operaciones de agregación son provistas por la tabla dinámica (en caso de utilizar Microsoft Excel).

Hice un ejemplo con una lista de países agrupando según la información de su población y superficie, aquí queda disponible un documento de Google Docs

Para que se puedan ver las fórmulas ha quedado de libre edición, por lo que si ven algo extraño accede a la versión original (Archivo / Historial de Revisiones).

Solución para manejadores de base de datos:

1. Se crea la tabla para que contenga los rangos como mínimo con los campos que de la tabla de rangos.

2. Definir la información de los rangos ingresando los datos en la nueva tabla.

3. Al reporte (consulta) que se tenga simplemente se le debe de agregar la tabla de rangos y unirla (join) mediante:


O como un colaborador mencionó en sus comentarios:


Ejemplo de reporte detallado:


4. En caso de requerir las agrupaciones, se deben de agrupar los datos y utilizar las operaciones de agregación necesarias.


Como siempre si desean mayor información o aclarar algún tema no duden en comunicarse.