jueves, 26 de septiembre de 2013

VBA: Macro de Excel para combinar celdas y definirlas con las mismas dimensiones.

En el día de hoy expondré una manera de combinar diferentes celdas, así como definir su dimensión, para que independientemente de las celdas 'juntadas', todas tengan la misma altura.
En particular se trata de combinar ciertas celdas combinadas condicionadas a los valores del campo adyacente, de tal forma que para elementos iguales de ese segundo campo, nuestras celdas queden combinadas.
Se verá mejor en la siguiente imagen:

VBA: Macro de Excel para combinar celdas y definirlas con las mismas dimensiones.



Como se aprecia, he copiado a la derecha tres Cuadrados de iguales dimensiones, para que visualmente se compruebe que efectivamente las alturas de las celdas combinadas son idénticas.
Por otro lado es importante remarcar el sentido de nuestra futura macro, y es que para el campo 'Nivel', se han combinado las celdas correspondientes del campo 'Imagen', para cada uno de los niveles, independientemente del número de elementos que hubiera (tres, dos o cuatro en el ejemplo).


Se trata de construir un procedimiento que identifique las celdas que contienen niveles
iguales. Esto lo realizaremos incluyendo una collection que detecte los saltos en el campo 'Nivel'. Nuestra Collection solo agrega elementos no repetidos, y en concreto en qué celda se encuentra el nuevo elemento.
Con esas direcciones de las celdas donde existen saltos o cambios de 'Nivel' construiremos posteriormente los rangos de las celdas a combinar.
Por ejemplo, la primera celda sería A2 y el siguiente salto en A4, el siguiente en A5 hasta A6 y el último en el ejemplo de A7 hasta el elemento inluido manualmente en la Collection que es A10. Los rangos combinados serán por tanto A2:A4, A5:A6 y A7:A10.


Así que, en un módulo del Editor de VBA añadiremos las líneas de nuestra macro.

Sub MergeCondicionado()
Dim celda As Object
'generamos una coleccion
Set unicos = New Collection

For Each celda In Range("C2:C10")
    'controlamos el cambio de Nivel
    If celda.Value = celda.Offset(-1, 0).Value Then
    x = x + 0
    Else
    x = x + 1
    'cuando encuentre un item repetido, daría un error
    'que salvamos con la instrucción On Error Resume Next
    On Error Resume Next
    'por tanto, nuestra coleccion solo agrega elementos no repetidos
    'y en concreto en qué celda se encuentra el nuevo elemento
    unicos.Add celda.Offset(0, -2).Address, CStr(celda.Offset(0, -2).Address)
    On Error GoTo 0
    End If
Next celda

'añadimos a la colección un último elemento
unicos.Add Range("C10").Offset(1, -2).Address

'Combinamos las celdas desde un elemento de la colección al siguiente
For j = 1 To unicos.Count - 1
Range(unicos(j), Range(unicos(j + 1)).Offset(-1, 0)).Merge
Next j

'configuramos el ancho y alto homogeneo de todas las celdas combinadas
For i = 1 To unicos.Count - 1
    'damos un ancho a la columna
    Range(unicos(i), Range(unicos(i + 1)).Offset(-1, 0)).EntireColumn.ColumnWidth = 25
    'damos un alto a las celdas combinadas para que todas queden de igual altura
    Range(unicos(i), Range(unicos(i + 1)).Offset(-1, 0)).EntireRow.RowHeight = _
        50 / Application.WorksheetFunction.CountIf(Range("C2:C10"), Range(unicos(i)).Offset(0, 2).Value)
Next i
End Sub



Podemos comparar el resultado final de la primera imagen con el punto de partida...

VBA: Macro de Excel para combinar celdas y definirlas con las mismas dimensiones.

martes, 24 de septiembre de 2013

Permitir editar directamente en las celdas de Excel.

