Quantcast
Channel: EXCELeINFO
Viewing all 466 articles
Browse latest View live

Aprendamos Power Query para Excel – 5 – Consolidar información de hojas

$
0
0

TipVer curso completo Aprendamos Power Query para Excel.

En los capítulos anteriores vimos cómo extraer información desde archivo .CSV y .TXT, pero qué pasa si la información que deseamos transformar está en el mismo archivo de Excel, en diferentes hojas. Power Query tiene una fórmula que nos permitirá mostrar los diferentes modos en que podemos obtener información de un archivo.

Nos vamos a la siguiente ruta:

  • Pestaña Datos > Nueva consulta > Desde otras fuentes > Consulta en blanco.

Una vez dentro del Editor de consultas escribimos la siguiente función:

=Excel.CurrentWorkbook()

Lo que la anterior función hace es mostrar los objetos de donde Excel puede extraer información. Considera que Power Query podrá extraer información de:

  1. Tablas de Excel.
  2. Nombres de rangos.
  3. Áreas de impresión.
  4. Conexiones.

Ver video Power Query – Consolidar información de hojas

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Consolidar Tablas de Excel

En el archivo que manejaremos en este ejemplo (mismo que puedes descargar al pie del artículo), tiene 3 hojas y en cada hoja hay información por mes, tenemos la hoja de enero, febrero, marzo y abril.

Consolidaremos 4 Tablas.

Figura 1. Consolidaremos 4 Tablas.

Seguimos el mismo paso que describí con anterioridad:

  • Pestaña Datos > Nueva consulta > Desde otras fuentes > Consulta en blanco.

En la barra de fórmulas del Editor de consultas ingresamos:

=Excel.CurrentWorkbook()

Ahora vemos la lista de las 4 tablas que tenemos en nuestro archivo. Recordemos que hay una tabla por hoja.

Lista de Tablas en el archivo.

Figura 2. Lista de Tablas en el archivo.

  • Ahora damos clic en el botón de la columna Content para desplegar la información consolidada de las tablas.
  • Demarcamos la opción Usar el nombre de la columna original como prefijo.

Clic en el botón de la columna Content.

Figura 3. Clic en el botón de la columna Content.

Ahora hagamos las siguientes transformaciones:

  • Clic derecho en FECHA_COMPRA > Cambiar tipo > Fecha.
  • Elegimos CANTIDAD, luego con la tecla Control presionada elegimos FECHA_COMPRA, PRODUCTO, SUCURSAL, VENDEDOR.
  • Presionamos clic derecho y elegimos Quitar otras columnas.
  • Le cambiamos el nombre a la consulta, y le ponemos PrimerCuatrimestre.

Contenido de las 4 Tablas.

Figura 4. Contenido de las 4 Tablas.

Cargar datos

Y para finalizar, cargaremos los datos a una hoja de cálculo:

  • Nos dirigimos a la pestaña Archivo y elegimos Cerrar y cargar.

En la siguiente figura vemos algo que nos llama la atención, los datos combinados son 11,360 , pero la consulta muestra 23,260 registros, es decir, el doble.

Se muestra el doble de regitros. Qué pasó?

Figura 5. Se muestra el doble de regitros. Qué pasó?

Veamos que sucedió

Cuando usamos la función =Excel.CurrentWorkbook() se enlistaron las 4 Tablas de nuestro archivo, pero al final, cuando combinamos el contenido de estas 4 Tablas, se creó una Tabla adicional con el nombre PrimerCuatrimestre, entonces Excel intentó mostrar el contenido de las 4 Tablas más el de la Tabla nueva.

Regresemos al Editor de consultas, elijamos el paso Origen y ahora vemos que se muestran 5 Tablas.

Se añadió una Tabla adicional con la combinación de las 4 Tablas iniciales.

Figura 6. Se añadió una Tabla adicional con la combinación de las 4 Tablas iniciales.

Cómo lo solucionamos

Para cargar solamente los valores de las 4 Tablas, hagamos lo siguiente:

  • Elegimos el paso Origen.
  • Elegimos la columna Name.
  • Clic sobre el filtro > Filtros de Texto > No contiene.
  • Confirmamos que sí deseamos insertar un paso.
  • Escribimos el texto PrimerCuatrimestre.
  • Clic en Aceptar.
  • Pestaña Archivo > Cerrar y cargar.

Con los pasos anteriores nos aseguramos que los datos cargamos excluyan el contenido de la Tabla PrimerCuatrimentre, que fue la que se generó y donde se mostrarán los datos combinados de las 4 Tablas de cada uno de los meses.

Ahora vemos la cantidad correcta, 11360.

Se cargaron los registros a una hoja de cálculo.

Figura 7. Se cargaron los registros a una hoja de cálculo.

Descarga el archivo de ejemplo

Descargar el ejemplo ejemplo03 – hojas por meses 1er cuatrimestre.rar

TipVer curso completo Aprendamos Power Query para Excel.


Aprendamos Power Query para Excel – 6 – Consolidar información de varios archivos de Excel

$
0
0

TipVer curso completo Aprendamos Power Query para Excel.

En el artículo anterior vimos cómo consolidar información de varias hojas de Excel, para posteriormente analizar la información

con nuestra manera favorita: las Tablas dinámicas. Para cumplir con nuestro objetivo recordemos que usamos la función en Power Query:

=Excel.CurrentWorkbook()

Lo que la anterior función hace es mostrar los objetos de donde Excel puede extraer información. Considera que Power Query podrá extraer información de:

  1. Tablas de Excel.

  2. Nombres de rangos.

  3. Áreas de impresión.

  4. Conexiones.

Ver video Consolidar información de varios archivos de Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Consolidar información de archivos de Excel

En este artículos haremos uso de otra función, la cual nos ayudará a ver el contenido de los objetos a extraer información, pero de cada uno de los archivos enlistados. Dicha función es:

=Excel.Workbook([Content])

TipToma en cuenta que esta función tomará los últimos datos guardados en los archivos, por lo que tenemos que prestar atención a Guardar cambios antes de actualizar la función en Power Query.

Cómo lo hacemos

Tenemos 24 archivos en una carpeta, los cuales son de los meses del año 2016. 12 archivos son .CSV y los otros 12 son archivos de Excel. En este artículo consolidaremos la información de los archivos de Excel, ya que los CSV contienen la misma información.

En la carpeta tenemos archivos de Excel y CSV.

Figura 1. En la carpeta tenemos archivos de Excel y CSV.

En Excel nos dirigimos a la pestaña Datos. En la sección Obtener y transformar elegimos Nueva consulta > Desde un archivo > Desde una carpeta. Elegimos la ruta donde están nuestros archivos y damos Aceptar.

Elegimos la carpeta donde están los archivos.

Figura 2. Elegimos la carpeta donde están los archivos.

Se mostrará una vista con todos los archivos de la carpeta. Damos clic en Editar.

Ahora, en la ventana de Power Query veremos una de los archivos de la carpeta elegida, además de ver las propiedades de dichos archivo. Nota que tenemos la misma columna Content, la cual vimos el capítulo 4 de esta serie.

En la columna Content podemos el contenido de los archivos.

Figura 3. En la columna Content podemos el contenido de los archivos.

Transformar

Ahora sigue los siguientes pasos para mostrar sólo los archivos de Excel y extraer su información:

  • Expandimos el filtro de la columna Extensión y dejamos marcada la opción .xlsx.
  • Con la tecla [Ctrl] presionada elegimos las columnas Content y Name.
  • Damos clic derecho sobre cualquier de las dos columnas y elegimos Quitar otras columnas.
  • En la pestaña Agregar columna elegimos la opción Columna personalizada.
  • Añadimos la función =Excel.Workbook([Content]).

Añadimos la función =Excel.Workbook([Content]).

Figura 4. Añadimos la función =Excel.Workbook([Content]).

  • Se agregará una nueva columna llamada Personalizado donde vemos que el contenido de cada elemento dice Table.
  • Eliminamos la columna Content.
  • Damos clic en el botón con el ícono con flechas encontradas image.
  • En el filtro que se hará desmarcamos la opción Usar el nombre de la columna original como prefijo.
  • Hacemos un filtro en la columna Kind donde dejamos seleccionado solo Sheet.
  • Eliminamos las columnas, Item, Kind y Hidden.
  • Damos clic en en encabezado Data, en el ícono con las flechas encontradas image.
  • En el filtro que se hará desmarcamos la opción Usar el nombre de la columna original como prefijo.
  • Nos vamos a la pestaña Inicio y seleccionamos la opción Usar la primera fila como encabezado.
  • Elegimos la columna FECHA_ENTREGA y damos clic derecho para elegir Cambiar tipo > Usar configuración regional.
  • En Tipo de datos elegimos Fecha y en Configuración regional elegimos Inglés (Estados Unidos).
  • Elegimos la columna FECHA_ENTREGA y nos dirigimos a la pestaña Inicio > Quitar filas > Quitar errores.
  • Eliminamos la primera columna llamada abr 2016.xlsx.
  • Le cambiamos el nombre a la columna abr 2016 y le ponemos MES_AÑO.
  • Elegimos las columnas MES y FECHA_COMPRA, damos clic derecho y elegimos Cambiar tipo > Fecha.

Cargar a Excel

En pestaña Inicio elegimos la opción Cerrar y cargar. Al final podemos hacer una Tabla dinámica para analizar la información.

Se cargaron los registros de todos los archivos.

Figura 5. Se cargaron los  registros de todos los archivos.

Descargar los archivos de ejemplo

Descargar el ejemplo ejemplo 06 – archivos de meses.rar

TipVer curso completo Aprendamos Power Query para Excel.

Aprendamos Power Query para Excel – 7 – Consulta desde una página Web y el nuevo gráfico de mapa

$
0
0

TipVer curso completo Aprendamos Power Query para Excel.

Por esta vez dejamos en paz los archivos de Texto y los archivos de Excel. En este artículo nos enfocaremos en cómo extraer información desde la Web, en específico desde el sitio de Wikipedia.

América

Como lo hemos visto en el sitio de Wikipedia hay muchos artículos que contienen tablas de información, y en más de una ocasión hemos requerido pasar el contenido de esas tablas hacia Excel. Aunque la manera más “fácil” (nótese que la palabra fácil la encierro entre comillas) es copiar y pegar los datos para después formatear los datos y dejarlos en formato de tabla. Pero siendo sinceros, no es la manera más eficiente.

Se me ocurrió que podemos consultar información relativa a nuestro continente americano y desde un artículo de Wikipedia obtener información estadística acerca de los países que lo conforman.

Haremos una consulta a Wikipedia desde Power Query.

Figura 1. Haremos una consulta a Wikipedia desde Power Query.

Ver video Consulta desde una página Web

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Extraer información desde una página Web

Una vez identificada la página a la cual deseamos hacer la consulta, en Excel:

  • Nos vamos al pestaña Datos.
  • En la sección Obtener y transformar elegimos Nueva consulta.
  • Elegimos Desde otras fuentes > Desde la web.
  • Para este ejemplo ingresamos la ruta https://es.wikipedia.org/wiki/Am%C3%A9rica.

Pegamos la URL donde de donde se hará la Consulta.

Figura 2. Pegamos la URL donde de donde se hará la Consulta.

Al cargar la página, se mostrará la vista previa de cada uno de los elementos de Tabla con los que cuenta la página a consultar. Así como también tenemos una vista previa de cómo se ven los datos cuando se visualizan desde un navegador de Internet.

Vista previa de los datos almacenados en Tablas HTML.

Figura 3. Vista previa de los datos almacenados en Tablas HTML.

Transformando datos

A continuación haremos algunas transformaciones interesantes que nos permitirán posteriormente cargar a Excel. Toma en cuenta que trabajaremos con la Tabla llamada Estados soberanos.

  • Elegimos el encabezado de la columna Bandera y con la tecla [Ctrl] elegida elegimos la columna Column9.
  • Presionamos clic derecho y elegimos Quitar columnas.

Toma en cuentaPongamos atención en las columnas Superficie y Población. Los valores son numéricos, pero la separación de millares está definida por un espacio, por lo tanto no podremos cambiar el tipo de los datos a Número entero, ya que generará error. Infortunadamente tampoco podemos usar las funciones Recortar y Limpiar, ya éstas sólo eliminan espacios al inicio y espacios al final. Y tampoco podemos reemplazar un espacio por vacío, ya que no es espacio normal.

Pero lo que sí podemos hacer es reemplazar el carácter de espacio, que para este caso en especial será el llamado Espacio de no separación. Sigamos los siguientes pasos:

  • Elegimos la columna Superficie, y con la tecla [Shift] presionada, elegimos la columna Población.
  • Damos clic derecho y elegimos Reemplazar los valores.
  • En el formulario Reemplazar valores damos clic en Opciones avanzadas.
  • Marcamos la opción Reemplazar con caracteres especiales y elegimos de la lista Espacio de no separación.
  • Ahora veremos que en la parte de Valor que buscar se puso el texto #(00A0).
  • Clic en aceptar.
  • Ahora convertimos ambas columnas. Damos clic derecho y elegimos Cambiar tipo > Número entero.

