Вы находитесь на странице: 1из 7

Utiliza BuscarV para búsquedas múltiples

Función para obtener los datos de todas las ventas de un vendedor dado, por ejemplo.

Pondremos por ejemplo una lista de ventas con nombre del vendedor, artículo vendido y cantidad. Cada
vendedor aparece tantas veces como ventas haya hecho. Con BUSCARV se pueden encontrar los datos de la
primera venta, pero ¿Qué hacer para obtener los datos de todas las ventas de un vendedor dado?

La forma “correcta” de obtener los datos asociados a todas las apariciones del nombre es un filtro avanzado.
Pero podemos usar también la función BUSCARV, con algunas modificaciones. Para explicar el método
usaremos varias celdas auxiliares, que luego trataremos de reducir al mínimo.

Consideremos la tabla en [A1:C13], con nombre, artículo y cantidad; títulos en la primera fila y datos
propiamente dichos a partir de la segunda. En [E1] escribimos el nombre cuyos datos asociados queremos
obtener. En [E3] escribimos el número de fila donde comienzan los datos. En nuestro caso, un “dos”. Con este
número “dos” vamos a armar dos rangos. En [F3] escribimos

=”A”&E3&”:A13”. Estas son las coordenadas de la primera fila de la tabla. En [G3] escribimos
=”A”&E3&”:C13”. Estas son las coordenadas de la tabla.

Ahora aplicamos la función BUSCARV sobre este último rango.

Obtenemos el nombre del artículo en [H3] con la expresión =BUSCARV(E$1;INDIRECTO(G3);2;FALSO).


Aplicamos la función INDIRECTO para que el contenido de [G3] sea tomado como rango y no como un texto.

De la misma forma obtenemos la cantidad vendida en [I3] con la expresión:

=BUSCARV(E$1;INDIRECTO(G3);3;FALSO)

La idea es extender estas funciones para obtener los datos asociados a las demás apariciones del nombre.
Pero para eso necesitamos una última fórmula:

En [E4] escribimos:

=E3+COINCIDIR(E$1;INDIRECTO(F3);0)

La función COINCIDIR nos dice en qué posición se encuentra el dato buscado (el nombre escrito en [E1])
dentro del rango armado en [F3]. Por ejemplo, si el nombre aparece en cuarto lugar, la función devuelve el
número 4. Al sumar este valor al número de fila inicial escrito en [E3], obtenemos el número de fila siguiente a
la primera aparición del nombre. Con este número, armamos en [F4] y [G4] los rangos para que la siguiente
búsqueda se haga excluyendo la anterior aparición del nombre.

No es fácil, y hay que probarlo hasta entenderlo. Una vez que lo hayamos entendido, podemos hacer la
búsqueda con una única columna auxiliar:

En [E4], debajo del número que indica la fila de comienzo de la tabla, escribimos

=E3+COINCIDIR(E$1;INDIRECTO(“A”&E3&”:A13”);0)
En [F3] escribimos =BUSCARV(E$1;INDIRECTO(“A”&E3&”:C13”);2;FALSO) para obtener el nombre del artículo
vendido.

En [G3] escribimos =BUSCARV(E$1;INDIRECTO(“A”&E3&”:C13”);3;FALSO) para obtener la cantidad vendida


de ese artículo.

Es posible que estas fórmulas puedan simplificarse un poco más. Aceptamos sugerencias.

La función de la celda [E3] trae el artículo asociado a la primera aparición en la tabla de la izquierda del
nombre escrito en [E1].
La fórmula de la celda [E4] calcula el número de fila de la segunda aparición en la tabla de la izquierda del
nombre escrito en [E1].

La fórmula de la celda [G3] arma el rango de la tabla que comienza en la fila indicada en la celda [E3].

Se aplica la función INDIRECTO para que el contenido de la celda [G3] se tome como un rango y no como un
texto.

Excel: Creá una macro para buscar información en una


carpeta
Esta macro arma en la celda [A3] una función de búsqueda que trae el nombre correspondiente al legajo de la
celda [A1] según la tabla del archivo Base.xlsx que está en la carpeta indicada en la celda [A2].

La función BUSCARV busca un dato en una tabla. Por ejemplo, supongamos que en [A1:B10] tenemos legajo y
nombre. Si escribimos un legajo cualquiera en [D1] podemos saber el nombre a quien le corresponde con la
función =BUSCARV(D1;A1:B10;2). Hay tres argumentos entre los paréntesis:

