Está en la página 1de 11

Macros para convertir textos a mayúsculas,

minúsculas y nombres propios


Convertir a mayúsculas un rango de celdas seleccionado

Sub ConvierteMayusculas()
Dim celda As Range

For Each celda In Selection


celda.Value = UCase(celda.Value)
Next

End Sub

Convierte a minúsculas un rango de celdas seleccionado

Sub ConvierteMinusculas()
Dim celda As Range

For Each celda In Selection


celda.Value = LCase(celda.Value)
Next

End Sub

Convierte en mayúscula la primera letra de una cadena de texto


(usando la función Proper de Excel - no disponible en vba-excel)

Sub ConviertePropias()
Dim celda As Range

For Each celda In Selection


celda.Value = Application.WorksheetFunction.Proper(celda.Value)
Next

End Sub

Uso de la función CountIf() para encontrar duplicados en una


columna
Problema: identificar los valores duplicados en la siguiente columna de valores:
La siguiente macro encuentra valores duplicados en una columna

o Utiliza la función CountIf() para identificar los valores duplicados

o La función CountIf es parte de la biblioteca de Excel

o WorksheetFunction.CountIf

Sub duplicados()
'Identificar valores duplicados en una columna

Dim rango As Range

Dim celda As Range

Set rango = Selection

For Each celda In rango

If WorksheetFunction.CountIf(rango, celda.Value) > 1 Then

celda.Offset(0, 1).Value = "duplicado"

End If

Next celda

End Sub
Resultado de la macro anterior. Encuentra los valores duplicados en la selección dada:

Maceo para eliminar valores duplicados en una columna utilizando


la función CountIf()
Tabla de entrada:

Sub eliminarDuplicados()

Dim i As Long

Dim numFilas As Long

numFilas = Cells(Rows.Count, 1).End(xlUp).Row


For i = numFilas To 1 Step -1

If WorksheetFunction.CountIf(Range("A:A"), Cells(i, 1)) > 1 Then

Rows(i).Delete

End If

Next i

End Sub

Tabla resultante después de ejecutar la macro anterior:

Macro para eliminar duplicados en una columna utilizando el método RemoveDuplicates


del Objeto Range
Problema: eliminar valores duplicados encontrados en la columna A de la siguiente tabla:
Sub eliminarDuplicados()

'Utiliza el método RemoveDuplicates del Objeto Range

Dim rango As Range

Set rango = Range("A:A")

rango.RemoveDuplicates Columns:=Array(1), Header:=xlYes

End Sub

Resultado al ejecutar la macro anterior:


Sub Coincidir()
Dim valor As Variant
valor = Worksheets("hoja1").Range("a2").Value
var2 = Application.WorksheetFunction.Match(valor,
Worksheets("hoja1").Range("B1:E1"), 0)
End Sub

La función DESREF (OFFSET) de Excel – Una


explicación
La función DESREF de Excel (OFFSET en la versión inglesa) es una de esas
funciones que causan cierta confusión a los usuarios novicios. Tal vez esta
confusión esté relacionada al hecho que DESREF puede referirse tanto a una
celda específica como a un rango de celdas. La sintaxis de la función difiere en
cada uno de los casos.

En mis notas sobre actualización automática de datos y sobre manejo de


pequeñas bases de datos con Excel, mostraba como usar DESREF para construir
rangos dinámicos.

En la más reciente nota sobre bases de datos de imágenes en Excel mostraba


también el otro uso de DESREF, crear una referencia a una única celda.

Tres hechos hay que tener en cuenta cuando queremos usar DESREF:

1 – DESREF puede crear una referencia tanto a una celda única como a un rango
de celdas;

2 – La sintaxis en cada caso es distinta;

3 – Como definir el primer argumento de la función, al que llamaremos el "ancla"

La sintaxis de DESREF es

El "ancla" es la celda que es nuestro punto de partida. Por ejemplo, si escribimos


esta fórmula: DESREF(A1,2,1), estamos estableciendo una referencia a la celda
B3, como pueden ver en este ejemplo