Probablemente te sorprenda el título de esta entrada del blog: Permitir editar directamente en las celdas... y quizá te sorprenda mucho más si te cuento que esta opción de Excel nos permite habilitar/deshabilitar la posibilidad de convertir nuestras celdas vinculadas o referenciadas en unos 'hipervínculos muy especiales', en cuyas celdas bastará hacer doble clic para ir a esa referencia o vínculo origen; incluso nos abrirá el Libro de trabajo origen si estuviera cerrado!!.
Por defecto esta opción se encuentra marcada, y por tanto al hacer doble clic sobre una celda, con o sin vínculo, la acción resultante es precisamente que se nos permite editar dicha celda.
Ojo con la contrapartida, ya que si optamos por deshabilitar esta opción, es decir, si decidimos trabajar a modo de 'hipervínculo', sólo podremos modificar el contenido de las celdas en la barra de fórmulas.

La siguiente cuestión es ¿desde donde podemos configurar esta opción?. Obvio, desde la ficha Archivo > Opciones de Excel > Avanzadas > sección Opciones de edición:

Permitir editar directamente en las celdas de Excel.



Comprobemos en este video el efecto de desmarcar esta opción:

Permitir editar directamente en las celdas de Excel.



Sin duda cómodo y fácil en determinadas ocasiones.

jueves, 19 de septiembre de 2013

Guardar Plantilla de gráfico en Excel.

No es muy frecuente, pero para aquellos que trabajan recurrentemente con los gráficos de Excel, y en mayor o menor medida, el tipo de datos a 'graficar' o representar sean del mismo tipo, así como los gustos del usuario final, conviene tengamos claro cómo funcionan las plantillas personalizadas de gráficos.
Todos conocemos y explotamos las plantillas o modelos de gráficos estándar, para ello basta seguir el asistente de gráficos y ver la variedad de ellos que existen (Columnas, Barras, Líneas, Radiales, etc.):

Guardar Plantilla de gráfico en Excel.


Lo malo de estas plantillas, si es que tienen algo malo, es que son bastante sencillas, y para formateos elaborados se quedan un poco escuetos. Es para esto y algunas cosas más que Microsoft Excel pone a nuestra disposición las plantillas (a las que podríamos acceder desde el mismo Menú-el primero por arriba-). Pero para esto primero deberemos generar un gráfico, y darle todos los formatos que deseemos, así como modificar su configuración en cualquier aspecto, zona o área del gráfico.
Para abreviar me he centrado en el ejemplo siguiente en formatos sobre diferentes áreas de un origen de datos simple. NO IMPORTAN LOS DATOS para realizar esta operación de guardado de plantilla:

Guardar Plantilla de gráfico en Excel.


Una vez generado nuestro 'modelo' de gráfico, bastará con acceder a las Herramientas de gráficos > grupo Tipo > botón Guardar como plantilla:

martes, 17 de septiembre de 2013

VBA: El operador de comparación LIKE.

A través de un comentario un lector preguntaba por la manera de verificar si un texto estaba contenido dentro de una celda:

...Si de esta forma la celda que tiene la palabra exacta "Color" es la que cambiara de color. Para cambiar de color la celda solo que la palabra 'Color' esta dentro de una frase y/o conjunto de otras palabras....


Se trata por tanto de comprobar mediante algún operador o instrucción si nuestras celdas contienen alguna otra cadena. En particular hablaremos de comodines, de operadores de comparación (like) y de la función InStr.