-El primero es el legajo cuyo nombre estamos buscando.


-El segundo es el rango de la tabla que vincula legajo y nombre.

-El tercero indica que el dato que estamos buscando (el nombre) está en la segunda columna de la tabla.

Ahora que sabemos cómo trabaja esta función, veamos el problema planteado en la consulta. Sabiendo que la
tabla de búsqueda (segundo argumento de la función) se encuentra en otro libro. Eso no es problema. Si por
ejemplo, la tabla estuviera en el rango [A1:B5] de la Hoja1 del libro Base.xlsx que está en Mis
Documentos\Enero la función se escribiría: =BUSCARV(D1;‘C:\Mis Documentos\ Enero\[Base.xlsx]Hoja1’!
A1:5;2).
Dentro de esta fórmula, la referencia al rango de la tabla tiene cuatro partes:

-La ruta de la carpeta que contiene el libro.

-El nombre del libro, con extensión y entre corchetes.

-El nombre de la hoja donde está la tabla.

-El rango de la tabla, precedido por un signo de exclamación.

Según el lector, la ruta de la carpeta se encuentra en una celda, de modo que, al cambiar el dato en la celda,
cambia la búsqueda. En principio, las fórmulas con un rango que está escrito en otra celda se resuelven con la
función INDIRECTO. Pero, para usar esa función en vínculos a otros libros, esos libros deben estar abiertos. No
es el caso del problema que plantea el lector. La solución adecuada es una macro que escriba la función en la
celda. Vamos a suponer que:

-Los libros que contienen las tablas se llaman todos Base.xlsx.

-Las tablas ocupan el rango [A1:B5] de la Hoja1 de cada libro.

-Los libros están en subcarpetas llamadas Enero, Febrero, Marzo, etc., dentro de la carpeta Mis Documentos.
Los datos variables son:

-En [A1], el legajo cuyo nombre estamos buscando.

-En [A2], la carpeta que contiene la tabla a consultar.

-En [A3], la función BUSCARV que será armada por la macro.

La macro es la siguiente:

Sub Busqueda ()
carpeta = [A2]
ruta = “’C:\ Mis documentos\” + carpeta tabla = ruta + “\[Base.xlsx] Hoja1’!A1:B5”
Range(“A3”).
Formula = “=VLOOKUP(A1,” + tabla + “,2)”
End Sub
-La macro comienza leyendo la subcarpeta de la celda [A2].

-Luego concatena esta subcarpeta con la ruta común a todas, Mis documentos.

-Luego arma la dirección de la tabla concatenado la ruta al nombre del archivo, al de la hoja y a las
coordenadas de la tabla, según las reglas explicadas antes.
-Finalmente, escribe en [A3] la función BUSCARV con los argumentos correspondientes.
El nombre de la función, dentro de la macro, es VLOOKUP que es como se llama la función BUSCARV en
inglés. En el código de las macros, se respetan nombres y sintaxis en inglés. Por eso el separador de
argumentos es coma y no punto y coma. Cada vez que modificamos la subcarpeta en [A2] tenemos que re
ejecutar la macro para actualizar la fórmula. Podemos hacer que la macro se ejecute automáticamente al
modificar la celda [A2] mediante técnicas de macros automáticas.

Una fórmula para contar distintos


Una fórmula para contar cuántos datos distintos hay en una lista.

La fórmula para contar distintos es una de las llamadas “fórmulas matriciales”. Se reconocen por distintas
características:

-Aparecen en la barra de fórmulas encerradas entre llaves.

-Se les da entrada con la combinación <Control+Shift+Enter>.

-Hacen, sobre un rango, cálculos que normalmente se hacen sobre una celda.

Concretamente, para contar cuántos elementos distintos hay en un rango, la fórmula es

=SUMA(1/(CONTAR. SI(rango;rango)))
Donde rango es el rango cuyos elementos se quiere contar. Como se aclaró más arriba, a esta fórmula hay que
darle entrada con la combinación <Control+Shift+Enter>.

Ahora viene lo interesante: ¿por qué esta fórmula hace lo que hace? Supongamos que tenemos cinco datos
en el rango [A1:A5]: Juan, Juan, Juan, Pedro y Pedro. O sea, dos datos distintos. La expresión
CONTAR.SI(A1:A5;A1:A5) dentro de una fórmula matricial equivale a hacer CONTAR.SI(A1:A5;A1),
CONTAR.SI(A1:A5;A2), CONTAR. SI(A1:A5;A3), CONTAR.SI(A1:A5;A4) y CONTAR.SI(A1:A5;A5).

