¡UN ABRAZO EXCELIANO PARA TODOS/AS!
Abraham Valencia
Considero que la función “BUSCARV” es una de las más usadas por los usuarios/as de Excel. Esta función es útil cuando se necesita buscar elementos de una tabla o de una fila y aunque hay mucha información al respecto en internet, creo importante escribir un poco sobre ella. Dicha función tiene cuatro argumentos:
BUSCARV (Valor buscado, Matriz, Número de columna, Ordenado)
Argumento
|
Descripción
|
Valor buscado | El valor que se desea buscar. |
Matriz |
Rango en donde se encuentra el valor buscado. Dicho valor debe estar siempre en la primera columna del rango (la de más a la izquierda) para que BUSCARV funcione correctamente.
|
Número de columna |
Columna del rango/matriz que contiene el valor que deseamos sea devuelto. La columna 1 es aquella en donde está el “Valor buscado”, la siguiente de la derecha es la 2 y así sucesivamente.
|
Ordenado |
Es opcional, puede especificarse como “VERDADERO” (1) si se desea una coincidencia aproximada o “FALSO” (0) si se desea una coincidencia exacta del “Valor buscado”. Si no especifica el valor predeterminado siempre será VERDADERO (1).
|
Vamos con un ejemplo:
La matriz de datos está en el rango “B2:E7” y a través del uso de “BUSCARV” en “H2”, “I2” y “J2”, e ingresando un código de la primera columna de la matriz en la celda “G2”, se obtienen los valores deseados en las celdas con la fórmula respectiva:
Como se puede apreciar en el argumento “Ordenado” he usado cero (0) que es útil solo para coincidencias exactas, pero ¿qué ocurre si el código ingresado en “G2” no es exactamente igual a los de la matriz. Veamos:
Vamos a suponer que tenemos que calificar alumnos/as y las notas son en base a rangos del 0 al 20.
Entonces, si “BUSCARV” no puede encontrar el “Valor buscado” y el cuarto argumento (Ordenado) es “VERDADERO” (1), la función de la fórmula buscará una coincidencia aproximada, es decir utilizará el valor más alto que sea menor o igual al “Valor buscado” dentro de la columna 1 de la matriz. Para que se entienda mejor usaremos lo de las notas de la tabla anterior solo que como ahí son rangos, para poder usar “BUSCARV” colocaremos valores del siguiente modo:
Entonces, al aplicar las fórmulas podemos tener algo así:
En donde la columna “E” es netamente decorativa, en la columna “F” sí ingresamos la supuesta nota y en la columna “G” está la fórmula que necesitamos y que nos da el resultado esperado.
Y esa, amigos, es la forma de usar "BUSCARV". Hasta la próxima.
En muchas ocasiones los usuarios/as de Excel desean insertar fórmulas a través de VBA; para este fin hay varias propiedades del objeto “Range” que nos pueden ayudar. Aunque hay más, vamos a centrarnos, en esta ocasión, en cuatro:
- Formula
- FormulaLocal
- FormulaR1C1
- FormulaR1C1Local
En el caso de la propiedad “Formula”, toma como base el idioma primigenio del VBA, es decir, el inglés; además de eso toma como separador de lista la coma (,). Estos detalles son muy importantes a tomar en cuenta cuando insertemos una fórmula en una celda ya que significa que, sea cual sea el idioma de nuestro Office, debemos colocar la función en inglés. Asimismo, aunque nuestro separador de lista sea el punto y coma (;) deberemos usar la coma (,) en la macro. En todos los casos, el VBA detectará el idioma del Office y el separador de lista del sistema operativo, y en la celda colocará el adecuado. Podríamos decir que el inglés y la coma (,) son “universales” cuando de la propiedad “Formula” hablamos. Esto se entenderá mejor con un ejemplo. En mi portátil tengo el Office en Castellano y mi separador de lista es el punto y coma (;) pero insertaré fórmulas del siguiente modo:
Range(“A11”).Formula="=Sum(A1:A10)"
Range("G16").Formula = "=VlookUp(F16,B25:C29,2,1)"
En las respectivas celdas tendremos las siguientes fórmulas:
=Suma(A1:A10)
=BuscarV(F16;B25:C29;2;1)
Cuando usamos la propiedad “FormulaLocal”, al contrario, debemos usar las funciones en el idioma de nuestro Office y el separado de lista de nuestro sistema operativo. Por ejemplo, en mi portátil tendría que colocar así:
Range(“A11”).FormulaLocal="=Suma(A1:A10)"
Range("G16").FormulaLocal = "=BuscarV(F16;B25:C29;2;1)"
La desventaja, para mí, es que solo será útil en computadoras con Office en nuestro mismo idioma y con el mismo separador de lista; en otros casos insertará las fórmulas con errores.
En el caso de la propiedad “FormulaR1C1”, vamos a explicar su uso con uno de los ejemplos que ya hemos usado. Insertaremos en la celda “A11” la fórmula "=Suma(A1:A10)" del siguiente modo:
Range("A11").FormulaR1C1 ="=SUM(R[-10]C:R[-1]C)"
Tal como con la propiedad “Formula”, en el caso de “FormulaR1C1” también se usan las funciones en inglés y el separador de lista debe ser la coma (,). Las referencias R1C1 deben ser entendidas del siguiente modo, para este caso:
- La celda de referencia sería en este caso la “A11”
- “R[-10]” hace referencia a 10 filas arriba de “A11”, es decir la fila 1
- “C” hace referencia a la misma columna, es decir a la “A”
- “R[-1]” hace referencia a una fila arriba de “A11”, es decir la fila 10
- “C”, nuevamente, hace referencia a la misma columna, es decir a la “A”
Con la propiedad “FormulaR1C1Local”, se usa la función en el idioma del Office y el separador de lista del sistema operativo y las referencia a filas cambia de “R” a “F”. Para insertar la misma fórmula del ejemplo anterior sería así:
Range("A11").FormulaR1C1Local ="=Suma(F[-10]C:F[-1]C)"
Y eso es todo en esta ocasión, espero se haya entendido.. Hasta la próxima.
Abraham Valencia
Dim Izquierda As Single, Arriba As Single, Ancho As Single, Alto As Single
Application.DisplayAlerts = False
Application.ScreenUpdating= False
With Worksheets("Hoja1").Range("A1:D5")
Izquierda = .Left
Arriba = .Top
Ancho = .Width
Alto = .Height
.CopyPicture
End With
With Worksheets("Hoja1").ChartObjects.Add(Izquierda, Arriba, Ancho, Alto)
.Chart.Paste
.Chart.Export "D:\Temporal.jpg"
.Delete
End With