domingo, enero 20, 2013

Intercalar columnas y filas en Excel – un atajo

A menudo surge la necesidad de intercalar columnas o filas en una tabla de Excel. Por ejemplo, en esta tabla de ventas queremos agregar el segundo trimestre



Es decir, intercalar una columna entre B y C y otra entre C y D

Chandoo publica un atajo para realizar esta tarea con un solo clic:

Manteniendo la tecla Ctrl apretada seleccionamos la columna C y después la columna D (un clic para cada selección); abrimos el menú contextual (clic al botón derecho del mouse) y activamos Insertar



Lo mismo podemos hacer con las filas. Supongamos que queremos insertar filas entre Sucursal 1, Sucursal 2 y Sucursal 3; apretando la tecla Ctrl seleccionamos una después de la otra las filas 3, 4 y 5 y usamos el menú Insertar como en el caso anterior


viernes, enero 11, 2013

Actualización selectiva de tablas dinámicas en Excel

Como bien sabemos, las tablas dinámicas de Excel no se actualizan automáticamente al cambiar los datos que las alimentan. Dada esta característica existe el riesgo de publicar informes erróneos si nos olvidamos de pulsar el botón Actualizar en el menú de Herramientas de tabla dinámica



En el pasado propuse una macro sencilla para asegurarnos que después de actualizar datos en una hoja, la tabla dinámica se actualice. Se trata de un método un tanto contundente, actualiza todo lo que se cruce a su paso: tablas dinámicas, tablas, etc.

Un lector me pide un método más sutil que permite actualizar únicamente las tablas dinámicas y deje todo lo demás intacto. Mi primer propuesta, que puse en un comentario en la nota en cuestión, fue este código

Sub actualizar_Tabla_Dinamica()
    Dim strPivotName As String

    strPivotName = Application.InputBox(prompt:="Que tabla actualizar?")

    On Error GoTo errCancel 'en caso de apretar Cancel
    ActiveSheet.PivotTables(strPivotName).PivotCache.Refresh

    Exit Sub

errCancel:
Exit Sub

End Sub


En una hoja con varias tablas dinámicas funciona así



El problema con esta macro es que debemos recordar el nombre de las tablas dinámicas. Como pueden ver, el diálogo que se abre tengo que introducir el nombre “TDin1” que identifica a la tabla en cuestión, lo cual puede conducir a errores. Y ya que estamos, unas palabras sobre los nombres de las tablas dinámicas.

Cuando creamos una tabla dinámica, Excel le asigna un nombre por defecto “TablaDinámicaX” donde X es un número de orden. Usando el menú de opciones de las tablas dinámicas podemos cambiar este nombre por algo más significativo (útil en particular cuando escribimos código)



Volviendo a nuestro tema, era obvio que había que escribir un código que permitiera al usuario elegir que tablas o tablas actualizar.

Par lograr esto ya no podemos depender de la función Input, que tiene muchas limitaciones. En su lugar usamos un ListBox que tiene la ventaja de poder realizar selecciones múltiples. Este objeto tenemos que ponerlo en un Userform y crear los eventos para accionarlo y cancelarlo.

El primer paso es crear una Userform donde ponemos los controles List Box y dos CommandButton



Un doble clic en el Userform nos lleva al módulo correspondiente donde ponemos los códigos para manejarlo

Private Sub cbtAceptar_Click()
    ufListaTablas.Hide
End Sub

Private Sub cbtCancelar_Click()
    Unload Me 'ufListaTablas
End Sub


Ahora, en un módulo común ponemos el código de la macro

Sub actualizar_Tabla_Dinamica()
    Dim pt As PivotTable
    Dim lbItemsCount As Integer
    Dim iX As Integer
  
    'poner los nombres de las tabla en un List Box
    With ufListaTablas.lbPivots
        .Clear
        For Each pt In ActiveSheet.PivotTables
            .AddItem pt.Name
        Next pt
        lbItemsCount = .ListCount
    End With
  
    'abrir el List Box para elegir la tabla a actualizar
    ufListaTablas.Show
  
    On Error GoTo errCancel 'en caso de apretar Cancel
  
    With ufListaTablas.lbPivots
    For iX = 0 To lbItemsCount - 1
        If .Selected(iX) = True Then
            ActiveSheet.PivotTables(.List(iX)).PivotCache.Refresh
        End If
    Next iX
    End With
    
    Unload ufListaTablas
  
    Exit Sub
  
errCancel:
Exit Sub

End Sub



El ListBox muestra las tablas dinámicas de la hoja activa y nos permite elegir cuáles actualizar.
Para que la macro pueda usarse en cualquier cuaderno abierto sugiero guardarla en el cuaderno Personal y crear una icono en la barra de herramientas de acceso rápido.

El cuaderno con el ejemplo puede descargarse aquí.

martes, enero 08, 2013

Evaluación de Able2Extract – convertir PDF a Excel

La gente de Investintech me pide hacer una evaluación de la herramienta Able2Extract, para lo cual tuvieron la gentileza de proveerme con una copia de la aplicación.

Mi evaluación se limita a las primeras impresiones del uso de la herramienta para extraer datos de documentos PDF a Excel. Empecemos por activar el programa



Able2Extract tiene un sistema de ayuda incorporado que resulta muy útil en los primeros usos.

Como pueden apreciar en la imagen, Able2Extract puede convertir archivos PDF a un buen número de formatos: Word, PowerPoint, HTML y más.

Todo lo que hay que hacer es abrir el archivo PDF que queremos convertir o del cual queremos extraer datos, señalar la opción de selección (Select), todo el documento a algún área, y finalmente el tipo de archivo (Excel, Word, etc.). La posibilidad de elegir un área determinada resulta muy útil cuando queremos extraer una tabla rodeada de texto, por ejemplo.

Una vez que pulsamos el icono de la opción podemos elegir el tipo de conversión: automática o definida por el usuario (custom).



En mis pruebas la conversión fue rápida y exacta.

Otras características importantes son la capacidad de procesar lotes de archivos (batch) y el uso de plantillas (template). El uso de plantillas es útil cuando volvemos sobre la misma conversión con frecuencia. Para usar plantillas debemos primero crearlas (usando la opción “custom”) y guardarlas.

El programa contiene un menú de opciones (View-Options) que permite definir y manejar los parámetros de conversión. Por ejemplo forzar el tipo de archivo Excel en la conversión (.xls o ,xlsx, útil cuando tenemos instaladas en nuestra máquina más de una versión de Office).

En resumen, de todos los programas de conversión de archivos PDF que he probado, Able2Extract8 es en mi opinión el más completo y funcional. Sin lugar a dudas, una gran ayuda para todo usuario de Excel que tenga que extraer datos de archivos PDF.

Investintech ofrece dos versiones de Able2Extract: Converter y Professional. Esta última permite procesar PDF escaneados. También se puede descargar una copia de evaluación gratuita, válida sólo por siete días.