Quitaremos los caracteres especial de Espacio (de no separación).

Figura 4. Quitaremos los caracteres especial de Espacio (de no separación).

Ahora toca trabajar con otro carácter especial, pero ahora en la columna Nombre/Nombre oficial. Si vemos los datos, nos damos cuenta que algunas filas contienen dos nombres de países y ambos nombres están separados por salto de línea. Lo que haremos es, separar los nombres por ese salto de línea, el cual es un carácter especial. Veamos:

  • Seleccionamos la columna Nombre/Nombre oficial.
  • En la pestaña Inicio elegimos Dividir columna > Por delimitador.
  • Elegimos Personalizado en Seleccione o escriba un delimitador.
  • Damos clic en Opciones avanzadas.
  • Marcamos la opción Dividir con caracteres especiales.
  • Y elegimos Retorno de carro (Enter).
  • Ahora vemos que el separador es #(cr).
  • Clic en Aceptar.

Divideremos la columna por el carácter Retorno de carro (Enter).

Figura 5. Dividiremos la columna por el carácter Retorno de carro (Enter).

Ahora lo que haremos es dar clic en el encabezado de la columna Población y moverla a la derecha de la columna Nombre/Nombre oficial .1

Vista final de nuestros datos en Power Query.

Figura 6. Vista final de nuestros datos en Power Query.

Cargar a Excel

Ahora que ya tenemos nuestros datos transformados. Nos vamos a la pestaña Inicio > Cerrar y cargar. Pero en esta ocasión no haremos una Tabla dinámica de los datos.

Nuevo gráfico de mapa

Si cuentas con una suscripción de Office 365, entonces tienes accesos a muchas actualizaciones de Excel, entre otros beneficios. Uno de ellos es que contarás con un nuevo Gráfico de Mapa, el cual permitirá visualizar datos de ciudades o países. Estos gráficos de mapas son independientes a lo que puedes hacer con Power Map. Sigues los siguientes pasos:

  • Una vez que nuestros datos están en Excel. Seleccionamos los datos de las columnas Nombre/Nombre oficial.1 y Población.
  • Pestaña Insertar > Mapas.
  • Se insertará un gráfico donde se incluirá un mapa y veremos la información por densidad de colores.

Con Office 365 tienes el nuevo Gráfico de Mapas.

Figura 7. Con Office 365 tienes el nuevo Gráfico de Mapas.

Descarga el ejemplo

En esta ocasión no incluyo archivos de ejemplo, sino la liga a la página Web para que puedas descargar los datos: https://es.wikipedia.org/wiki/Am%C3%A9rica

TipVer curso completo Aprendamos Power Query para Excel.

Aprendamos Power Query para Excel – 8 – Consulta desde una base de datos SQL Server

$
0
0

TipVer curso completo Aprendamos Power Query para Excel.

Ya hemos visto la capacidad de Power Query para conectarnos a archivos de texto y archivos de Excel, y eso nos funciona perfectamente cuando tenemos los archivos en nuestro poder. Pero qué sucede cuando la información está alojada en un Servidor de la empresa y deseamos acceder directamente a dichos datos.

Sé que no siempre se nos dará acceso directamente a los Servidores de la empresa, pero no olvides que la Inteligencia de negocios apunta a que cualquier ejecutivo pueda tener un “autoservicio de información”, es decir que de alguna manera u otra se nos brinde acceso a la información de nuestro negocio y con las herramientas adecuadas ser capaces de extraer, transformar y cargar datos, además de tener más poder de análisis y toma de decisiones.

Montando un entorno de pruebas

Para poder hacer este video monté un Servidor SQL en una máquina virtual para poder mostrarles cómo conectarnos desde Power Query. Les cuento que usé el software VMware Workstation 12 Player para instalar Windows Server y SQL Server.

SQL Server sobre una máquina virtual.

Figura 1.SQL Server sobre  una máquina virtual.

Instalé la base de datos de pruebas AdventureWorks, la cual la puedes descargar desde aquí.

Datos de acceso de SQL Server

Para poder conectarnos al Servidor de SQL debemos saber primero el nombre del Servidor o la IP del mismo. Dentro de la máquina virtual ejecutamos la aplicación CMD y ejecutamos el comando IPCONFIG, el cual nos dirá la IP del Servidor de Windows. El usuario y contraseña de SQL serán las misma que asignaron al momento de la instalación. En caso de que no tengas un ambiente de pruebas como el anterior, te sugiero solicites a tu departamento de Sistemas los siguientes datos:

  • IP o nombre del Servidor.
  • Usuario asignado de SQL.
  • Contraseña de SQL.

Con el comando IPCONFIG obtenemos la IP del Servidor.

Figura 2. Con el comando IPCONFIG obtenemos la IP del Servidor.

Extraer datos desde SQL Server usando Power Query

Una vez que tenemos los datos de acceso del Servidor, ya sea porque montamos un ambiente de pruebas o se nos otorgaron las credenciales, nos dirigimos a Excel:

  • Nos vamos al pestaña Datos.

  • En la sección Obtener y transformar elegimos Nueva consulta.

  • Elegimos Desde una base de datos > Desde una base de datos SQL Server.

  • Ingresamos la IP o nombre el servidor.

  • De manera opcional nos solicita la base de datos. Ingresamos AdventureWorksDW.

  • Aceptar.

Capturamos la IP del Servidor SQL.

Figura 3. Capturamos los datos de acceso al Servidor SQL.

Ahora se nos pedirán las credenciales del Servidor SQL:

  • Elegimos la sección Base de datos.
  • Ingresamos el usuario.
  • Ingresamos la contraseña.
  • Seleccionamos el nivel, ya sea solo la IP o la IP y base de datos. Elegimos la segunda opción.
  • Aceptar.
  • Elegimos la Tabla DimEmployee y presionamos el botón Editar.

Ingresamos las credenciales de acceso.

Figura 4. Ingresamos las credenciales de acceso.

Transformando los datos

Una vez dentro de Power Query, ventana que ya debemos estar familiarizados, haremos las siguientes transformaciones:

  • Elegimos desde la columna EmployeeKey hasta SalesTerritoryKey, damos clic derecho Quitar columnas.
  • Como la Tabla tiene muchas columnas, solo dejaremos las columnas FirstName, LastName, Title, HireDate, BirthDate, MaritalStatus, Gender, DepartmentName.
  • Le cambiamos el nombre a las columnas Dando clic derecho > Cambiar nombre.

Eliminamos columnas y cambiamos el nombre a las restantes.

Figura 5. Eliminamos columnas y cambiamos el nombre a las restantes.

Seguimos con las transformaciones:

  • Con la techa [Shift] elegimos las columnas Nombre y Apellido.
  • En la pestaña Transformar elegimos Combinar columnas.
  • En Separados elegimos Espacio y como nombre nuevo de la columna Nombre completo.
  • Ahora obtendremos la antigüedad en años del empleado.
  • Elegimos la columna Contratación. En la pestaña Transformar elegimos Fecha > Antigüedad.
  • Ahora damos clic derecho sobre la misma columna y elegimos Transformar > Total de años.
  • Finalmente damos clic derecho Cambiar tipo > Número entero.
  • Repetimos los 3 pasos anteriores, pero en la columna Fecha de nacimiento para obtener la edad del empleado.
  • En la columna Estado civil vemos los valores M = Married y S = Single. Vamos a reemplazarlos con M = Casado y S = Soltero.
  • Una vez elegida la columna Estado civil elegimos la pestaña Agregar columna > columna condicional.
  • Nuestra condición será Si es igual a M entonces Casado, Si es igual a S entonces Soltero, Sino Otro.

. Agregamos una Columna condicional para reemplazar los valores según el contenido de la columna.

Figura 6. Agregamos una Columna condicional para reemplazar los valores según el contenido de la columna.

  • Hacemos lo mismo con la columna Género, pero ahora definimos la condición como Si es igual a M es Masculino, Si es igual a F entonces Femenino.
  • Ahora eliminamos las columnas originales de Estado civil y Género.

Cargar datos a Excel

Ahora que nuestros datos están transformados nos vamos a la pestaña Archivo > Cerrar y cargar.

Insertamos una Tabla dinámica. En la columna Insertar elegimos Tabla dinámica. Nuestro cálculo será el número de hombres y mujeres por departamento.

Elegida la Tabla dinámica nos vamos a la pestaña Analizar > Gráfico dinámico. Elegimos un gráfico de barras y vemos el resultado.

Nuestro análisis final será una gráfica de Mujeres y hombres por departamento.

Figura 7. Nuestro análisis final será una gráfica de Mujeres y hombres por departamento.

Ver video Consulta desde una base de datos SQL Server

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Descarga el ejemplo

A continuación te enlisto los recursos que puedes descargar si quieres montar tu entorno de prueba:

Máquinas virtuales: VMware Workstation Player.

SQL Server gratuito: SQL Server Express.

Bases de datos de ejemplo: Base de datos de ejemplo AdventureWorks.

Power Query: Power Query para Excel 2013 y anteriores.

TipVer curso completo Aprendamos Power Query para Excel.

Ejecutar macros al seleccionar celdas en Excel

$
0
0

En este artículo veremos y entenderemos cómo escribir una macro para que cuando se seleccione una celda en Excel se ejecute una macro. Incluso veremos cómo adecuar el código de la macro para que podamos elegir celda no adyacentes, es decir, que no sean del mimos rango, sino de rangos diferentes.

TipEn resumen, usaremos el evento SelectionChange para detectar cuando se seleccione una celda, y con el método Insersect detectaremos si la celda elegida cruza con el rango que definimos en la macro.

Entendiendo el evento SelectionChange

Los eventos se ejecutan cuando sucede algo en Excel. Una hoja de cálculo tiene, entre otros eventos, el evento SelectionChange que ejecutará una macro al haber una cambio en una celda, por ejemplo cuando se selecciona una celda o se presiona [Enter] después de ingresar una fórmula o un valor en una celda.

Entendiendo el Método Intersect

El método que usaremos en nuestro código vba es el método Instersect, la cual nos ayudará a indicarnos si se da una intersección entre rangos, y para nuestro ejemplo si el rango elegido intersecta con el rango elegido.

Ver video Ejecutar macro al seleccionar celda en Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Mostrar mensaje al elegir una celda en Excel

En la Figura 1 tenemos 3 rangos donde deseamos que al elegir cualquier celda de ellos, se lance un mensaje.

Se mostrará un mensaje al elegir alguna celda de fondo azul.

Figura 1. Se mostrará un mensaje al elegir alguna celda de fondo azul.

Lo primero que debemos hacer es definir el lugar donde escribiremos la macro. El lugar de la macro será en un Módulo de hoja:

  • Damos clic derecho en la pestaña de la Hoja1 (o que aplique a tu archivo).
  • Se mostrará el Módulo de la Hoja1 para escribir la macro.
  • Desplegamos el Combo donde dice (General) y elegimos Worksheet.

Al elegir Worksheet se insertará automáticamente una macro donde se manda a llamar al evento SelectionChange. La macro es la siguiente:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

El evento SelectionChange detectará cambios en la Hoja1.

Figura 2. El evento SelectionChange detectará cambios en la Hoja1.

Ahora, en el evento SelectionChange le diremos a Excel que si elegimos alguna celda del rango “A10:A17” se ejecute un mensaje. Como vimos anteriormente, lo haremos con el método Intersect.

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim CeldaActual As String
    
    CeldaActual = ActiveCell.Address
    
    'Si se elige una celda entre el rango A10:A17
    If Not Intersect(Target, Range("A10:A17")) Is Nothing Then
    
        'Se muestra un mensaje indicando la celda elegida
        MsgBox "Has seleccionado la celda " & CeldaActual, vbInformation, "EXCELeINFO"
    
    End If

End Sub

Ahora bien si deseamos que los rangos sean no adyacentes, entonces modificaremos la siguiente línea definiendo varios rangos:

'Si se elige una celda entre el rango A10:A17, B10 y D10:D21
If Not Intersect(Target, Range("A10:A17, B10, D10:D21")) Is Nothing Then

Mostrar mensaje al elegir celda de Excel

Figura 3. Mostramos mensaje al elegir una celda de Excel.

Referencias

En todos estos artículos hemos usado el método Intersect.

Descargar el ejemplo

Descargar el ejemplo EXCELeINFO – Ejecutar macros al seleccionar celdas en Excel.zip

Insertar imágenes en Excel usando macros

$
0
0

