sábado, 9 de diciembre de 2017

Obtener el nombre técnico de un campo en SAP

Algunos lectores de los posts en los que creamos macros para conectar Excel y SAP ( Ejemplo 1 y Ejemplo 2) me han preguntado si es posible obtener de alguna forma el nombre técnico de los campos que aparecen en la interfaz de usuario de SAP. La respuesta es que si y hoy vamos a ver como lo podemos hacer. Es muy fácil y rápido.

Para hacerlo, vamos a utilizar a manera de ejemplo la transacción FB03, seleccionamos el campo sociedad y enseguida vamos a pulsar la tecla F1 (que llama la ayuda, por cierto en la gran mayoría de programas):

En el cuadro de diálogo de ayuda, damos clic en el botón que tiene la llave y el martillo (el cuarto de izquierda a derecha). Y de inmediato nos va a aparecer la siguiente información:

domingo, 1 de octubre de 2017

Integrando Ms Access y SQL Server - Vincular Tablas

Hola, hoy vamos a ver como integrar Microsoft Access con SQL Server. Para esto, vamos a crear una base de datos en blanco, sin ningún tipo de objeto:


Y en vez de crear una tabla en el propio Access, nos vamos a vincular a una tabla existente, de una base de datos de nuestro servidor de SQL Server. Iniciamos entonces dando clic en la pestaña Datos Externos:


sábado, 23 de septiembre de 2017

Formato de Celdas Personalizado para Puntos Básicos en Excel - Basic Points

Hola a todos, hoy nos vamos a alejar un poco del TSQL, pero muy pronto estaremos regresando. Esta semana, alguien me preguntó si sabía cual era la opción que debía seleccionar en Excel, para aplicar el formato de puntos básicos el cual es muy común en economía. 

Los puntos básicos se suelen utilizar para expresar la variación que existe para una variable al medirla en dos periodos de tiempo diferentes. Un ejemplo claro es cuando el banco central de un país, varía la tasa de intervención (o de referencia). Supongamos que dicha tasa se encuentra en el mes inicial en 5% y que para el siguiente mes, el banco decide subirla, pasándola a 5,25%. En dicho caso, se dice que la tasa de intervención, presenta un incremento de 25pb (puntos básicos o basic points en ingles).

Este es un cuadro de ejemplo, como el que quería trabajar quién me pregunto:





La idea es que en la columna D, podamos tener la diferencia entre el Año 2017 y el 2016, expresada en puntos básicos.

Entonces, le dije que dicha opción no existía y que lo que debía hacer era utilizar una opción de formato personalizado, combinada con la multiplicación de un factor (10.000) que le permita expresar los puntos básicos.

Entonces, para empezar nos vamos a ubicar en la celda D4 y vamos a escribir la siguiente fórmula:



lunes, 18 de septiembre de 2017

TSQL - Creando un Campo Calculado en Nuestra Consulta (SELECT) - Data Mining

Hola, hoy vamos a construir campos calculados en nuestra consulta. Pongámonos en marcha abriendo nuestro SQL Server Management Studio y recordando la consulta con la que venimos trabajando en los últimos posts:


Vamos a incluir un nuevo campo que contiene las unidades facturadas y le vamos a agregar un alias para facilitar la lectura:



miércoles, 13 de septiembre de 2017

TSQL - Aplicando un Filtro a los Resultados de la Consulta (SELECT) - Data Mining

Hola, hoy vamos a aplicar un filtro a nuestra consulta en TSQL. Con esto empezamos a dar nuestros primeros pasos hacia consultas más interesantes y un poco más avanzadas. 

Como lo hemos venido haciendo, vamos a continuar con la misma consulta que hemos venido trabajando, para esto abrimos nuestro SQL Server Management Studio:


Después de la clausula FROM, escribiremos nuestro filtro, para lo que utilizaremos la clausula WHERE el campo y el filtro. En nuestro ejemplo, aplicaremos un filtro, indicando que solo queremos los registros para los que el valor del campo PAI_NOMBRE sea igual a Ecuador:


martes, 12 de septiembre de 2017

TSQL - Cambiar el Nombre de las Columnas en Nuestra Consulta - Usar un Alias (SELECT) - Data Mining

