martes, junio 21, 2016

Eliminar estilos en Excel

En el pasado hemos hablado de las bondades de los estilos en Excel. Pero al lado de las bondades convive un problema como el que me consulta un lector:
Pegué en un documento de Excel una celda de otro documento que contenía estilos, ahora han surgido variantes y duplicados de ese estilo y tengo alrededor de 800 estilos parásitos en mi documento, ¿hay alguna forma de eliminarlos todos de un tirón?

Cuando copiamos una celda formada con estilos, tal como describe mi lector, el cuaderno “hereda” los estilos del cuaderno de origen. De manera que si empezamos con los estilos pre-definidos


después de pegar algunas celdas de otros cuadernos podermos encontrarnos con ese cuadro


Excel no tiene un método directo para eliminar todos o parte de los estilos personalizados. Podemos eliminar cada uno por separado apuntando al estilo con el mouse y abriendo el menú contextual


Si queremos eliminar más de tres o cuatro estilos personalizados tendremos que echar mano a las macros.


Sub eliminar_estilos_1()
    Dim Estilo As Style
 
    For Each Estilo In ActiveWorkbook.Styles
        If Not Estilo.BuiltIn Then
        Estilo.Delete
        End If
    Next Estilo
 
End Sub


Esta macro elimina todos los estilos personalizados (aquellos que no sean "BuiltIn").
Si queremos eliminar sólo algunos de los estilos y dejar otros tendremos que modificar la macro de esta manera


Sub eliminar_estilos_2()
    Dim Estilo As Style
    Dim EstElegido As Integer

    For Each Estilo In ActiveWorkbook.Styles
        If Not Estilo.BuiltIn Then
            EstElegido = MsgBox("Eliminar el estilo '" & Estilo.Name & "'?", vbYesNo)
            If EstElegido = vbYes Then Estilo.Delete
        End If
    Next Estilo
  
End Sub




miércoles, mayo 18, 2016

Office 365 y PowerPivot

En mi post sobre Excel 2016 no mencioné que la nueva versión de Office, con Excel incluido, viene en dos variantes fundamentales: la clásica “Desktop” y Office 365 que funciona por suscripción.

No me voy extender en consideraciones sobre las distintas versiones, pero si señalar ciertas diferencias que, en un primer momento, pueden confundir a los usuarios.

Mi primer contacto con Excel 2016 fue a través de la versión de escritorio y la primer sorpresa fue que no tiene actualizaciones automáticas (y parece ser que tampoco manuales). Como señalaba en el post, las nuevas funciones incorporadas a Excel Online y a la versión por suscripción, no aparecen en la versión de escritorio. Lo cual no deja de ser curioso ya que la versión online es gratuita y la de escritorio, obviamente, no.

Hace unos días recibí un mail de Microsoft, al igual que todo quien tenga una cuenta de Onedrive, sobre el cambio de política en lo que respecta al espacio gratuito en la nube. El mail traía una “propuesta que no se puede rechazar”: adquirir una suscripción de Office 365 y recibir un terabyte de espacio en Onedrive, o verse reducido a 5 gigabytes. 
Dadas las circunstancias y ya que el precio de la suscripción no es excesivo (100 dólares al año), compre la suscripción a la versión Home del Office 365 que permite implementarla en cinco máquinas.

Una vez instalado el Office 365, Excel se ve tal como Excel 2016 y muy similar a Excel 2013. La primer sorpresa fue cuando noté que no incluía PowerPivot,



a diferencia de Excel 2013




y de la versión 2016 de escritorio


La situación es que PowerPivot ha desaparecido de casi todas las versiones de Office 365. PP está incluido en Office 365 ProPlus, Office 365 E3 y Office 365 E4. En todas las otras versiones (Home, Personal, Business, Business Premium, etc.) no está. Y esto no deja de ser sorprendente ya que las versiones “básicas” (Home, Personal, etc.) incluyen Access y algunas versiones “business” no.

Mi primera conclusión: quien necesite el almacenamiento en Onedrive, el "cebo" de un terabyte puede justificar la compra de la suscripción, en particular si no se hace uso de PowerPivot (Power Query está incorporado plenamente).
Para quien trabaje con PowerPivot la mejor opción parece ser quedarse en Excel 2013 o Excel 2010. 

miércoles, mayo 04, 2016

Extraer el primer valor numérico de un rango mixto

Este post viene a colación de una consulta sobre cómo extraer con fórmulas el primer valor numérico en un rango mixto (rango que contiene celdas con texto y celdas con números).

En un post de hace varios años atrás mostramos como encontrar el primer número positivo o negativo en un rango. En el post la suposición era que todos los valores en el rango son numéricos, pero mi lector tenía que resolver el problema para un rango con texto y valores numéricos.

La solución es similar a la propuesta en la nota mencionada: usar INDICE con COINCIDIR en forma matricial, pero con un detalle: usar ESNUMERO para evaluar qué valores en el rango son numéricos y cuáles no.


En este ejemplo

calculamos extraemos el primer valor numérico en cada fila con esta fórmula

=INDICE(D3:K3,COINCIDIR(VERDADERO,ESNUMERO(D3:K3),0))

Tal como indicamos antes la fórmula es matricial, es decir, se introduce apretando simultáneamente Ctrl-Mayúsculas-Enter.

Usando la Evaluar Fórmulas podemos ver cómo funciona esta fórmula


La función ESNUMERO crea un vector de valores VERDADERO o FALSO según los datos del rango evaluado sean numéricos o textuales. COINCIDIR encuentra la posición del primer VERDADERO y el resultado es el argumento de posición en la función INDICE