Qué mejor manera de aprender macros que usando ejemplos prácticos.

En este artículo vamos a aprender a insertar imágenes en Excel usando macros. Las imágenes a insertar deben estar en la misma carpeta o ruta donde está el archivo que recibirá las imágenes.

El archivo donde se insertarán las imágenes

Tenemos un archivo de Excel donde en la columna A tenemos varios nombres. Para este ejemplo tendremos nombre de colores.

 Se insertarán las imágenes que coincidan con los nombres de la columna A

Figura 1. Se insertarán las imágenes que coincidan con los nombres de la columna A.

Ver video Insertar imágenes en Excel usando macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Ubicación de las imágenes

Ya vimos en la Figura 1 que los nombres de los archivos vienen en la columna A. Dichos nombres deben coincidir con los nombres de los archivos alojados en la misma carpeta donde se encuentra el archivo, pero deben estar en la carpeta llamada img.

Por ejemplo, si el archivo se encuentra en la carpeta C:\Users\scampos\Desktop\ las imágenes deben estar en la ruta C:\Users\scampos\Desktop\img, es decir en la carpeta img.

En esta ruta pondremos las imágenes a insertar.

Figura 2. En esta ruta pondremos las imágenes a insertar.

Entendiendo la macro

A continuación te pongo el código de la macro con los comentarios en cada línea para comprender qué es lo que hace:

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh

Sub InsertarImagenes()

'Declaramos variables
Dim RutaActual As String
Dim RangoImagen As Range
Dim shp As Object

'En caso de error...
On Error Resume Next

For Each shp In ActiveSheet.Shapes
        If shp.Name = "Picture 56" Then
        Else
        shp.Delete
End If
Next

'La variable RutaActual guardará la ruta completa donde está el archivo
RutaActual = ThisWorkbook.Path
        
'Desactivamos la actualización de pantalla
Application.ScreenUpdating = False
    
'Elegimos la celda B3
ActiveSheet.Range("B3").Select