Hola a todos, continuando con nuestros posts sobre TSQL, hoy vamos a ver como cambiar los nombres de las consultas que diseñemos. Es algo muy sencillo, pero bastante útil, ya que por lo general, los nombres de los campos, por algún motivo, suelen ser bastante técnicos, algo que asusta un poco a los usuarios comunes y que en últimas dificulta la lectura del set de datos.

En nuestra aplicación, SQL Server Management Studio, vamos a trabajar utilizando el mismo query o consulta de la última vez:


Para cambiar el nombre, vamos a utilizar la palabra reservada del lenguaje AS y después de esta escribimos el nombre que queremos utilizar:


lunes, 11 de septiembre de 2017

TSQL - Seleccionar solamente los campos de nuestro interés (SELECT) - Data Mining

Hola, vamos a continuar con el desarrollo de nuestras consultas de selección en TSQL. Ayer vimos como seleccionar todo el contenido de una tabla. Hoy vamos a indicarle al motor de nuestra base de datos, que nos devuelva específicamente los campos en los que tenemos interés. Recuerden que nuestra tabla de facturación luce de la siguiente forma:




Y que al desplazarnos a la derecha, encontramos los demás campos que conforman nuestra tabla:



domingo, 10 de septiembre de 2017

TSQL - Realizando Nuestra Primer Consulta de Selección (SELECT) - Data Mining

Hola a todos, hoy vamos a iniciar con una serie de publicaciones relacionadas con el uso del lenguaje SQL (Structured Query Language) y más específicamente con la versión de Microsoft TSQL (Transact SQL) que es el lenguaje oficial para trabajar con el Motor de Base de Datos SQL Server.

Primero vamos a trabajar en la construcción de consultas de datos, usando la sentencia: SELECT, para dar paso más adelante a la construcción de consultas de actualización, eliminación e inserción de datos.

En esta primer entrega, iniciaremos con la exploración del SQL Server Management Studio y vamos a construir una consulta básica de selección.

Cuando abrimos el SQL Server Managemant Studio y nos conectamos a un servidor (Mi recomendación es que en este punto consulten con su equipo local de TI, para que les guíen sobre la forma de conectarse al servidor y el trámite que deberán realizar para obtener los permisos necesarios para poder trabajar con las bases de datos) obtenemos una vista como la que sigue:


En el cuadro de la izquierda (object explorer), tenemos las bases de datos que estan disponibles en el servidor al que estamos conectados. Si damos clic en el signo mas, se van a desplegar los diferentes objetos que contiene la base:


sábado, 8 de julio de 2017

Transformación de Datos con Power Query en Excel (ETL - BI)

Hola a todos, hoy vamos a continuar trabajando con Power Query, y realizaremos nuestra primera transformación de datos con dicha herramienta

El ejercicio lo ejecutaremos en un archivo de excel, que es el resultado de una encuesta practicada con la ayuda de la herramienta para encuestas de Google. Lo que tenemos es un archivo en el que cada linea es una encuesta y en cada columna tenemos la respuesta a cada una de las preguntas realizadas:


En la primera fila tenemos los encabezados de la base de datos. Hacia la derecha, tenemos un total de 40 columnas, una columna por cada pregunta realizada.

La persona que va a realizar la minería de datos sobre esta base, quiere que en una sola columna tengamos todas las preguntas y al lado la respuesta a cada una. Esto, con el objetivo de poder construir una tabla dinámica en la que solo tenga que vincular una columna para tener todas las preguntas incluidas en un solo paso, y no tener que repetir la misma operación 40 veces.

Una opción sería realizar la transposición de las columnas una a una, copiando y pegando, e insertando las filas necesarias. Otra opción, es construir una macro en vba. Nosotros lo vamos a resolver con las herramientas para Transformar datos, que están incluidas en Power Query.

Lo primero será entonces crear un set de datos en Power Query desde un Rango:

miércoles, 7 de junio de 2017

Extracción de Datos desde Archivos de Texto Usando Power Query de Excel (ETL - BI)

Hola, hoy vamos a continuar con los posts sobre extracción de datos (ETL) utilizando Power Query. Hoy realizaremos la extracción, desde un archivo de texto CSV (separado por comas o punto y comas).