Esta es la forma en que se interpreta eso de que una fórmula matricial hace sobre un rango la operación que,
normalmente, se hace sobre una celda. Los resultados de estas expresiones son 3, 3, 3, 2 y 2: Juan está tres
veces y Pedro, dos.

La expresión anterior está dentro de una función SUMA que suma las inversas de cada uno de estos valores. O
sea 1/3 + 1/3 + 1/3 + 1/ 2 + 1/2. El resultado de todo esto es igual a dos, cantidad de datos distintos en el
rango.

En general, si un dato está repetido N veces, la expresión suma N valores iguales a 1/N, lo que da igual a uno.
Entonces, cada dato distinto aporta una unidad al total y el resultado es igual a la cantidad de datos distintos.

Aprende a señalar un último dato cargado


Aplica un formato condicional para señalar un último dato cargado en una planilla Excel donde ya tenés varios
cargados.
Si estás cargando datos, uno debajo de otro, en una columna de Excel y querés que el último dato cargado
aparezca señalado con color de relleno podras utilizar un formato condicional sobre la lista.

Supongamos que los datos se escriben en la primera columna de la hoja, a partir de [A1].

En estas condiciones, la función =CONTARA(A:A) da la cantidad de datos de la lista y ese valor coincide con el
número de fila del último dato. Entonces podemos aplicar un formato condicional que resalte el dato cuyo
número de fila sea igual al valor de la función CONTARA:

1-Seleccionamos las celdas cuyo fondo queremos condicionar. En este caso, toda la columna [A].

2-En la ficha [Inicio] hacemos clic en el botón [Formato condicional] y luego en [Nueva regla]. Aparece un
cuadro donde deberemos indicar el formato condicional.

3-Dentro de [Seleccionar un tipo de regla:] seleccionamos [Utilice una fórmula que determine las celdas
para aplicar formato].

4-Donde dice [Dar formato a los valores donde esta fórmula sea verdadera:] escribimos esta expresión:
=FILA(A1)=CONTARA(A:A).

5-clic en el botón [Formato].

6-En la ficha [Relleno] seleccionamos un color adecuado.

7-Hacemos clic en [Aceptar] (el formato).

8-Hacemos clic en [Aceptar] (la regla).

En la condición indicada usamos la función FILA para obtener el número de fila de la celda. Estamos pidiendo
que ese valor coincida con la cantidad de datos en la lista. Si la lista comienza en [A1] y no tiene huecos, esta
condición se cumple para el último dato de la lista. En Excel 2003 y en las versiones anteriores, el formato
condicional se aplica con las opciones [Formato/Formato condicional].

Mostrar cuadros de diálogo mediante una macro


Esta macro muestra todos los cuadros de diálogo de Excel, seguidos de su respectivo número índice

En principio, una macro puede mostrar cualquier cuadro de diálogo estándar de Excel mediante la siguiente
instrucción:

Applicatiion.Dialogs(número).Show

Donde número es un número que indica el cuadro de diálogo que se mostrará. Por ejemplo, cuando número
es igual a 1, aparece el cuadro de diálogo correspondiente a abrir un libro. Cuando número es igual a 84,
aparece el cuadro correspondiente al color de relleno de una celda.

En general, no es necesario conocer los números correspondientes a cada cuadro porque, cuando estamos
escribiendo la instrucción, se descuelga una lista con todos los valores posibles, como nombres de constantes
de Excel. Por ejemplo, la constante correspondiente al cuadro de abrir un libro es: xlDialogOpen.

Si no encontramos el cuadro de diálogo buscado, podemos hacer nuestra propia lista con esta macro:
Sub dialogos() On Error Resume Next For i = 1 To 1000 Application.Dialogs(i).Show MsgBox (“Valor= “ & i)
Next End Sub

Esta macro muestra todos los cuadros posibles para valores de 1 a 1000, seguidos del valor correspondiente a
cada uno. Podemos hacer avanzar la macro paso a paso (oprimiendo la tecla <Esc> con cada cuadro) hasta
encontrar el cuadro buscado.

Como no todos los valores tienen un cuadro asociado, incluimos en la macro la instrucción On Error Resume
Next para que la macro “pase por alto” los valores no asociados a cuadros y que producirían un error en la
ejecución.

Вам также может понравиться