'Recorremos cada fila mientras haya datos en la columna A
Do While ActiveCell.Offset(0, -1).Value <> Empty

    Set RangoImagen = ActiveCell.Offset(0, -1)
    
    'Insertamos la imagen que corresponda al nombre de la columna A
    ActiveSheet.Pictures.Insert (RutaActual & "\img\" & RangoImagen.Value & ".PNG")
    
    'Activamos la siguiente fila
    ActiveCell.Offset(1, 0).Select

Loop

Range("A2").Select
Application.ScreenUpdating = True

On Error GoTo 0

End Sub

La siguiente imagen muestra la macro en acción:

Insertar imágenes en Excel

Figura 3. Insertar imágenes en Excel.

Descarga el archivo de ejemplo

Descargar el ejemplo EXCELeINFO – Insertar imágenes en Excel usando macros.zip

Guía definitiva para el uso de calendarios en Excel

$
0
0

En este artículo pretendo darte una guía para usar controles de Calendario en Excel, ya que en muchas ocasiones necesitamos tener una manera sencilla de insertar fechas en una celda

Los controles de Calendario que veremos en este artículo van desde el Control Date and Time Picker que viene incluido en los controles de Excel, pasando con controles prediseñados usando macros hasta controles de calendario que podemos descargar desde de la Tiende de Office.

Controles de Calendario para usar en Excel

Los controles que veremos en este artículo son:

  • Control de calendario Date and Time Picker.
  • Control de calendario de Andrés Rojas Moncada, MVP de Excel.
  • Control de calendario de Ron de Bruin, MVP de Excel.
  • Control de calendario de Otto Javier González, MVP de Excel.
  • Calendarios de la tienda de Office.

Ver video Guía definitiva de calendarios en Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Control de calendario Date and Time Picker

Este control de calendario “era” por excelencia el control favorito para insertar fechas en Excel. Y nota que digo “era”, ya que este control dejó ser compatible con Excel al momento de ser usado sobre Windows de 64 bits, aunque todavía es posible usar este control sólo si la versión de Excel instalada es de 32 bits. Para usarse debemos registrar el control en Windows. Si usas Excel de 64 bits olvídate de poder usar este control.

TipCómo saber si tengo Excel de 32 o 64 bits.

Si tienes Excel de 32 bits y Windows de 64 bits, sigue estos pasos para instalar el control y lo puedas usar en Excel:

  • Descarga de aquí el control mscomct2.ocx. Confía en mi. La descarga es segura.
  • Descomprime el archivo lo pones sobre la ruta C:\Windows\SysWOW64.
  • Presiona el botón de Windows y escribre CMD.
  • Deberá aparecerte en los resultados la aplicación Símbolo de sistema. Da clic derecho y elige Ejecutar como administrador.

Ejecutamos el Símbolo de sistema como administrador

Figura 1. Ejecutamos el Símbolo de sistema como administrador.

Se abrirá una ventana de cmd. Deberás insertar el siguiente texto: regsvr32 “C:WindowsSysWOW64mscomct2.ocx”

Debemos registrar el control sobre Windows de 64 bits.

Figura 2. Debemos registrar el control sobre Windows de 64 bits.

Una vez registrado el control ahora estamos listos para usarlo en Excel. Sigue los siguientes pasos:

  • Presiona la combinación de teclas [Alt] + [F11].
  • En el editor de macros vba elige el menú Insertar > Userform.
  • En el cuadro de herramientas da clic derecho y elige Controles adicionales.
  • Marca la opción Microsoft Date and Time Picker Control 6.0 (SP6).
  • Inserta el control DTPicker.
  • Ahora insertar un botón.

Dibujamos el formulario con el control de calendario.

Figura 3. Dibujamos el formulario con el control de calendario.

Damos doble clic en el botón e insertamos la siguiente macro para insertar la fecha elegida en la celda elegida:

Private Sub CommandButton1_Click()

'Se inserterá la fecha en la celda elegida.
ActiveCell.Value = Me.DTPicker1.Value

Unload Me

End Sub

A la hoja donde mandaremos llamar el calendario la renombraremos “Control DTP”. Sobre la hoja damos clic derecho y elegimos Ver código. Insertamos la siguiente macro para mostrar el formulario al elegir la celda B3:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Si la celda elegida es B3, se mostrará el formulario.
If Target.AddressLocal = "$B$3" Then

    frmDTP.Show

End If

End Sub

Al elegir la celda B3 se lanzará el formulario donde elegiremos una fecha a insertar.

Figura 4. Al elegir la celda B3 se lanzará el formulario donde elegiremos una fecha a insertar.

Control de calendario de Andrés Rojas Moncada

Como vimos anteriormente, para usar el control de calendario de Office lo debemos instalar, pero si tenemos Excel de 64 bits entonces no hay manera de poder usarlo. Ante este inconveniente, mi amigo Andrés Rojas Moncada del canal Excel hecho fácil desarrolló un genial control de calendario que fácilmente podemos adecuar a nuestros desarrollos, sin necesidad e instalar nada.

  • En este video Andrés nos explica el funcionamiento de su calendario.
  • Descarga el control de calendario desde esta página: http://www.excelhechofacil.com/p/calendario.html.
  • Abrimos el archivo cCalendario.xlsm.
  • Ejecutar el editor de macros vba con [Alt] + [F11].
  • Ahora vamos a mover el módulo llamado ModuloCalendario y el formulario llamado frmCalendario a nuestro archivo donde queremos utilizar el calendario de Andrés.

. Movemos los archivos frmCalendario y ModuloCalendario de un proyecto a otro.

Figura 5. Movemos los archivos frmCalendario y ModuloCalendario de un proyecto a otro.

Ahora podemos cerrar el archivo cCalendario.xlsm. Los elementos que hemos movido a nuestro archivo debemos de hacerles unas pocas modificaciones para que podamos mandar llamar al calendario.

  • Damos clic derecho sobre la hoja donde queremos mandar llamar el calendario y elegimos Ver código.
  • Insertamos la siguiente macro para lanzar el calendario al elegir la celda B3:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Lanzar control de calendario al elegir la celda B3
If Target.Address = "$B$3" Then
    Load frmCalendario
    frmCalendario.Show
End If

End Sub
  • Ahora nos vamos al editor de macros vba y damos doble clic sobre el Módulo ModuloCalendario.
  • Ubica una macro que se llama RecibeLaFecha y reemplaza la macro con el siguiente código:
Public Sub RecibeLaFecha(Dia As Long, Mes As Long, Ano As Long)
    Dim FechaRecibida As Date
    FechaRecibida = VBA.DateSerial((VBA.CInt(Ano)), (VBA.CInt(Mes)), (VBA.CInt(Dia)))
    
    'DIRECCIONE LA FECHA AL CONTROL O CELDA QUE REQUIERA
    ActiveCell.Value = FechaRecibida
End Sub

Con los cambios anteriores lograremos que al seleccionar la celda B3 se lance el formulario. Para insertar la fecha damos doble clic sobre el día que queremos insertar.

Damos doble clic sobre la fecha deseada.

Figura 6. Damos doble clic sobre la fecha deseada.

Control de calendario de Ron de Bruin

En el año 2016 Ron de Bruin decidió desarrollar también un control de calendario el cual pueda instalarse como un complemento de Excel y nos pueda servir para elegir e insertar fechas, pero el plus de este control es que viene con la opción de verlo en los idiomas Inglés, Alemán, Español, Francés, Ruso y Danés, entre otras configuraciones que hacen de este complemento una excelente herramienta para el uso de calendarios en Excel.

Agradecimiento de Ron a los que le ayudamos con la traducción del add-in

Figura 7. Agradecimiento de Ron a los que le ayudamos con la traducción del add-in.

  • Descarga el calendario de la página: http://www.rondebruin.nl/win/addins/datepicker.htm.
  • Se descargará el archivo WinDatePicker.xlam.
  • El archivo es un complemento de Excel, por lo que debemos instalarlo en nuestra PC.
  • Pon el archivo en una ubicación de tu confianza y sigue este video donde aprenderás paso a paso cómo instalar complementos en Excel: https://www.youtube.com/watch?v=gyRLPbLrMkE.
  • Una vez instalado el complemento podrás ver el calendario dando clic derecho sobre una celda y elegir la opción Date Picker.
  • Ahora bien, si lo que deseamos es que se muestre el calendario al elegir una celda de Excel debemos damos clic derecho sobre la etiqueta de la hoja y elegimos Ver código.
  • Insertamos la siguiente macro:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim TestWkbk As Workbook
Dim obj As Object

'Se lanzará el calendario al elegir la celda B3
If Target.Address = "$B$3" Then

    If Val(Application.Version) >= 12 Then
        Set TestWkbk = Nothing
        On Error Resume Next
        Set TestWkbk = Workbooks("WinDatePicker.xlam")
        On Error GoTo 0
        If TestWkbk Is Nothing Then
            MsgBox "El add-in Date Picker no está instalado o abierto."
        Else
            Application.Run "'" & TestWkbk.Name & "'!OpenDatePicker", obj
        End If
    End If

End If

End Sub

En este calendario tendrás interesantes opciones de configuración.

Figura 8. En este calendario tendrás interesantes opciones de configuración.

Calendario de Otto Javier González

Otro de mis estimados amigos es Otto González, quien en su canal Excel y más nos ha venido a mover el piso con una serie de video tutoriales donde nos enseña que desde Visual Studio y usando Visual Basic .NET podemos manipular elementos de Excel. En uno de esos videos nos muestra cómo hacer complementos para Excel y nos regala uno de ellos donde podemos insertar un calendario muy parecido al control Date and Time Picker. Sigamos los siguientes pasos:

  • Mira el video donde nos muestra cómo desarrolló Excel add-in tools: https://www.youtube.com/watch?v=–ub-U282V0&t=3s.
  • Descarga desde aquí el instalador: http://bit.ly/2jk5XIZ.
  • Se descargará un archivo .ISO el cual debemos descomprimir.
  • Una vez que lo hayamos descomprimido debes ejecutar el archivo setup.exe, pero procura cerrar Excel antes de instarlo.
  • Al instalarlo puede que te solicite actualizar algunos elementos en tu PC, como la versión de .NET framework.
  • Al instalar el complemento abres de nuevo Excel y te diriges a la pestaña Inicio.
  • Al final de los elementos de la pestaña Inicio verá uno que dice Control Calendario.
  • Al elegir la opción se insertará un panel a la derecha donde veremos el calendario y al elegir algún día, la fecha se insertará en la celda elegida.
  • También podemos desanclar el calendario moviéndolo a la posición que más nos convenga.

image

Figura 10. Tú decides si dejas el calendario en el panel o lo mueves a otra ubicación.

Calendarios de la tienda de Office

Una de las tendencias de Office es el desarrollar complementos que sean compatibles tanto con Office de escritorio como en Office online, es por eso que existe la tienda de Office de donde podremos descargar complementos tanto gratuitos como de pago. Sigue los siguientes pasos para descargar calendarios para Excel:

  • Ve a la pestaña Insertar y elige Tienda.
  • En la sección tienda nos dirigimos al buscador y escribe calendar, seguido de Enter.
  • Verás algunos complementos que podemos instalar en Excel.
  • Elegimos el complemento XLTools.net Calendar y presiona el botón Agregar.
  • Para insertar el calendario en la hoja de Excel nos dirigimos de nuevo a la pestaña Insertar > Mis complementos y veremos la lista de los complementos de Office instalados.

Este calendario queda insertado en la hoja y podrás poner en la ubicación que más convenga.

Figura 9. Este calendario queda insertado en la hoja y podrás poner en la ubicación que más convenga.

Descarga el archivo de ejemplo

Descargar el ejemplo Calendarios en Excel – EXCELeINFO.zip

Dashboards en Excel, Tablas dinámicas y gráficos

$
0
0

En este articulo y video veremos cómo hacer un Dashboard en Excel, o támbién llamado Panel de Control o Cuadro de mando. Aunque realmente lo de menos es el nombre. Lo importante es que en un Dashboard puedes plasmar indicadores de cualquier información que requieras. Para analizar estos indicadores usaremos Tablas dinámicas, Segmentación de datos y Gráficos dinámicos.

Vistazo general de nuestro dashboard

En la Figura 1 vemos el dashboard terminado, en el cual vemos algunos elementos interesantes que podrás utilizar para armar los tuyos. Lo importante de los dashboards es conocer la información con la cual vas a trabajar y tener imaginación.

Dashboard en Excel

Figura 1. Dashboard en Excel.

En base a buenas prácticas que los expertos recomiendan, puedo decirte que para hacer un dashboard bien diseñado y que además pueda ser modificado a futuro, lo primero que debes hacer es tener 3 horas en tu archivo:

  • Hoja Datos: En esta hoja tendrás tus datos. Recuerda entre más columnas tenga tu información, mejor análisis podrás hacer.
  • Hoja Tablas dinámicas: En esta hoja insertaras las Tablas dinámicas que serán la base para el diseño de tu dashboard.
  • Hoja Dashboard: Aquí irá el diseño principal del dashboard.

Y como vemos en la Figura 1, tenemos principalmente 3 elementos, los cuales podemos combinar a nuestro gusto:

  • Segmentación de datos: También llamados Slices. Nos ayudarán como filtros principales para el resto de los elementos.
  • Fórmulas y funciones: Extraeremos información desde Tablás dinámicas usando fórmulas.
  • Gráficos dinámicos: Los gráficos son la herramienta favorita para analizar información.

Ver video Dashboards en Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Pasos generales para armar un Dashboard en Excel

Para armar un dashboard, principalmente debes seguir los siguientes pasos:

  • Insertar varias Tablas dinámicas, obteniendo diferentes indicadores. Dejarlas en la hoja Tablas dinámicas.
  • Por cada Tablas dinámica, insertar un gráfico dinámico. Moverlos a la hoja Dashboard.
  • Darles el diseño deseado.

Dashboards en Excel

Figura 2. Elementos de un dashboard.

Manos a la obra

Top 5 de vendedores, Ventas y Gráfica

Sigamos los siguientes pasos para armar este indicador:

1. Estando en la hoja Datos insertamos una Tabla dinámica. Nos vamos a la Pestaña Insertar > Tabla dinámica.

2. La Insertamos en la hoja Tablas dinámicas.

3. La columna Empleados la movemos a Filas y la columna Ventas a Valores.

Insertamos una Tabla dinámica para obtener los mejores vendedores

Figura 3. Insertamos una Tabla dinámica para obtener los mejores vendedores.

4. En la hoja Dashboard ponemos los encabezados Top 5 de vendedores, Ventas y Gráfica en el rango E6:G6.

5. Para traer el nombre de los vendedores desde la Tabla dinámica, sólo ingresamos la fórmula en la celda E7: =’Tablas dinámicas’!C2

6. Arrastramos la fórmula hasta la celda E11.

Devolvemos el nombre de los 5 mejores vendedores

Figura 4. Devolvemos el nombre de los 5 mejores vendedores.

7. En la celda F7 ingresamos una fórmula para devolver la ventas de los vendedores, y la modificamos para que haga referencia a los nombres de la celda E7: =IMPORTARDATOSDINAMICOS(“Ventas”,’Tablas dinámicas’!$C$1,”Empleado”,E7)

Devolvemos las ventas

Figura 5. Devolvemos las ventas.

8. Ahora para graficas las ventas, vamos a usar la siguiente fórmula en la celda G7: =REPETIR(“|”,F7/MAX($F$7:$F$11)*100)

9. Arrastramos hasta la celda G11.

10. Damos formato a las celdas con tipo de Fuente Playbill.

Graficamos las ventas con fórmulas y dando formato a la celda

Figura 6. Graficamos las ventas con fórmulas y dando formato a la celda.

Gráfica de Ventas por Ciudad

Para graficas las ventas por Ciudad sigamos los siguientes pasos:

1. Seleccionamos la hoja Datos e Insertamos una Tabla dinámica. Pestaña Insertar > Tabla dinámica.

2. La Tablas dinámica la insertamos en la hoja Tablas dinámicas.

3. En etiquetas de fila movemos la columna Estado o Provincia y en Valores movemos Ventas.

4. Elegimos cualquier celda de la Tabla creada y nos vamos a la pestaña Analizar > Gráfico dinámico.

5. Elegimos el tipo de Barra.

Insertamos un gráfico dinámico en la base a la Tabla dinámica

Figura 7. Insertamos un gráfico dinámico en la base a la Tabla dinámica.

6. Seleccionamos el gráfico dinámico y lo cortamso.

7. Seleccionamos la hoja Dashboard y pegamos el gráfico.

8. Una vez pegado el gráfico lo seleccionamos y damos el formato deseado en la pestaña Diseño.

Pegamos el gráfico en la hoja Dashaboar y le damos formato

Figura 8. Pegamos el gráfico en la hoja Dashaboard y le damos formato.

Hasta este momento hemos creado una tabla con el top 5 y una gráfica. Para no hacer más grande el artículo repitiendo los pasos, haz otra tabla para el top 5 de productos y otra gráfica de Ventas por compañía. Siguiendo los pasos anteriores.

Segmentación de datos o Slices

En la hoja Tablas dinámicas hemos insertado algunas para hacer nuestros análisis, y los indicadores que medimos nos funcionan bien, pero qué sucede si deseamos que estos indicadores se ajusten a un filtro global, por ejemplo, filtros por año y mes. Imaginemos que deseamos que todos los indicadores muestren sus valores por determinado año y mes. Para lo anterior usaremos la Segmentación de datos. Sigamos los siguientes pasos:

1. En la hoja Dashboard elijamos uno de los gráficos.

2. Nos vamos a la pestaña Analizar > Insertar segmentación de datos.

3. Se mostrarán los campos de la tabla origen donde elegiremos el campo Año y Mes.

Elegimos Año y Mes para que sean nuestros filtros globales

Figura 9. Elegimos Año y Mes para que sean nuestros filtros globales.

4. Se insertarán dos Slices, uno mostrará los años y otro los meses.

5. Ahora debemos vincular esos dos Slices a todas las Tablas dinámicas, para que al elegir un elemento de un Slice, todas las gráficas se adecúen al filtro seleccionado.

6. Seleccionamos el Slice de Año y nos vamos a la pestaña Opciones > Conexiones de informe.

7. Marcamos las Tablas dinámicas que deseemos afectar.

Marcamos las Tabla dinámicas que deseemos afectar.

Figura 10. Marcamos las Tabla dinámicas que deseemos afectar.

Descarga el archivo de ejemplo

Descargar el ejemplo Dashboards en Excel – EXCELEINFO.rar


BUSCARV en varias hojas de Excel. Regalo: UDF BuscarvMix

$
0
0

Como todos saben, la función BUSCARV es mis funciones favoritas. Todo el tiempo la uso. En estos días he tenido la necesidad de tener que buscar valores en varias hojas de Excel, y cada vez son más hojas en las que tengo buscar valores. Dicho lo anterior, he tenido que anidar varias funciones BUSCARV para buscar en varias hojas.

BUSCARV anidado con función SI.ND

Como lo comenté en el primer párrafo, para buscar valores he tenido que anidar varias veces la función BUSCARV, combinándola con la función SI.ND. Recordemos que la función SI.ND nos detecta cuando una fórmula devuelve el valor #N/A, en otras palabras, queda perfecta para la función BUSCARV. Si bien la función SI.ERROR también detecta el error #N/A, también detecta el resto de errores que puede devolver una fórmula en Excel.

BUSCARV en varias hojas de Excel

Figura 1. BUSCARV en varias hojas de Excel.

En la Figura 1 vemos que debemos hacer la búsqueda en 5 hojas de Excel que contienen países por continente y sus respectivas capitales. En la hoja BUSCARV deberemos introducir la fórmula donde anidaremos 5 funciones, obvio de BUSCARV.

Ver el video BUSCARV en varias hojas de Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Primero, probando con dos BUSCARV y un SI.ND

Para entender cómo podemos combinar la función SI.ND con BUSCARV haremos una primera prueba donde buscaremos sólo en dos hojas. La fórmula quedaría así:

=SI.ND(BUSCARV(B9,AMÉRICA!B1:C36,2,0),BUSCARV(B9,EUROPA!B1:C47,2,0))

Para describir la fórmula anterior podemos decir que “Si la primer función BUSCARV devuelve el valor #N/A entonces hacemos otra función BUSCARV para buscar en otra hoja”.

BUSCARV combinado con SI.ND

Figura 2. BUSCARV combinado con SI.ND.

Buscar valores en 5 hojas

En la Figura 2 vimos cómo anidar dos BUSCARV y combinando la función SI.ND, Ahora les mostraré la fórmula para hacer la búsqueda en las 5 hojas que tenemos. Al igual que el otro ejemplo, con la función SI.ND le estaremos diciendo que mientras el resultado sea #N/A siga aplicando el BUSCARV hasta la última fila.

=SI.ND(BUSCARV(B9,AMÉRICA!$B$1:$C$36,2,0),SI.ND(BUSCARV(B9,EUROPA!$B$1:$C$47,2,0),SI.ND(BUSCARV(B9,ASIA!$B$1:$C$48,2,0),SI.ND(BUSCARV(B9,AFRICA!$B$1:$C$55,2,0),BUSCARV(B9,OCEANIA!$B$1:$C$16,2,0)))))

Como vemos, entre más hojas sean donde buscaremos, más larga se hace la fórmula.

Anidando funciones BUSCARV.

Figura 3. Anidando funciones BUSCARV.

¿Muchas hojas donde buscar? Crea una UDF en Excel.

Ahora bien, qué sucede cuanto tenemos que buscar en una cantidad considerable de hojas? Tal vez lo más viable sea auxiliarnos de las macros para hacer la labor más rápida y automatizada. Para lo anterior, desarrollé una función UDF, Función Definida por el Usuario, por sus siglas en inglés, llamada BuscarvMix. Dicha función tendrá los siguientes parámetros:

valor_buscado: Es el valor que se buscará en todas las hojas hacia la derecha.

primer_columna: Es la columna donde se encuentra el valor buscado.

devolver: Es la columna donde estará el valor que deseamos devolver como resultado de la función.

Nota: Es importante que todas las hojas tengan datos con la misma estructura, por lo menos desde la columna primer_columna hasta la columna devolver.

Parámetros de la UDF BuscarvMix.

Figura 4. Parámetros de la UDF BuscarvMix.

Código vba de la función UDF

Para usar la función deber abrir el editor de vba con la combinación de teclas [Ctrl] + [F11] y en un módulo normal pegar el siguiente código vba.

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh

Function BuscarvMix(valor_buscado As Range, PrimerColumna As Integer, Devolver As Integer)
'Declaramos variables
Dim i As Integer
Dim Alto As Integer
Dim Rango
Dim Valor As String
Dim Valor2 As String

'Definimos la aplicación como Volatile, es decir, que se calcule automáticamente
Application.Volatile
On Error Resume Next
'Recorremos cada una de las hojas del libro
For i = 2 To ActiveWorkbook.Sheets.Count
    'Definimos el alto del rango de cada una de las hojas al número de filas con datos.
    Alto = Application.WorksheetFunction.CountA(Sheets(i).Columns(PrimerColumna).EntireColumn)
    'Definimos cada matriz de búsqueda de cada una de las hojas
    Rango = Range(Cells(1, PrimerColumna), Cells(Alto, PrimerColumna + Devolver - 1)).Address
    'A la variable Valor le asignamos lo que devuelva la función BUSCARV (VLookup)
    Valor = Application.WorksheetFunction.VLookup(valor_buscado.Value, Sheets(i).Range(Rango), Devolver, 0)
    'Si la función BUSCARV devuelve un valor, entonces se detiene el ciclo For
    If Valor <> Empty Then Exit For
Next i
On Error GoTo 0
'Si el BUSCARV devuelve un valor vació, entonces mostramos el valor #N/A
If Valor = Empty Then
    BuscarvMix = VBA.CVErr(xlErrNA)
Else
    'Si BUSCARV devuelve un valor, lo asignamos como valor final a la función BuscarvMix
    BuscarvMix = Valor
End If

End Function

Descarga el archivo de ejemplo

Fe de erratas: El archivo no contenía la sentencia que omite los errores para seguir buscando en el resto de las hojas.

Descargar el ejemplo BUSCARV en varias hojas – EXCELeINFO.rar

Seguro te puede interesar

El poder de BUSCARV.

Aprendamos UDF’s en Excel.

Buscar valores hacia la izquierda en Excel. Aprende BUSCARV, COINCIDIR e INDICE

$
0
0

En este artículo y video veremos cómo hacer una búsqueda de valores hacia la izquierda. Comúnmente usamos la función BUSCARV para buscar valores y devolver resultados, pero la búsqueda se hace hacia la derecha. Pero ¿qué pasa cuando deseamos devolver valores que se encuentran a la izquierda del valor buscado?

Ver video buscar valores hacia la izquierda. BUSCARV, COINCIDIR e INDICE

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Uso de BUSCARV (buscar hacia la derecha)

Usamos BUSCARV cuando los valores que deseamos obtener se encuentran hacia la derecha del valor buscado. En la Figura 1 vemos que tenemos un rango donde nuestro valor buscado es el ID y los valores que deseamos devolver son Compañía, Nombre, Apellidos y Cargo.

Usaremos el ID como valor buscado.

Figura 1. Usaremos el ID como valor buscado.

Ahora bien, en base al ID vamos a devolver el valor de Nombre, usaremos la siguiente fórmula, misma que la puedes ver en Figura 2.

=BUSCARV(C8,A12:E22,3,0)

El ID 1 se buscará en el rango A12:E22 y devolveremos el valor de la tercera columna.

Figura 2. El ID 1 se buscará en el rango A12:E22 y devolveremos el valor de la tercera columna.

Uso de COINCIDIR e INDICE

La combinación de estas dos funciones nos van a permitir buscar valores y devolver resultados hacia la izquierda de donde encontramos el valor buscado.

En la Figura 3 vemos que ahora el ID se encuentra al final de nuestro rango de valores, por lo que para BUSCARV debemos mover los valores de la columna hacia la izquierda, pero como eso no siempre es viable, usaremos las funciones COINCIDIR e INDICE para buscar hacia la izquierda.

El ID ahora lo vemos a la derecha de nuestros datos.

Figura 3. El ID ahora lo vemos a la derecha de nuestros datos.

Bien, primero usaremos la función COINCIDIR para devolver la posición en la que se encuentra el ID que buscaremos. Usamos la siguiente fórmula, mis que la vemos en la Figura 4.

=COINCIDIR(C9,E14:E24,0)

Con COINCIDIR buscamos la posición del ID 44, que será la posición 5.

Figura 4. Con COINCIDIR buscamos la posición del ID 44, que será la posición 5.

Ahora con la función INDICE devolveremos un valor en base a la intersección de una fila y una columna en un rango.

Nota: El número de fila lo obtuvimos con la función COINCIDIR, que fue la fila 5. La columna de la intersección será la 2, la columna Nombre.

En la siguiente fórmula usaremos la función INDICE donde la intersección fila / columna será: fila 5, que devolvimos con la función COINCIDIR y fila 2, que será la 2, de Nombres.

Devolver valores hacia la izquierda usando las funciones COINCIDIR e INDICE.

Figura 5. Devolver valores hacia la izquierda usando las funciones COINCIDIR e INDICE.

Al final, la fórmula queda así:

=INDICE(A14:E24,COINCIDIR(C9,E14:E24),2)

Seguro te interesará

El poder de la función BUSCARV en Excel

Descargar el archivo de ejemplo

Descargar el ejemplo Buscar valores hacia la izquierda, Aprende BUSCARV, COINCIDIR e INDICE – EXCELeINFO.rar

Hacer que BUSCARV calcule más rápido en Excel con truco de doble BUSCARV

$
0
0

En mi trabajo diario uso la función BUSCARV casi de manera obligatoria. Esta función siempre me ha sacado de apuros en muchas situaciones. El problema surge cuando tengo que buscar valores dentro de rangos de miles de filas o incluso dentro de cientos de miles de filas. Si te has enfrentado a esta situación te habrás dado cuenta que en ocasiones el cálculo de la función BUSCARV puede tardar incluso minutos.

Por qué tarda en calcular BUSCARV en miles de filas (usando coincidencia exacta)

Si un cálculo de la función BUSCARV tanta mucho tiempo, la razón se encuentra en el parámetro Ordenado. En la mayoría de las ocasiones usamos el 0 o FALSO en el parámetro Ordenado, y esto es porque así no importa si nuestros datos están desordenados, siempre nos devolverá el valor correcto, pero cuando usamos el parámetro 0 provocamos que la búsqueda sea fila por fila, y cuando tenemos miles o cientos de miles de filas, un cálculo puede demorar mucho tiempo.

Usando BUSCARV con datos desordenados:

=BUSCARV(valor, matriz, columna, FALSO)

En mis pruebas, una búsqueda de 10,000 registros sobre una matriz de 100,000 registros demoró 5.21 segundos.

Usando BUSCARV con coincidencia exacta

Figura 1. Usando BUSCARV con coincidencia exacta.

Ver video Hacer que BUSCAR calcule más rápido

Optimizar BUSCARV usando búsqueda binaria (coincidencia aproximada)

Cuando nos referimos a búsqueda binaria, queremos indicar que el parámetro Ordenado deber ser 1 o VERDADERO, así la búsqueda se hace en datos ordenados y el cálculo es mucho, pero mucho más rápido.

El problema de usando coincidencia aproximada

Si bien la búsqueda binaria o de coincidencia aproximada es mucho más rápida que la coincidencia exacta, nos topamos con una situación al momento de usarla. BUSCARV con coincidencia aproximada busca al centro de los datos y devuelve el valor buscado. Hasta aquí todo va bien, pero cuando el valor no se encuentra en la tabla o rango, devuelve el valor más cercano, el cual no es el valor que deseamos obtener (a menos que tengamos un ejemplo como éste).

El truco para optimizar BUSCARV usando doble BUSCARV

Aquí lo que deseamos es que BUSCARV se comporte como si usáramos coincidencia exacta, pero que el cálculo demore mucho menos. Para esto, usaremos un truco que consiste en usar dos funciones BUSCARV, además de usar ambas con coincidencia aproximada.

Nota: Para usar el truco de los dos BUSCARV los datos de matriz_buscar_en deben estar ordenados de la A a la Z.

Antes de mostrarte la fórmula te voy a explicar cómo funciona: SI el valor buscado se encuentra en la matriz a buscar (primer BUSCARV), con eso nos aseguramos que el valor existe, y si existe entonces buscaremos el valor en la matriz y devolveremos el valor de la columna indicada (segundo BUSCARV), al final, si el valor no se encuentra, entonces devolvemos el texto “No existe”. A continuación la fórmula:

=SI(BUSCARV(valor,matriz,columna,VERDADERO)=valor,BUSCARV(valor,matriz,columna,VERDADERO),”No existe”)

En mis pruebas, una búsqueda de 50,000 filas sobre una matriz de 100,000 filas, sólo demoró 0.9 segundos.

Usando truco de los 2 BUSCARV, optimizando el cálculo en 100x.

Figura 2. Usando truco de los 2 BUSCARV, optimizando el cálculo en 100x.

Conclusión

En situaciones normales, usando BUSCARV con coincidencia exacta nos funciona bien, pero cuando tenemos miles de filas a calcular y no deseamos perder tiempo esperando a que termine de calcular, entonces usamos el truco del doble BUSCARV.

Descarga el archivo de ejemplo

Descargar el ejemplo Buscarv Optimizado con truco de 2 BUSCARV.rar

Más ejemplos de BUSCARV

Buscar valores hacia la izquierda en Excel. Aprende BUSCARV, COINCIDIR e INDICE

BUSCARV en varias hojas de Excel. Regalo: UDF BuscarvMix

Uso de BUSCARV con coincidencia aproximada en Excel

Rango de búsqueda dinámico para BUSCARV usando INDIRECTO en Excel

Asignar macros a teclas o combinación de teclas en Excel usando OnKey

$
0
0

Hace un par de semanas, un suscriptor de mi canal en Youtube me hizo la pregunta de cómo ejecutar una macro presionando la tecla Suprimir de nuestro teclado. Es por eso que me decidí a escribir este artículo y a grabar el video.

Ejemplos

Te mostraré 3 ejemplos en dónde usaremos el método OnKey para detectar cuando presionamos teclas en Excel:

Asignar macro a una tecla.

Asignar macro a una combinación de teclas.

Deshabilitar teclas y combinaciones de teclas.

Ver video Asignar macros a teclas o combinaciones de teclas

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Códigos para utilizar el método OnKey

Es importante identificar el código de las teclas que usaremos con el método OnKey

TECLA CÓDIGO
BACKSPACE {BACKSPACE} or {BS}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
CLEAR {CLEAR}
DELETE or DEL {DELETE} or {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER (numeric keypad) {ENTER}
ENTER ~ (tilde)
ESC { ESCAPE} or {ESC}
HELP {HELP}
HOME {HOME}
INS {INSERT}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
RETURN {RETURN}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 through F15 {F1} through {F15

Así como el código de las teclas que usaremos para combinar con otras teclas.

Tecla para combinar

CÓDIGO

SHIFT

+ (signo de más)

CTRL

^ (acento circunflejo)

ALT

% (signo de porcentaje)

Macro de prueba Pedir confirmación para borrar contenido de celda

Tenemos una macro de prueba que nos pide confirmación para borrar el contenido de una celda o un rango de celdas. Dicha macro la asignaremos al momento de presionar la tecla Suprimir. A continuación la macro:

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh

Sub Eliminar()

Dim Confirmacion As String

'Si la selección es un Rango
If TypeName(Selection) = "Range" Then
    Confirmacion = MsgBox("Borrar contenido?", vbYesNo + vbQuestion)
    If Confirmacion = vbYes Then
    Selection.ClearContents
    Else
    End If
Else
'Si la selección no es un rango elimina lo seleccionado
Selection.Delete
End If

End Sub

Eventos Open y BeforeClose

Un evento es lanzado cuando sucede alguna acción en Excel. El evento Open se lanzará al momento de abrir el archivo y el evento BeforeClose se lanzará al cerrar el archivo. Abrimos el IDE de Visual Basic para aplicaciones con [Ctrl] + [F11] para mostrar ambos eventos.

Para mostrar el evento Open:

  • Damos doble clic en el objeto ThisWorkbook.
  • Damos clic en el combo que dice General.
  • Elegimos Workbook.

Mostramos el evento Workbook_Open en Excel.

Figura 1. Mostramos el evento Workbook_Open en Excel.

Para mostrar el evento BeforeClose damos clic en el Combo de la derecha.

Mostraremos el evento BeforeClose en Excel.

Figura 2. Mostraremos el evento BeforeClose en Excel.

Ejemplo 1. Asignar macro a la tecla Suprimir.

El siguiente código vba irá dentro del evento Open, y será para asignar la macro Eliminar cuando se presione la tecla Suprimir.

Application.OnKey "{DEL}", "Eliminar"

Y el siguiente código será para devolver el comportamiento normal a la tecla Suprimir, es decir, que no lance la macro al momento de presionarla.

Application.OnKey "{DEL}"

Ahora, al momento de presionar la tecla Suprimir se lanzará la macro Eliminar. Hacemos una prueba con la aplicación Teclado en pantalla.

. Al presionar Supr, nos pide confirmación para borrar el contenido.

Figura 3. Al presionar Supr, nos pide confirmación para borrar el contenido.

Asignar macros a combinaciones de teclas

Ejemplo 2. Asignar macro a la combinación [Shift] + [Tecla derecha]

Application.OnKey "+{RIGHT}", "ShiftDerecha"

Ejemplo 3. Asignar macro a la combinación [Control] + [Tecla derecha]

Application.OnKey "^{RIGHT}", "ControlDerecha"

Ejemplo 4. Asignar macro a la combinación [Alt] + [Tecla derecha]

Application.OnKey "%{RIGHT}", "AltDerecha"

Ejemplo 5. Asignar macro a la combinación [Control] + [Shift] + [Tecla derecha]

Application.OnKey "^+{RIGHT}", "ControlShiftDerecha"

Ejemplo 6. Deshabilitar la combinación [Control] + [c] (copiar).

Application.OnKey "^{c}", ""

Restablecer teclas

Las siguientes macros ayudarán a que las combinaciones que asignamos en las macros anteriores regresen a su comportamiento normal.

Application.OnKey "{DEL}"
Application.OnKey "+{RIGHT}"
Application.OnKey "^{RIGHT}"
Application.OnKey "%{RIGHT}"
Application.OnKey "^+{RIGHT}"
Application.OnKey "^{c}"

Eventos Activate y Deactivate

Y qué sucede cuando tenemos varios archivos abiertos pero queremos que estas asignaciones de macros sólo estén disponibles en determinado archivo? Ahí es donde debemos usar los eventos Activate y Deactive para que se lancen al momento de estar en un archivo y se restablezcan las teclas al momento de cambiarse a otro.

Private Sub Workbook_Activate()
'Al momento de activar el archivo
AsignarMacros

End Sub

Private Sub Workbook_Deactivate()
'Al momento de cambiarse a otro archivo
RestablecerTeclas

End Sub

Descargar el archivo de ejemplo

Descargar el ejemplo Asignar macros a teclas o combinación de teclas en Excel usando OnKey.rar

Recibe notificaciones en tu celular y correo electrónico de EXCELeINFO

$
0
0

Como sabes, en EXCELeINFO estamos comprometidos en desarrollar contenido, ejemplos, tips y tutoriales de Excel para llevarte a otro nivel y que lo aprendido en lo publicado puedas aplicarlo a tus labores diarias y podamos llevarte al éxito. Además, te recordamos que nuestro contenido es publicado en:

Recibe notificaciones en tu celular y correo electrónico

En tu correo electrónico

Si deseas recibir un correo electrónico cada que publiquemos nuevo material, por favor da clic: Quiero recibir correos de notificaciones.

Nota: Cuando ingreses tu correo, revisa tu bandeja de correo donde recibirás un correo de confirmación. Si no lo recibes, ve a tu bandeja de Correo no deseado y validar si ahí lo recibiste.

Escribe tu correo y valida el texto de abajo.

Figura 1. Escribe tu correo y valida el texto de abajo.

En tu celular

En días recientes hemos creado un canal de notificaciones en la aplicación de mensajería Telegram, el cual nos ayudará a tener un medio más para que tu celular te avise cada que publicamos un nuevo artículo o video.

Qué es un canal? (tomado de telegram.org)

Los canales son una herramienta para difundir mensajes públicos a grandes audiencias. De hecho, los canales tienen un número ilimitado de miembros. Cuando publicas en un canal, el mensaje es firmado con el nombre del canal y no el tuyo. Puedes nombrar administradores adicionales para que te ayuden a dirigir el canal. A diferencia de los grupos, las publicaciones eliminadas desaparecerán para todos, no sólo para ti. Los nuevos integrantes pueden ver todo el historial de mensajes cuando se unen.

Nota importante: Un canal de Telegram no es un chat personal, ni un bot, ni tampoco un grupo. En realidad casi podrían compararse con un perfil de Twitter, o incluso con un blog. Es una plataforma que permite enviar mensajes a un gran número de personas, pero a diferencia de las listas de difusión de WhatsApp, dichas personas no necesitan tener tu número en sus contactos.

Para recibir notificaciones en Telegram: Da clic aquí https://t.me/EXCELeINFO

Al dar clic en el enlace anterior se abrirá al canal de EXCELeINFO en Telegram. Sólo da clic en Unirse.

Clic para unirte a EXCELeINFO en Telegram.

Figura 2. Clic para unirte a EXCELeINFO en Telegram.

Formulario de captura en Excel que guarda datos en otro archivo de Excel

$
0
0

En un artículo anterior vimos cómo tener un formulario de captura que guarda datos en otra hoja de Excel, que por cierto el video asociado a ese tutorial tiene hasta la fecha 56 mil vistas en Youtube, lo cual lo hace un tutorial que le ha sido útil a bastantes personas.

Ahora, tomando el mismo ejemplo le hice algunas modificaciones en las macros para que ahora los datos se capturen en un formulario que esté en un archivo de Excel y que los datos capturados se guarden en otro archivo de Excel.

Ver video Capturar datos y guardarlos en otro archivo

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Guardar datos en otro archivo de Excel

Tenemos un archivo de Excel en el cual, en la primera hoja tenemos un formulario para capturar datos. En la hoja Captura contamos con dos botones:

    1. Guardar datos en otro archivo.
    2. Guardar datos en otra hoja (mismo archivo).

Capturar datos y guardarlos en el mismo archivo o en otro archivo.

Figura 1. Capturar datos y guardarlos en el mismo archivo o en otro archivo.

En caso de presionar el botón Guardar datos (otro archivo), los datos se capturarán en el archivo llamado Datos – EXCELeINFO.xlsx, mismo que debe guardarse en la misma carpeta del archivo de captura.

Los datos se guardarán en otro archivo, que debe estar en la misma carpeta.

Figura 2. Los datos se guardarán en otro archivo, que debe estar en la misma carpeta.

Guardar en el mismo archivo, pero en otra hoja

En caso de presionar el botón Guardar datos (mismo archivo), los datos se guardarán en la hoja Datos del mismo archivo de captura.

Guardar datos en hoja de Excel.

Figura 3. Guardar datos en hoja de Excel.

Código vba de la macro. Guardar en otro archivo

El siguiente código debe ir en un módulo normal y será llamado por el botón Guardar datos (otro archivo).

Option Explicit
'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh

'Guardar datos en otro archivo de Excel
Sub Captura_Datos2()
'Declaración de variables
'
Dim strTitulo As String
Dim Continuar As String
Dim RangoDatos As Range
Dim NuevaFila As Integer
Dim Limpiar As String
Dim HojaDestino
Dim Ruta As String
'
'Declaramos las variables que nos permitirán tener una segunda instancia de Excel
'ejecutándose en segundo plano.
Dim x10 As New Excel.Application
Dim ArchivoDestino As New Excel.Workbook
'
strTitulo = "EXCELeINFO"
'
Continuar = MsgBox("Dar de alta los datos?", vbYesNo + vbExclamation, strTitulo)
If Continuar = vbNo Then Exit Sub
'
'En caso de que el archivo esté en la misma ruta
Ruta = ActiveWorkbook.Path
'
'Abrimos el archivo donde se guardarán los datos.
'Este archivo se abrirá en la instancia de Excel ejecutándose en segundo plano.
'Set ArchivoDestino = x10.Workbooks.Open("C:\ruta\del\archivo\de\datos\Datos - EXCELeINFO.xlsx")
Set ArchivoDestino = x10.Workbooks.Open(Ruta & "\Datos - EXCELeINFO.xlsx")
Set HojaDestino = ArchivoDestino.Worksheets("Datos")
'
'Definimos el rango actual de la hoja Datos
Set RangoDatos = HojaDestino.Cells(1, 1).CurrentRegion
'
'Nueva fila será la fila donde se guardarán los datos nuevos
NuevaFila = RangoDatos.Rows.Count + 1
'La variable HojaDestino será la hoja donde se guardarán los datos.
With HojaDestino
    .Cells(NuevaFila, 1).Value = Date
    .Cells(NuevaFila, 2).Value = Format(Date, "dd")    'Día actual
    .Cells(NuevaFila, 3).Value = Format(Date, "mm")    'Mes actual
    .Cells(NuevaFila, 4).Value = Format(Date, "yy")    'Año actual
    .Cells(NuevaFila, 5).Value = ThisWorkbook.Sheets(1).Range("C6")     'Responsable
    .Cells(NuevaFila, 6).Value = ThisWorkbook.Sheets(1).Range("C9")     'Inventario
    .Cells(NuevaFila, 7).Value = ThisWorkbook.Sheets(1).Range("C12")    'Célula
    .Cells(NuevaFila, 8).Value = ThisWorkbook.Sheets(1).Range("C15")    'V.O.B.O.
    .Cells(NuevaFila, 9).Value = ThisWorkbook.Sheets(1).Range("F9")     'Se reemplaza
    .Cells(NuevaFila, 10).Value = ThisWorkbook.Sheets(1).Range("F12")   'Aplica pago
    .Cells(NuevaFila, 11).Value = ThisWorkbook.Sheets(1).Range("F15")   'Comentarios
End With
'
MsgBox "Alta exitosa.", vbInformation, strTitulo
'
'
'Guardamos el archivo con los datos.
ArchivoDestino.Save
'Cerramos el archivo con los datos.
ArchivoDestino.Close
'Quitamos las referencias a los objetos de la otra instancia de Excel
Set x10 = Nothing
Set ArchivoDestino = Nothing
'
Limpiar = MsgBox("Deseas limpiar los campos de la captura?", vbYesNo, strTitulo)
'
If Limpiar = vbYes Then
    With ActiveWorkbook.Sheets(1)
        .Range("C6").ClearContents
        .Range("C9").ClearContents
        .Range("C12").ClearContents
        .Range("C15").ClearContents
        .Range("F9").ClearContents
        .Range("F12").ClearContents
        'ClearContents no funciona en celda combinada...
        .Range("F15").Value = ""
    End With
Else
End If
'
End Sub

Código vba de la macro. Guardar en otra hoja

El siguiente código debe ir en un módulo normal y será llamado por el botón Guardar datos (mismo archivo).

Option Explicit
'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
Sub Captura_Datos()
'Declaración de variables
'
Dim strTitulo As String
Dim Continuar As String
Dim RangoDatos As Range
Dim NuevaFila As Integer
Dim Limpiar As String
'
strTitulo = "EXCELeINFO"
'
Continuar = MsgBox("Dar de alta los datos?", vbYesNo + vbExclamation, strTitulo)
If Continuar = vbNo Then Exit Sub
'
Set RangoDatos = ThisWorkbook.Worksheets("Datos").Cells(1, 1).CurrentRegion
'
NuevaFila = RangoDatos.Rows.Count + 1
'
With ThisWorkbook.Worksheets("Datos")
    .Cells(NuevaFila, 1).Value = Date
    .Cells(NuevaFila, 2).Value = Format(Date, "dd")    'Día actual
    .Cells(NuevaFila, 3).Value = Format(Date, "mm")    'Mes actual
    .Cells(NuevaFila, 4).Value = Format(Date, "yy")    'Año actual
    .Cells(NuevaFila, 5).Value = ThisWorkbook.Sheets(1).Range("C6")     'Responsable
    .Cells(NuevaFila, 6).Value = ThisWorkbook.Sheets(1).Range("C9")     'Inventario
    .Cells(NuevaFila, 7).Value = ThisWorkbook.Sheets(1).Range("C12")    'Célula
    .Cells(NuevaFila, 8).Value = ThisWorkbook.Sheets(1).Range("C15")    'V.O.B.O.
    .Cells(NuevaFila, 9).Value = ThisWorkbook.Sheets(1).Range("F9")     'Se reemplaza
    .Cells(NuevaFila, 10).Value = ThisWorkbook.Sheets(1).Range("F12")   'Aplica pago
    .Cells(NuevaFila, 11).Value = ThisWorkbook.Sheets(1).Range("F15")   'Comentarios
End With
'
MsgBox "Alta exitosa.", vbInformation, strTitulo
'
Limpiar = MsgBox("Deseas limpiar los campos de la captura?", vbYesNo, strTitulo)
'
If Limpiar = vbYes Then
    With ActiveWorkbook.Sheets(1)
        .Range("C6").ClearContents
        .Range("C9").ClearContents
        .Range("C12").ClearContents
        .Range("C15").ClearContents
        .Range("F9").ClearContents
        .Range("F12").ClearContents
        'ClearContents no funciona en celda combinada...
        .Range("F15").Value = ""
    End With
Else
End If
'
End Sub

Descargar los archivos de ejemplo

Descargar el ejemplo Formulario de captura que guarda en otro archivo de Excel.rar

Encender o apagar reglas de Formato condicional en Excel con este truco sencillo

$
0
0

En este artículo y video vamos a ver un truco sencillo para aplicar formatos condicionales en Excel y además tener una Tabla sencilla donde tendremos algunas reglas de formato condicional y una columna donde especificaremos si la regla está encendida o apagada.

Reglas para formato condicional

Tenemos una Tabla donde como ejemplo tenemos 3 reglas de formato condicional, las cuales son:

    1. Colorear las ventas mayores a 5,000.
    2. Colorear la edad entre 18 y 45.
    3. Colorear si la celda está vacía.

La tabla tendrá dos columnas, una con el título REGLA o la otra con el título ENCENDIDA/APAGADA. Para los valores de la segunda columna usaremos Validación de datos para tener una lista con esos dos valores ENCENDIDA y APAGADA.

  • Elegimos la celdas de la segunda columna.
  • Nos dirigimos a la pestaña Datos > Validación de datos.
  • Elegimos Permitir lista y llenamos los valores ENCENDIDA, APAGADA.

Tabla de reglas de Formato condicional ENCENDER, APAGAGAR.

Figura 1. Tabla de reglas de Formato condicional ENCENDER, APAGAGAR.

Ver Video Encender o apagar Formato condicional en Excel

Regla 1 – Ventas mayores a 5,000

Para la primera regla tenemos una Tabla sencilla con las ventas por mes. Deseamos que se coloreen aquellas cantidades mayores a 5,000.

Crear nombre personalizado para primera regla

Un nombre personalizado nos ayudará a obtener el valor VERDADERO(ENCENDIDO) o FALSO(APAGADO) de la primera regla.

  • Nos dirigimos a la pestaña Fórmulas.
  • En la sección Nombres definidos elegimos Asignar nombre.
  • En Nombre ingresamos rVentasMayores5000.
  • Y en Se refiere a: ingresamos la fórmula =Reglas!$B$4=”ENCENDIDA”.

Asignamos un nombre para determinar ENCENDIDO como VERDADERO o 1.

Figura 2. Asignamos un nombre para determinar ENCENDIDO como VERDADERO o 1.

Insertar formato condicional a la columna Ventas

Ahora toca definir una regla de Formato condicional a la columna de Ventas para que se coloreen las cantidades mayores a 5,000.

  • Elegimos los valores de ventas.
  • Nos vamos a la pestaña Inicio.
  • Elegimos Formato condicional > Nueva regla.
  • Elegimos Utilice una fórmula que determine las celdas para aplicar formato.
  • Insertamos la fórmula: =(B4>=5000)*rVentasMayores5000.
  • Elegimos un color verde para que sea el color cuando las ventas sean mayores a 5,000.

Si la regla está ENCENDIDA se aplicará el formato condicional.

Figura 3. Si la regla está ENCENDIDA se aplicará el formato condicional.

Regla 2 – Edad entre 18 y 45

Para la regla 2 seguimos los mismos pasos que la regla 1.

  • Creamos un nombre con el texto rEdad18y45.
  • La fórmula que usaremos será: =Reglas!$B$5=”ENCENDIDA”.
  • Insertamos una regla de Formato condicional cuya fórmula será: =(Y($B$20>=18,$B$20<=45))*rEdad18y45.

Aplicando regla para edad entre 18 y 45.

Figura 4. Aplicando regla para edad entre 18 y 45.

Regla 3 – Colorear en rojo si la celda está vacía

Para la regla 2 seguimos los mismos pasos que la regla 1.

  • Creamos un nombre con el texto rValorObligatorio.
  • La fórmula que usaremos será: =Reglas!$B$6=”ENCENDIDA”.
  • Insertamos una regla de Formato condicional cuya fórmula será: =(Y($B$20>=18,$B$20<=45))*rEdad18y45.

Aplicando regla para colorear en rojo si la celda está vacía.

Figura 5. Aplicando regla para colorear en rojo si la celda está vacía.

Descargar el archivo de ejemplo

Descargar el ejemplo Encender apagar Formatos condicionales en Excel – EXCELeINFO.rar


Formulario de búsqueda inteligente y BUSCARV en Excel

$
0
0

En este artículo y video desarrollaremos un ejemplo en base a una consulta que me han hecho en diferentes ocasiones. Como sabes, la función BUSCARV es una de las funciones que más uso, de hecho, en el canal de YouTube tengo una Lista de reproducción dedicada a esta función tal útil. La lista tiene como nombre El poder de BUSCARV en Excel.

La pregunta que me han hecho se refiere a cómo uso la función BUSCARV, pero mostrando todos los elementos coincidentes e incluso repetidos. Es por eso que me di a la tarea de desarrollar un formulario de Excel vba donde tendremos un Textbox para escribir un nombre o apellidos y nos mostrarán todos los elementos que coincidan con esa búsqueda.

Cómo funciona

Tenemos un formulario en una hoja llamada Buscar. Dicho formulario tiene una sección donde podremos escribir un ID y mediante la función BUSCARV devolvemos los valores relativos a ese ID.

BUSCARV en Excel en base a un ID.

Figura 1. BUSCARV en Excel en base a un ID.

Ver video Formulario de búsqueda inteligente y BUSCARV en Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Buscar por nombre y mostrar valores coincidentes

Pero qué sucede cuando la búsqueda no la queremos hacer por ID, sino por nombre o apellidos, además deseamos que si escribimos un nombre se muestren todos los nombres que se parezcan.

En la hoja Buscar del archivo de ejemplo tendremos una Tabla con nombres y detalles de cada nombre.

Tabla de nombres en Excel.

Figura 2. Tabla de nombres en Excel.

En la Figura 1 vemos un botón que dice Buscar por nombre. Si presionamos ese botón se mostrará un formulario de Excel vba donde tendremos un Cuadro de texto para escribir nombres o apellidos. Una vez en el formulario veremos un botón que dice Filtrar. Al presionar el botón Filtrar se mostrarán todos los elementos.

Filtrar los elementos coincidentes en Formulario de Excel vba.

Figura 3. Filtrar los elementos coincidentes en Formulario de Excel vba.

Usar BUSCARV para mostrar los valores de cada ID

Una vez que al escribir un nombre en el formulario y Filtrar los valores coincidentes, cada que elijamos uno de los elementos del ListBox verás como en el formulario de hoja Buscar se muestran los valores por cada ID.

Al elegir un elemento se devuelven valores usando BUSCARV en Excel.

Figura 4. Al elegir un elemento se devuelven valores usando BUSCARV en Excel.

Código del formulario

Usaremos el siguiente código vba (macro) para hacer funcionar el formulario.

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo
'
Private Sub btnFiltrar_Click()
On Error GoTo Errores
'
If Me.txtFiltro1.Value = "" Or Me.txtFiltro1.Value = " " Then
'
    Me.ListBox1.Clear
    '
    Else
    Me.ListBox1.Clear
    j = 1
    Set HojaBase = ThisWorkbook.Sheets("Base")
    '
    Filas = HojaBase.Range("a1").CurrentRegion.Rows.Count
    For i = 2 To Filas
        If LCase(HojaBase.Cells(i, j).Offset(0, 1).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
            Me.ListBox1.AddItem HojaBase.Cells(i, j)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = HojaBase.Cells(i, j).Offset(0, 1)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = HojaBase.Cells(i, j).Offset(0, 6)
        Else
        End If
    Next i
End If
'
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "EXCELeINFO"

End Sub
'
'Pasar el ID del registro elegido a la celda D6
Private Sub ListBox1_Click()
'
Cuenta = Me.ListBox1.ListCount
Set Rango = Range("A1").CurrentRegion
For i = 0 To Cuenta - 1
    If Me.ListBox1.Selected(i) Then
        Valor = Me.ListBox1.List(i)
        Sheets("Buscar").Range("D6").Value = Valor
    End If
Next i
'
End Sub
'
'Dar formato al ListBox y traer datos de la tabla
Private Sub UserForm_Initialize()
'
With ListBox1
    .ColumnCount = 3
    .ColumnWidths = "40 pt;170 pt;60 pt"
End With
'
End Sub
'
'Cerrar formulario
Private Sub CommandButton2_Click()
Unload Me
End Sub

Artículos relacionados

Búsqueda inteligente en un formulario de Excel vba

Formularios para búsqueda, alta, baja y actualización de registros en Excel

Formulario de consulta en Excel con BUSCARV

Descarga el archivo de ejemplo

Descargar el ejemplo Formulario de búsqueda inteligente y BUSCARV en Excel.rar

La entrada Formulario de búsqueda inteligente y BUSCARV en Excel se publicó primero en EXCELeINFO.

Liberado EXCELeINFO add-in 4.3 #SéExitosoEnExcel

$
0
0
EXCELeINFO add-in 4.3

EXCELeINFO add-in 4.3

“Desde el año 2010, EXCELeINFO add-in se ha venido actualizando con un único propósito: Optimizar tiempo en Excel y volverte más productivo.”

Descargar e instalar EXCELeINFO add-in 4.3

Herramientas añadidas en la versión 4.3

► Hojas >> Cambiar nombre a hojas

Esta herramienta nos permitirá cambiar el nombre a las hojas que tengamos en un archivo de Excel, todo desde un mismo formulario.

Cambiar nombres a etiquetas de hojas en Excel.

Figura 1. Cambiar nombres a etiquetas de hojas en Excel.

► Hojas >> Cambiar color a etiquetas de hojas

En esta herramienta, desde un mismo formulario podremos cambiarle el color a las etiquetas de hojas en un archivo de Excel. De la misma manera, en el formulario podremos visualizar el color definido en cada etiqueta.

Cambiar color a etiquetas de hojas en Excel.

Figura 2. Cambiar color a etiquetas de hojas en Excel.

► Rangos >> Desplazarse hacia la derecha y Desplazarse hacia la izquierda

Esta herramienta nos ayudará a desplazarnos hacia la derecha o hacia la izquierda en una hoja de Excel. Esta herramienta es perfecta cuando tenemos muchas columnas en una hoja de Excel, ya que mediante combinaciones de teclas, nos ahorramos el tener que usar la barra de desplazamiento vertical para movernos en la hoja de cálculo:

  • [Ctrl] + [Shift] + [D] para desplazarnos hacia la derecha.
  • [Ctrl] + [Shift] + [i] para desplazarnos hacia la izquierda.

Mediante combinación de teclas nos desplazamos hacia la derecha y a la izquierda.

Figura 3. Mediante combinación de teclas nos desplazamos hacia la derecha y a la izquierda.

► Archivos >> Guardar hojas en archivos separados

Esta herramienta fue introducida en la versión 4.2 de EXCELeINFO add-in, pero a raíz de una necesidad laboral, decidí incluir la opción de cada hoja como un Archivo de texto separado por comas, algo así como una combinación de archivo CSV y TXT.

Se añade la opción Guardar como Texto, delimitado por comas.

Figura 4. Se añade la opción Guardar como Texto, delimitado por comas.

Otro cambios y bug fixes

► En el formulario “Archivos > Listar nombres de archivo de una carpeta” se corrige que no cerraba el formulario al enlistar los archivos.

► En el formulario “Hojas > Administración de hojas…” se corrige que no se mostraban las hojas ordenadas en el ListBox.

► En el formulario “Datos > Normalizar / Unificar bases de datos…” se añade un Combobox para rellenarse con las posibles opciones elegidas.

Descarga EXCELeINFO add-in 4.3

La entrada Liberado EXCELeINFO add-in 4.3 #SéExitosoEnExcel se publicó primero en EXCELeINFO.

Conociendo los Subtotales en Excel

$
0
0

Subtotales en Excel

Los Subtotales en Excel nos permiten crear resúmenes de datos en base a filas, con la facilidad de poder resumir la información con las funciones más usadas en Excel: Suma, Recuento, Promedio, Máx., Mín., Producto, entre otras.

Ver Video tutorial

Antes de empezar

Para poder usar el comando Subtotal en Excel, debemos tener en cuenta lo siguiente antes de empezar:

Subtotal no puede usarse en Tablas de Excel. Para usarlo, debemos convertir la tabla en rango, de lo contrario el ícono de Subtotal aparecerá sombreado. En caso de aplicar, elegimos una celda de la Tabla y nos vamos a Diseño > Convertir en rango.

Antes de usar el comando Subtotal en Excel, debemos convertir una Tabla en rango.

Figura 1. Antes de usar el comando Subtotal en Excel, debemos convertir una Tabla en rango.

Ordenar la columna que se tomará como base. Ya que se crear secciones por fila única, será necesario ordenar la columna. En nuestro ejemplo ordenaremos en base a la columna SUCURSAL. Para ordenar elegimos cualquier celda de la columna y nos vamos a Datos > AZ.

Ordenamos nuestros datos por la columna en que se basarán los Subtotales.

Figura 2. Ordenamos nuestros datos por la columna en que se basarán los Subtotales.

Crear esquemas con Subtotales

Una vez validado lo anterior, procedemos a insertar los Subtotales. Seleccionamos nuestro rango de celdas y vamos a Datos > Subtotal. Se mostrará un formulario en el que elegiremos lo siguiente:

  • Para cada cambio en: La columna previamente ordenada que se usará como base para aplicar los Subtotales.
  • Usar función: elegir la función que se aplicará a los datos.
  • Agregar subtotal a: elegiremos las columnas en las cuáles queremos aplicar un resumen. El resumen será en base a la función elegida en la opción anterior.
  • Reemplazar subtotales actuales: si hay subtotales aplicados, al marcar la opción se eliminarán y se comenzará de cero.
  • Salgo de página entre grupos: marcar esta opción si lo que deseas es imprimir por concepto (en base a la columna elegida).
  • Resumen debajo de los datos: Al marcar la opción, el resumen quedará debajo de los datos, caso contrario quedarán arriba.

Este formulario nos muestra diferentes maneras de armar nuestros Subtotales.

Figura 3. Este formulario nos muestra diferentes maneras de armar nuestros Subtotales.

Al darle Aceptar en el formulario vemos cómo se creó un esquema con el resumen de nuestros datos. Los cálculos se harán en las columnas numéricas y será para entender las ventas por Sucursal y Trimestre.

En este esquema vemos el total de ventas por Sucursal y Trimestre.

Figura 4. En este esquema vemos el total de ventas por Sucursal y Trimestre..

Botones de esquema

Ahora bien, una de las cualidades la herramienta Subtotal en Excel es que tendremos disponibles los botones de esquema que nos permitirán expandir información de cada una de las filas, así como contraer la información hasta ver un total general.

Subtotales y esquemas en Excel

Figura 5. Subtotales y esquemas en Excel

Descarga el ejemplo

Descarga el ejemplo usado en este artículo: Subtotales en Excel.rar.

Liberado EXCELeINFO add-in 4.2 #SéUnExpertoEnExcel

$
0
0

EXCELeINFO add-in

“Desde el 2010 EXCELeINFO add-in ha tenido un único propósito: “Optimizar tiempo en Excel”.

:: Descarga EXCELeINFO add-in.

Es por lo anterior, que con gusto les presento una nueva versión de mi add-in, donde le he añadido algunas opciones que seguramente te serán útiles, así como accesos directos hacia recursos que harán de ti un experto, como mi Blog y mi canal de Youtube.

Herramientas añadidas en la versión 4.2

► Accesos directos a mis recursos para que sean un experto en Excel

La opción de guardar páginas en Favoritos es buena, pero por qué no, tener los recursos de EXCELeINFO a la mano y acceder a ellos en cualquier momento. He añadido botones que te llevan a los recursos con que dispongo para que seas un experto en Excel.

Accesos directos a recursos para que seas un experto en Excel.

Figura 1. Accesos directos a recursos para que seas un experto en Excel.

► Retoque en menús y botones

Para darle una apariencia más limpia a los botones y menús he reemplazados los iconos principales por otros que tienen otro tipo de fuente, además de verse más estilizados. Además de darle un retoque a los menú, añadiendo subtítulos para hacerlos más legibles. Este mismo cambio también aplica para el menú que se arroja con el clic derecho, mismo que sufrió un campo al añadirle un nuevo ícono.

Se añaden subtítulos a los menús para hacerlos más legiles

Figura 2. Se añaden subtítulos a los menús para hacerlos más legiles.

► Archivos >> Guardar hojas en archivos separados

Ver Video

Cuando majemos muchas hojas en nuestros archivos, en más de alguna ocasión hemos necesitado que cada una de esas hojas se un archivo independiente. Con esta herramienta tendrás la facilidad de elegir aquellas hojas que requieras guardar individualmente, así como tener la opción de elegir el tipo de archivo en que se guardarán. Las opciones de tipo de archivo son:

  • Libro de Excel (.xlsx).
  • Libro de Excel habilitado para macros (.xlsm)
  • Libro de Excel 97-2003 (.xls).
  • Texto (delimitado por tabulaciones) (.txt).
  • CSV (delimitado por comas) (.csv).

Guardar hojas en archivos separados

Figura 3. Guardar hojas en archivos separados.

► Datos >> Actualizar todas las Tablas dinámicas

Ver Video

Si eres de los que acostumbran tener varias Tablas dinámicas en un archivo de Excel, ésta herramienta es para ti. Para no tener que elegir la opción Actualizar en cada de tus Tablas, puedes actualizar todas desde un mismo lugar, además de tener la opción de que las mismas Tablas queden configuradas para que se actualicen al abrir el archivo.

Ahorra tiempo en Excel actualizando todas las Tablas dinámicas en un solo paso.

Figura 4. Ahorra tiempo en Excel actualizando todas las Tablas dinámicas en un solo paso.

► UDF EXCELeINFOPRIMERVALOR

Ver Video

Añado una función personalidad (UDF) al set de funciones que trae EXCELeINFO add-in, la cual llamo EXCELeINFOPRIMERVALOR. Esta función nos devolverá el primer valor encontrado de un rango de celda, siempre y cuando sea diferente al valor definido en el segundo argumento de la función:

[A1] = EXCELeINFOPRIMERVALOR(B1:G1,”N/A”)

La función devuelve el primer valor encontrado diferente a "N/A"

Figura 5. La función devuelve el primer valor encontrado diferente a “N/A”.

► Se optimiza Insertar >> Insertar filas y columnas

Haciendo pruebas con grandes cantidades de datos, me di cuenta que al momento de insertar muchas filas o columnas no se aplicaba la macro eficazmente, fue así que revisé el código y lo optimicé para que sea una herramientas más efectiva.

Insertar n cantidad de filas y/o columnas

Figura 6. Insertar n cantidad de filas y/o columnas.

► Rangos >> Seleccionar filas y columnas

Ver Video

Esta es de las herramientas que más me ha ahorrado tiempo al momento de trabajar datos. Basta con que diga la cantidad de celdas a elegir y la macro hace el proceso por mi. De otro modo para elegir n cantidad de celdas tendría que irme de una por una hasta dar con la cantidad exacta de celdas que quisiera elegir.

Seleccionar celdas en Excel nunca fue tan fácil

Figura 7. Seleccionar celdas en Excel nunca fue tan fácil.

► Rangos >> Autoajustar ancho de columna (Ctrl + M)

Ver Video

La herramienta de Excel llamada Autoajustar ancho de columna he decidido añadirla a EXCELeINFO add-in, pero con una mejora: ya que la herramienta no cuenta con un método abreviado de dos teclas he decidido añadirlo mediante macros, por lo que vez que se presione [Ctrl] + [M] el ancho de las columnas se ajustará al tamaño de la celda con el texto más largo.

Otros cambios y bug fixes

► Preguntar sobre si la opción Pantalla completa se mantiene activa aún después de cerrar el formulario Opciones de vista

Ver Video

Como sabemos, el formulario Opciones de vista tiene acceso a las configuraciones comunes en Excel y las hojas de cálculo. Cuando se marcaba la opción Pantalla completa y luego cerraba el formulario se mantenía la Pantalla completa, por lo que decidí agregarle la pregunta de si se desea continuar con pantalla completa.

Ahora cada que se elija Pantalla completa, se pedirá confirmación para mantener la opción activa

Figura 8. Ahora cada que se elija Pantalla completa, se pedirá confirmación para mantener la opción activa.

► Se corrige un error: Al usar la herramienta Renombrar archivo activo y se cancelaba, la propiedad DisplayAlerts quedaba apagada provocando que Excel ya no envíe avisos.

DESCARGA

:: Descarga EXCELeINFO add-in.

Separar texto en columnas en Excel con relleno rápido, fórmulas y macros vba

$
0
0

La herramienta de Texto en columnas en Excel es una herramienta muy útil sobretodo cuando obtenemos reportes de algún sistema y estos datos se devuelven en archivos de Texto o en formato CSV y las columnas vienen separadas por comas, puntos y comas o incluso pipes (barra vertical).

En este artículo y video veremos 4 maneras de separar texto en columnas, desde la manera tradicional hasta el uso de macros:

    1. Herramienta de Texto en columnas de la pestaña Datos.
    2. Usando Relleno rápido.
    3. Usando fórmulas y funciones.
    4. Usando macros vba.

Dato de asignaturas separadas por comas.

Figura 1. Dato de asignaturas separadas por comas.

Ver video 4 métodos para separar texto en columnas en Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Opción 1, Texto en columnas

La herramienta Texto en columnas es el método predeterminado en Excel cuando tenemos información delimitada por algún separador. Tomando en cuenta que deseamos separar el texto de la columna B de la Figura 1, haremos lo siguiente:

  • Elegimos la columna que contiene los datos separados por coma.
  • Nos dirigimos a la pestaña Datos > Texto en columnas.
  • Elegimos la opción Delimitados, ya que nuestra información viene delimitada por comas.
  • Presionamos Siguiente.
  • En los separadores elegimos Coma y presionamos Finalizar.

Elegimos el delimitador de nuestros datos y veremos una vista previa.

Figura 2. Elegimos el delimitador de nuestros datos y veremos una vista previa.

Opción 2, Relleno rápido

La herramienta de Relleno rápido o Flash fill es una herramienta muy poderosa que se implementó en Excel 2013, y nos ayudará a rellenar datos cuando se encuentra un patrón. En este caso, nuestro patrón es que por cada texto tenemos una coma. Siguiendo con nuestros datos de la Figura 1 haremos lo siguiente:

  • En la columna B tenemos nuestros datos separados por comas.
  • En la columna C escribiremos el nombre de la primer asignatura.
  • En la columna D escribiremos el nombre de la tercera asignatura.
  • Y así hasta llegar la quinta asignatura que la escribiremos en la columna G.
  • Elegimos las celdas de la columna C, desde la primer celda con texto hasta la última fila con datos de la columna B.
  • Nos dirigimos a la pestaña Datos > Relleno rápido (Ctrl + Mayús + E).
  • Hacemos lo mismo hasta la columna G y veamos cómo se rellenan los datos por cada separación de comas.

Relleno rápido detecta el patrón de separación de texto por comas.

Figura 3. Relleno rápido detecta el patrón de separación de texto por comas.

Opción 3, Fórmulas y funciones

Si bien las dos opciones anteriores son perfectas para separar texto en columnas, son herramientas un tanto manuales y de un solo uso, también veremos una manera donde involucraremos fórmulas y funciones. Al usar fórmulas en esta tarea, podemos tener un archivo plantilla en donde sólo peguemos las celdas que tienen los valores separados por comas y las fórmulas se encargan se separarlos.

Esta opción para separar texto en columnas surgió a raíz de un comentario que se nos hizo en nuestro canal de Youtube:

Comentario en Youtube donde preguntan cómo separar texto en columnas de manera automática.

Figura 4. Comentario en Youtube donde preguntan cómo separar texto en columnas de manera automática.

Lo que entendemos del comentario es que se tienen celdas con 7 palabras separadas por comas, y esas 7 palabras se devuelven con un BUSCARV, es decir, que no podemos usar la opción 1 porque las celdas tienen fórmula y tampoco podemos usar la opción 2 porque se desean que la separación sea automática. Por lo anterior, usaremos fórmulas.

Considerando que nuestros valores comienzan en la celda [B2], en la celda [C2] ingresaremos la siguiente fórmula:

=ESPACIOS(EXTRAE(SUSTITUIR($B2,”,”,REPETIR(” “,LARGO($B2))),1+(COLUMNAS($C2:C2)*LARGO($B2))-LARGO($B2),LARGO($B2)))

Al ingresar la fórmula anterior, sólo resta arrastrarla hacia la derecha y hacia abajo y en cada celda obtendremos cada palabra que esté separada por comas.

Se copia la fórmula hacia la derecha y hacia abajo para obtener los valores separados por comas.

Figura 5. Se copia la fórmula hacia la derecha y hacia abajo para obtener los valores separados por comas.

Opción 4, función UDF con macros vba

Y como en Excel siempre hay varias maneras de llegar a un objetivo, no podía faltar una solución basada en macros. Esta vez haremos uso de una función personalizada o UDF que hará la misma función de separar texto en columnas como lo vimos usando fórmulas.

Nuestro archivo debe estar guardado en formato .XLSM, es decir, habilitado para macros. En un Módulo normal ingresamos la siguiente macro:

Public Function SepararEnColumnas(Rango As Range, intPosicion As Integer, strSeparador As String)
Dim vSeparar As Variant

    Application.Volatile
    vSeparar = Split(Rango.Value, strSeparador)
    SepararEnColumnas = Trim(vSeparar(intPosicion - 1))

End Function

La función UDF se llamará SepararEnColumnas y recibirá como parámetros:

  • La celda que contiene los valores separados por coma.
  • El número de palabra que se desea devolver, la primera, segunda, tercera, etc.
  • El delimitador que separa las palabras, en este caso la coma.

=SepararEnColumnas(Celda, Posición, Separador)

. A esta UDF le asignaremos la celda con los valores, el número de palabra a devolver y el separador.

Figura 6. A esta UDF le asignaremos la celda con los valores, el número de palabra a devolver y el separador.

Descarga el archivo de ejemplo

Descargar el ejemplo Separar texto en columnas 4 métodos – EXCELeINFO.rar

Viewing all 466 articles
Browse latest View live