Iniciemos por crear un nuevo archivo de Excel y vayamos al menú de Power Query:


El archivo que vamos a extraer tiene la siguiente estructura:

miércoles, 31 de mayo de 2017

Tres métodos diferentes para realizar la operación SUMAPRODUCTO en excel

Hola, hoy vamos a trabajar en la construcción de tres métodos diferentes con los que realizaremos la operación SUMAPRODUCTO en excel. Para los tres métodos, vamos a utilizar fórmulas de excel, revisando las bondades de cada uno.

Vamos a trabajar con un archivo que tiene la siguiente información:


Con estos datos, calcularemos el producto y la sumatoria de los mismos.

En nuestro primer método, vamos a calcular en una columna adyacente, el producto del Lote A y el Lote B:

martes, 23 de mayo de 2017

Extracción de Datos desde Páginas Web Usando Power Query de Excel

Hola, hoy vamos a escribir el primer post sobre extracción de datos. Iniciaremos con la opción de extracción de data de páginas web.

Power query ofrece muchas más fuentes para extraer datos, tales como: SQL Server, Oracle, facebook, listas de Share Point, archivos de Hadoop, MySQL etc. La lista es amplia y diversa y con seguridad suficiente para responder a la mayoría de las necesidades que tengamos.

En los próximos posts, trataremos la extracción de información desde archivos de excel, access, texto y xml.

Iniciemos por crear un nuevo archivo de Excel y vayamos al menú de Power Query:


En la parte izquierda del menú, tenemos las opciones para Obtener datos externos. La primera opción, es para traer datos desde tablas creadas en páginas web. Vamos a probarlo, utilizando la siguiente dirección web: https://msdn.microsoft.com/en-us/library/office/ff834966.aspx

Dicha dirección corresponde a la siguiente página de microsoft:


domingo, 21 de mayo de 2017

Iniciando a trabajar con Power Query en Excel (Business Intelligence - BI) - ¿Cómo Instalarlo?

Hoy vamos a dar inicio a una serie de posts en los que vamos a explorar las herramientas de Business Intelligence (BI) que Microsoft Excel trae y que nos van a permitir realizar análisis con enormes volúmenes de datos (incluso archivos de Hadoop - Big Data), con diversidad de fuentes y lo mas importantes, diseñadas por usuarios finales, sin necesidad de tener conocimientos en programación y sin tener que recurrir a un batallón de miembros de TI.

Las herramientas con las que trabajaremos son: Power Query, Power Pivot y Power View. Un poco más adelante, cuando ya tengamos dominadas estas herramientas, vamos a pasar a trabajar con Power BI, que incorpora estas tres últimas en una práctica e intuitiva solución para diseñar tableros de control de una manera rápida, sencilla pero poderosa.

¿Qué es Power Query? Básicamente se trata de un complemento para Excel, que nos va a permitir realizar procesos de extracción de datos desde múltiples fuentes, transformación de los mismos y cargue para uso final. Es lo que en el argot de las bases de datos se conoce como ETLs (Extract, Transform y Load). Solo que en esta oportunidad, Microsoft lo pone al alcance y al nivel de usuarios finales, no hace falta ser un técnico para poder utilizarlos.

Los datos que carguemos usando Power Query, los podemos cargar directamente a excel, en una tabla en una de las hojas que componen el libro, o podemos decirle que cargue el resultado del query en: El modelo de datos de Excel. Y ¿qué es eso? El modelo de datos es un motor de base de datos interno, que hace parte del archivo de excel y que se encarga de optimizar las operaciones que vamos a realizar con nuestros datos y con el almacenamiento de los mismos.

Veamos entonces, como instalar Power Query en nuestro Excel. Lo primero que vamos a hacer, es abrir excel desde cero y decirle que nos cree un nuevo libro de trabajo:

viernes, 19 de mayo de 2017

Proteger nuestro código de vba mediante el uso de una contraseña

Hoy vamos a ver ¿cómo proteger nuestras macros mediante el uso de una contraseña?. Muy útil para evitar que alguien altere nuestro código, o que tenga acceso a cadenas de conexión que incluyen nombres de usuario y claves de bases de datos o de otros sistemas.