Puesto en palabras, la fórmula dice: empezamos en A1 (el "ancla"), nos movemos


2 filas hacia abajo y una columna a la derecha y así llegamos a B3.

Con la ayuda de la función COINCIDIR y Validación de Datos, podemos construir


un modelo dinámico a partir de nuestro ejemplo.
Definimos esta validación de datos en la celda A9

En la celda B9 sustituimos el segundo argumento (Filas) con la función


COINCIDIR
=DESREF(A1,COINCIDIR(A9,A2:A6,0),1), para definir el número de filas en
función del número de catalogo elegido. De esta manera DESREF nos dará el
nombre del producto en forma dinámica.
Como pueden ver, cuando usamos DESREF para referirnos a una celda, omitimos
los argumentos "alto" y "ancho".

Cuando usamos DESREF para referirnos a un rango, usamos cero como valor
para los argumentos "filas" y "columnas". Por ejemplo, si queremos establecer una
referencia a la tabla de productos en el ejemplo (el rango A1:B6) usamos la
fórmula: =DESREF(A1,0,0,6,2).

Función DESREF en Excel


por Quique Arranz

En ocasiones tenemos una tabla como la de la siguiente imagen:


Depende del enfoque que queramos darle esto puede ser un poco confuso
y no fácil de leer. Lo mejor sería unas gráficas para hacernos a la idea de lo
que necesitamos.
Existe la posibilidad de hacer unas sencillas tablas dinámicas pero en esta
ocasión vamos a usar unos desplegables de Validación de Datos y la fórmula
DESREF junto con INDICE para escoger los datos que necesitamos.
Lo primero que haremos será en dos celdas poner los Data Validation con
las cabeceras de la tabla.
Seleccionamos dos celdas (para las dos listas de Validación de Datos) y
hacemos click en:
Datos>> Herramientas de Datos >> Validación de datos
 En Permitir elegimos la opción de Lista.
 En Fue te seleccionamos el rango de nuestras cabeceras.
 Hacmos click en OK.
** Yo las he sombreado y recuadrado como si tuvieran volumen.
Quedaría más o menos de la siguiente manera:

Luego a su izquierda (aunque podríamos esconderlo para que no sea tan


repetitivo) volvemos a escribir los meses (realmente no haría falta).
Finalmente en las dos columnas a la derecha de los meses escribiremos la
fórmula DESREF como más adelante explicaremos.

FUNCIÓN DESREF EN EXCEL


DESREF es una útil fórmula que tiene muchas posibilidades. El uso que le
hemos dado en este caso es apuntar a una celda concreta en una matriz
dadas sus coordenadas. La coordenada fila serán los meses del año, la
coordenada columna será lo que hayamos elegido en los desplegables.
SINTAXIS
=DESREF(ref; fila; columna; [alto]; [ancho])

 ref: es la referencia a la celda situada en la esquina superior izquierda


de la tabla. Acuérdate de fijar el valor para poder arrastrar la fórmula.
 fila: es la fila donde encontraremos el valor
 columna: es la columna en la que encontraremos el valor
CONTINUACIÓN…
La fórmula DESREF para la fila Abril y la columna Unidades nos devolverá
el valor de 1180 en nuestro ejemplo.
Pero, ¿cómo puede saber la columna de Unidades dentro de la tabla? o ¿el
mes de Abril en la misma?. Para ello usaremos la fórmula COINCIDIR.
Finalmente tendremos una fórmula combinada con la siguiente pinta:
=DESREF(ref;COINCIDIR(de la fila);COINCIDIR(de la columna))

Finalmente añadimos un gráfico que nos permita comparar visualmente los


valores elegidos.

Depende cómo organicemos la información esto podrá ser más o menos


útil. Yo recomiendo que escondamos las fórmulas en algún sitio de la hoja
(ojo, no ocultéis la información obtenida pues no se mostrará en la tabla si lo
hacéis).
Puede quedar algo más profesional si lo preparamos un poco, algo así
como:
Para los que quieran saber más detalles de cómo utilizar las fórmulas de
DESREF y COINCIDIR os dejo aquí el archivo.

También podría gustarte