Analizaremos, en primer lugar, cuáles son los caracteres comodín empleados en nuestros procedimientos de VB:
1 - Cierre interrogación (?): representa cualquier carácter único.
2 - Asterísco (*): puede indicar cero o más caracteres (indeterminados).
3 - Almohadilla (#): Cualquier dígito único
4 - Cadena entre corchetes ([lista de caracteres]): Cualquier carácter único en la lista dada de caracteres.
Esta 'lista de caracteres' puede especificar un rango de caracteres mediante el uso de un guión (-) para separar los límites superiores e inferiores del rango, pero deben aparecer en orden de clasificación ascendente (por ejemplo, A-Z ó 0-100).


Por otra parte la función InStr nos retorna un tipo Long que especifica la posición de la primera aparición de una cadena dentro de otra.
La sintáxis de la función es:
InStr([inicio, ]CadenaDondeSeBusca, CadenaBuscada[, TipoComparación])


Por último el operador Like, con el que funcionan perfectamente nuestros comodines, y que utilizamos para comparar dos cadenas de caracteres. A la hora de emplear nuestros caracteres comodín, debemos tener presente que es posible utilizar un grupo de uno o más caracteres (en nuestra 'lista de caracteres') entre corchetes ([]) para establecer una coincidencia con un carácter cualquiera de la cadena buscada.

Una vez repasados los conceptos esenciales a la hora de comparar cadenas en nuestras macros, planteemos un ejemplo. Tenemos en nuestra hoja de cálculo en el rango A1:A7

VBA: El operador de comparación LIKE.


Se trata de contruir un sencillo proceso que identifique las celdas que contienen la cadena 'Excel'. Y nuestro primer procedimiento será con el operador Like y algún comodín. Asi que, en un módulo del Editor de VBA añadiremos las líneas de nuestra macro.

Sub OperadorLike()
Dim celda As Object
Dim rng As Range
Set rng = Range("A1:A7")
  
'recorremos cada celda del rango indicado
For Each celda In rng
valor = celda.Value
    'asignamos color si la celda contiene el texto Excel
    'con el operador Like
    If valor Like "*Excel*" Then celda.Interior.Color = 65535
Next celda
End Sub



En este segundo procedimiento que sigue, y que realiza la misma acción, empleamos la función InStr. En el mismo módulo del Editor de VBA anterior añadiremos las líneas de la macro.

Sub FuncionInStr()
Dim celda As Object
Dim rng As Range
Set rng = Range("A1:A7")
  
'recorremos cada celda del rango indicado
For Each celda In rng
valor = celda.Value
    'asignamos color si la celda contiene el texto Excel
    'con la función InStr
    If InStr(valor, "Excel") > 0 Then celda.Interior.Color = 65535
Next celda
End Sub



El resultado en ambos casos es idéntico, se busca celda por celda en el rango indicado, dentro de cada cadena contenida en dicha celda, sólo cuando la cadena 'Excel' esté contenida en ella, se marcará con un color el fondo:

VBA: El operador de comparación LIKE.

viernes, 13 de septiembre de 2013

Panel de selección. Trabajando con objetos en Excel.

Hablaremos hoy del Panel de selección en Excel.
En primer lugar veremos cómo podemos habilitar o deshabilitar este Panel. Para ello nos iremos a la ficha Diseño de página > grupo Organizar > botón Panel de selección.

Panel de selección. Trabajando con objetos en Excel.

También lo podemos encontrar una vez hayamos añadido algún objeto buscándolo en la barra de herramientas de dibujo > pestaña Formato > grupo Organizar:


La primera pregunta que debemos hacernos es para qué sirve este Panel de selección??. La respuesta nos la dá la etiqueta de ayuda de Excel. El Panel de selección sirve para facilitar la selección, agrupación y trabajo de diferentes objetos, así como cambiar su visibilidad.

Veamos en el siguiente ejemplo alguna de las utilidades. Tenemos en nuestra hoja de cálculo los siguientes objetos (lo más habituales):
1- Una celda validada tipo lista (con su flecha desplegable).
2- Una autoforma (un rectángulo).
3- Un gráfico.
4- Un texto WordArt.
5- Una imagen.
6- Un diagrama SmartArt (un organigrama).
7- Un botón (control de formaulario).
Serviría para cualquier tipo de objeto.

Panel de selección. Trabajando con objetos en Excel.



Lo más habitual desde este Panel de selcción, obviamente es seleccionar los diferentes objetos, uno a uno, o seleccionar varios al tiempo, lo que conseguiremos presionando la tecla Ctrl y al tiempo en el listado del Panel los objetos elegidos (con el fin de agruparlos, alinearlos, etc...).
También haciendo doble clic sobre la lista de los objetos podríamos cambiar los nombres de éstos.
Y también podríamos hacerlos Visibles u Ocultarlos a la vista de la hoja (ojo, no los borramos sólo los mostramos/ocultamos!!).

Panel de selección. Trabajando con objetos en Excel.



Sólo como curiosidad, la acción de mostrar/ocultar los objetos (i.e., la visibilidad) sería la equivalencia en la hoja de cálculo a la propiedad .Visible en nuestras macros VBA. Por ejemplo, obtenemos el mismo resultado ocultando la autoforma (el rectángulo) desde el Panel de selcción que desde una macro con la propiedad .Visible:
ActiveSheet.Shapes.Range(Array("1 Rectángulo redondeado")).Visible = msoFalse

martes, 10 de septiembre de 2013

Reparar un archivo Excel dañado o corrupto.

En varias ocasiones me ha ocurrido, y otras tantas me ha preguntado sobre esto, que al trabajar con nuestros Libros de Excel ha ocurrido un error 'fatal', nuestra aplicación se ha cerrado repentinamente (se ha colgado, vamos) y luego ya no podíamos abrirlo...
Para solucionarlo o intentarlo al menos, ya que no son métodos fiables al 100%, disponemos de algunos procedimientos. Yo hoy explicaré los dos más usados:
1- Abrir y Reparar
2- Copiar las hojas del libro dañado a otro nuevo Libro.


El primer método es muy intuitivo, consiste en emplear el comando Abrir y Reparar que nos encontramos en la ventana diáolgo de Abrir, en concreto en el desplegable del botón Abrir:

Reparar un archivo Excel dañados o corruptos.


A continuación nos aparecerá un mensaje ofreciéndonos dos alternativas:

Reparar un archivo Excel dañados o corruptos.


Tal y como se indica en el cuerpo del anterior mensaje, optaríamos como primera opción por presionar Reparar, ya que dicha herramienta tratará de recuperar lo máximo posible de nuestro libro de trabajo dañado.
Optaríamos por la segunda opción de Extraer datos cuando la opción anterior haya fracasado.


Si hemos tenido éxito con la Reparación obtendríamos un nuevo mensaje informándonos de lo ocurrido y de la situación del archivo, así como proporcionándonos un link hacía un archivo con un listado de las reparaciones realziadas:

jueves, 5 de septiembre de 2013

Mostrar barras de desplazamiento horizontal y vertical.

Hace algunos meses, allá por enero de este año, expliqué cómo mostrar u ocultar a la vista del usuario las pestañas de las hojas (ver).
Otra opción interesante que nos encontramos en la misma sección de las Opciones de Excel, menú de Avanzadas y su sección Mostrar opciones para este libro, es la de Mostrar/Ocultar las barras de desplazamiento horizontal y vertical:


El antes y después de la selección de estas opciones lo vemos en las imágenes siguientes.
Sin barras de desplazamiento:

Mostrar barras de desplazamiento horizontal y vertical.


Con barras de desplazamiento:

Mostrar barras de desplazamiento horizontal y vertical.



Bueno saberlo por si algún día nos encontramos un libro de trabajo sin estas útiles barras...

lunes, 2 de septiembre de 2013

Cursos programación VB y macros para Excel online.

Presento la edición de Cursos de Excel y Macros online con tutor personal de Septiembre de 2013.

Los cursos de Excel y Macros abiertos para este mes de septiembre a los mejores precios son:

Curso Macros Iniciación

(ver más)

Curso Macros Medio

(ver más)

Curso Excel Avanzado para versiones 2007/2010

(ver más)

Curso Excel Nivel Medio

(ver más)

Curso Excel Financiero

(ver más)

Curso Tablas dinámicas en Excel

(ver más)

Curso preparación MOS Excel 2010 (Examen 77-882)

(ver más)


Esta nueva edición de Cursos de Excel y macros en modalidad elearning (online) comenzaron ayer día 1 de Septiembre de 2013.
Con la confianza de siempre....Anímate!!

También formación Excel a empresas. Explota los recursos a tu alcance (ver más).


Informarte sin compromiso en cursos@excelforo.com o directamente en www.excelforo.com.