Para hacerlo, abrimos un archivo que tenga una macro y llamamos el editor de vba: Alt + F11:


Damos clic derecho en el módulo que contiene la macro y del menú desplegable seleccionamos la opción: Propiedades de VBAProject...





domingo, 14 de mayo de 2017

Ejecutar una macro al momento en que abrimos nuestro archivo de excel - vba

Hola, hoy vamos a escribir un poco de código en vba. Lo que vamos a hacer es construir una macro que se ejecute en el mismo instante en que damos doble clic en un archivo de excel y este se abre. Esta funcionalidad puede ser muy útil para limpiar información de nuestro archivo, para iniciar algunas variables en el mismo, para guardar una copia del archivo etc. 

Todo depende del problema que estemos abordando. En mi caso, la voy a utilizar para que el usuario vea un msgbox.

Iniciemos entonces, llamando nuestro editor de vba con Alt + F11 e insertemos un nuevo módulo:


Vamos a dar doble clic en ThisWorkbook:


jueves, 11 de mayo de 2017

Práctico Resumen de Funciones de Texto de Excel

Hoy vamos a ver un corto pero práctico resumen de las funciones para tratamiento de textos que más suelo utilizar en excel.

Las funciones con las que vamos a trabajar son: IZQUIERDA( ), DERECHA( ), EXTRAE( ), ENCONTRAR( ), LARGO( ), MAYUSC( ) y MINUSC( ).

Vamos entonces a usar como ejemplo la cadena de texto= America. Que consta de 7 caracteres:


Espero les sirva. Hasta una próxima.

miércoles, 10 de mayo de 2017

Trabajando con los argumentos del método GetOpenFilename en vba

En el post anterior tuvimos nuestro primer contacto con el método GetOpenFilename. Hoy vamos a revisar los argumentos opcionales que podemos incluir cuando nuestra macro realice la llamada al método.

La siguiente es la estructura completa del método con sus argumentos:

Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

Donde:

FileFilter: Es una cadena de texto que nos sirve para aplicar un criterio de filtrado.
FilterIndex: Es un número que funciona como indice para indicar cuál es el criterio de filtrado a usar.
Title: Sirve para personalizar el titulo del cuadro de diálogo. Si se deja en blanco, por defecto aparecera: Abrir.
ButtonText: Solo aplica para Mac.
Multiselect: Acepta el valor True (verdadero) o False (falso). True nos permite seleccionar más de un archivo a la vez. False solo nos permite seleccionar un archivo.

Recordemos que cuando llamamos el método sin ninguno de sus argumentos lo que tenemos es el siguiente cuadro:


Vamos a hacer el llamado pasando un valor para el argumento FileFilter: 

martes, 9 de mayo de 2017

Usando el método GetOpenFilename de vba en nuestras Macros

Hoy vamos a trabajar con el método GetOpenFilename del objeto Application en Excel

Dicho método, lo podemos utilizar en las macros que escribamos en vba, cuando necesitemos que el usuario tenga que interactuar con la aplicación y deba suministrar un nombre de archivo y una ruta para que la macro realice alguna operación con el mismo.

Ademas, al hacerlo de esta forma le vamos a dar un toque mucho más profesional a nuestra macro.


Cuando invocamos el método GetOpenFilename abre el siguiente cuadro de diálogo:



Este cuadro es familiar para todos los que trabajamos con Excel o con cualquier aplicación de Office. Basta con navegar en las distintas carpetas hasta encontrar el archivo que queremos, seleccionarlo y dar clic en el botón Abrir.

 Lo que vamos a hacer es escribir una sencilla macro como ven a continuación:



La primera linea, llama el cuadro de diálogo y asigna el valor de retorno del mismo a la variable arch. Este método nos devuelve una cadena de texto que contiene el nombre del archivo y la ruta en la que este se encuentra.


sábado, 6 de mayo de 2017

Trabajando con la función FORMULATEXTO( ) de Excel. Muy útil para documentar nuestros modelos.

Hace un par de años, leyendo un libro de Modelación Financiera encontré un código en vba muy útil para documentar los distintos modelos que tenemos que construir en nuestro trabajo y en la universidad. Dicho código lo que hacía era extraer la fórmula que teníamos en una celda determinada y dejarla visible al lado como una cadena de texto.

Hoy, excel ya cuenta con una función para realizar esta tarea y no necesitamos escribir código en visual basic ni crear una función personalizada.

Vamos a escribir una fórmula sencilla en una celda de un archivo de excel:


Esta función nos sirve para calcular la tasa nominal. En este caso, estamos calculando la tasa nominal equivalente para una tasa efectiva anual del 30%. Si quieren conocer un poco más sobre esta función no olviden leer este post: Calcular la tasa mensual equivalente a partir de la efectiva anual utilizando la función: TASA.NOMINAL( )

Vamos a continuar llamando en A2 la función: FORMULATEXTO( ) de la siguiente manera:


jueves, 4 de mayo de 2017

Trabajando con Transacciones en Microsoft Access - vba

Hoy vamos a trabajar con transacciones en Microsoft Access. Así es, esa pequeña base de datos, que en mi opinión es un gran caballito de guerra, también trabaja con transacciones. 

Vamos a empezar por definir que es una transacción, en la página de Microsoft nos dicen que una transacción es: 

"Una transacción es una secuencia de operaciones realizadas como una sola unidad lógica de trabajo. Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades de atomicidad, coherencia, aislamiento y durabilidad (ACID), para ser calificada como transacción."

Lo que quiere decir que una transacción se compone de mas de una operación en una base de datos y que esta tiene validez únicamente si se completan todas o ninguna.

El ejemplo clásico de esto, son las dos operaciones que se realizarían en el aplicativo de un banco al momento de debitar una cuenta por un monto y acreditar otra por dicho valor. 

Dicha operación solo tiene validez si ambas operaciones se ejecutan. ¿Pensemos que pasaría si solo se debita la primera cuenta? Tendríamos una disminución en el saldo de la misma y la cuenta de destino no registraría ningún incremento, es decir: el dinero quedaría en una especie de limbo.

Para evitar esto, las dos operaciones se deben empaquetar en una transacción, así, esta solo tendrá validez si se ejecutan las dos o ninguna.

Pasemos de la teoría al ejemplo. Vamos a trabajar con una sencilla base de datos que solo tiene una tabla con la siguiente información:


Nuestra misión es debitar (disminuir) la cuenta de Eduardo en $100 y acreditar (incrementar) la cuenta de Diana en ese mismo valor utilizando una transacción.

miércoles, 3 de mayo de 2017

Trabajando con Excel Solver. Ejercicio 1: Problema de mezcla de producción y venta.

Hoy vamos a trabajar con la herramienta Solver, que es un complemento que está incluido en excel. Hay algunas versiones distintas que podemos descargar y pagar por ellas. Son más avanzadas y tiene funcionalidades adicionales, pero para los ejercicios que vamos a desarrollar en el blog, el que tiene por defecto excel es más que suficiente.

Empecemos entonces por entender como se activa este complemento. Damos clic en la opción archivo de nuestra barra de herramientas:


Damos clic en Opciones:


Y luego damos clic en la opción: Complementos:

lunes, 1 de mayo de 2017

Utilizando la función BUSCARH para obtener información de una tabla de excel

Hola a todos, recuerdan la función BUSCARV que vimos en este Post ? Hoy vamos a trabajar con otra función de búsqueda muy importante, algo así como el complemento de buscarv: BUSCARH. Si recuerdan, BUSCARV necesita que le digamos cuál es la tabla donde se va a ejecutar la búsqueda y el valor a buscar. 

BUSCARV toma la primera columna como el referente para encontrar el valor buscado y devuelve el valor que se encuentra en la columna que incluimos en los argumentos:


BUSCARH hace la misma operación, pero en vez de tomar la primera columna como referente de búsqueda, toma es la primera fila de la tabla y nos devuelve el valor que encuentra en la fila que le indiquemos:

domingo, 30 de abril de 2017

Invertir cadenas de texto en excel creando una función personalizada con vba

Dentro de las muchas funciones para el tratamiento de textos que trae excel incluidas no hay una que nos permita invertir cadenas. Es cierto, no la hay. Si tenemos en una celda: "Hola" y queremos invertirla para tener: "aloH" no lo podemos hacer con las funciones disponibles.

Sin embargo, la librería de funciones que incluye vba si tiene una para cumplir con dicho propósito. Se llama StrReverse( ) y lo que nos pide como argumento, es una cadena de texto para poder invertirla.

Como la función esta disponible en vba, tendremos que escribir un poco de código y crear una función personalizada. Así es, en excel también podemos crear nuestras propias funciones y llamarlas en nuestras hojas de cálculo tal y como lo hacemos con BUSCARV, BUSCARH, IZQUIERDA, DERECHA o cualquier otra.

Vamos entonces a construir una función con la que podamos invertir la cadena de texto que tenemos en la celda B2:


Digitamos la combinación de teclas Alt + F11 para llamar el editor de vba y creamos un nuevo módulo:


viernes, 28 de abril de 2017

Truco Excel: Eliminar todos los comentarios de las distintas hojas de un archivo de excel

Hoy vamos a revisar un sencillo pero muy útil truco. En muchas oportunidades, como medio para documentar nuestros archivos de trabajo en excel, utilizamos comentarios en algunas o varias de las celdas. Llega el momento en que debemos compartir o enviar nuestro archivo a otra persona y dado que los comentarios contienen información confidencial, debemos borrarlos. 

Tarea que no es fácil y que se nos puede complicar si nuestro modelo es muy grande, lo que nos puede arriesgar a dejar alguno y enviarlo al destinatario.

Para resolver este problema, vamos a escribir una sencilla macro en vba, que solo va a tener de tres líneas de código.

Supongamos entonces que tenemos un archivo con tres hojas, y vamos a colocar en cada una de las tres hojas, comentarios al azar:


Como ya saben, las celdas con comentarios son aquella que en su esquina superior derecha tienen un pequeño triangulo rojo y que al pasar con el mouse sobre ellas, nos muestran un rectángulo amarillo como el de la imagen.

Enseguida vamos a digitar Alt + F11 para llamar nuestro editor de visual basic y seleccionamos la opción de agregar un nuevo módulo:


miércoles, 26 de abril de 2017

Nuevo ejemplo de web scraping: Construyendo un conversor de monedas

Vamos a retomar el ejercicio que realizamos de web scraping y que realizamos en tres entregas diferentes: Parte 1, Parte 2 y Parte 3. En estos tres posts, encuentran una explicación detallada de lo que hacemos cuando trabajamos el scraping y de las librerías que hay que activar para que la macro pueda funcionar.

El ejemplo de hoy es una macro, que nos va a conectar a la página: 



Vamos a construir una tabla en excel como sigue:



lunes, 24 de abril de 2017

Construir una consulta desde excel a una tabla de una base de datos sin usar vba

Bueno, con anterioridad construimos una macro que nos permitía conectar con una base de datos, ejecutar un código en vba, realizar la conexión y ejecutar un comando qu se encargaba de borrar el contenido de la tabla (ver post: Ejecutar la instrucción DELETE de SQL desde Excel usando VBA. Luego lo mejoramos y realizamos la misma tarea pero utilizando en nuestro código de vba solo el objeto ADODB.Connection (ver post: Post Mejorado: Ejecutar la instrucción DELETE de SQL desde excel usando solo el objeto ADODB.connection de vba). Adicionalmente, en este último adicionamos las líneas de código para asegurar el cierre de la conexión y la referencia al objeto.

Hoy vamos a hacer nuevamente una conexión a nuestra base de datos de acces pero utilizando la funcionalidad que incorpora excel para hacerlo sin necesidad de usar código en vba. Nuestro objetivo sera realizar una consulta con la que podamos consultar el contenido de una tabla. Puesto en términos de SQL, vamos a realizar un SELECT.

Para poder hacerlo, vamos a iniciar con excel y vamos a ir al menú: Datos y seleccionamos la opción access:


En este caso, seleccionamos access, porque es la base con la que vamos a realizar el ejemplo. Ya saben que si lo quieren hacer con Oracle o SQL Server, deben trabajar con Otras Fuentes.

En el cuadro de diálogo que se despliega, vamos a ubicar nuestro archivo de access y damos clic en aceptar: