lunes, noviembre 30, 2015

Las funciones CARACTER y CODIGO de Excel

Allí por marzo de esta año publiqué una nota sobre "funciones raramente usadas en Excel". Integraban la lista, entre otras TIPO, SIGNO y RESIDUO. En agosto publique dos notas adicionales sobre las funciones CELDA y DELTA.
En este post hablaré sobre otras dos funciones que en mi opinión, raramente sufren de fatiga por uso: CARACTER y su inversa, la función CODIGO.

La descripción de la función CARACTER en excel reza: "devuelve el carácter especificado por el número de código del juego de caracteres establecido en su PC".

Así por ejemplo, el caracter perteneciente al número de código 36, en mi PC, es el símbolo $


Se impone la pregunta, ¿para qué usar la función si podemos introducir el símbolo usando el teclado? Hay situaciones en las cuales CARACTER es la única posibilidad, en especial cuando concatenamos textos en una celda.
Por ejemplo, tenemos el nombre de un producto y queremos que a continuación, en la misma celda, aparezca el símbolo de Copyright. Este símbolo, cuyo número de código es169, no está asignado a ninguna tecla. Pero podemos agregarlo de esta manera


También el símbolo TM (Trade mark, marca registrada, número de código 153) puede ser agregado de esta manera



Otro uso posible es cuando consolidamos texto de varias celdas en una única pero queremos presentarlo en líneas separadas dentro de la celda. En este caso podemos usar CARACTER(10), como se ve en este ejemplo (prestar atención que hemos aplicado "Ajustar Texto")

Otros dos códigos útiles son el 32 (espacio) y el 34 (comillas). Por ejemplo, si queremos introducir en una celda el texto Julio "Fantasma" Juárez


La función CODIGO es la inversa de CARACTER. Usando el caracter como argumento podemos averiguar el número de código. Así, la fórmula =CODIGO(") da como resultado 34.

jueves, noviembre 26, 2015

La función TEXTO de Excel

Para crear y modelar nuestros informes Excel cuenta con una gran cantidad de herramientas. Muchas ocupan un lugar de privilegio, como las tablas dinámicas y los gráficos, y otras pasan desapercibidas, tal vez, por gran parte de los usuarios.
Una de estas es la función TEXTO(). Esta función nos permite mostrar un valor como texto con un formato, numérico, de fecha o de hora, específico. Veamos como podemos usar esta función en nuestros informes.
La tabla a la izquierda resume las ventas de los primeros 10 meses del año. La celda E2 contiene esta fórmula ="Total de ventas al presente: "&$C$13

Podemos ver que a pesar de que el valor en la celda C13 tiene formato numérico, en el texto de la celda E2 aparece sin formato. Para mostrar el texto con formato numérico usamos la función TEXTO que tiene dos argumentos: la referencia al valor y el formato a aplicarle. En nuestro caso 

="Total de ventas al presente: "&TEXTO($C$13,"#,##0")


Podemos ir un poco más lejos e incluir un cálculo dentro de la función


Aquí estamos anidando la función SUMA dentro de TEXTO. De la misma manera podemos usar la función PROMEDIO 


El argumento formato es la clave del formato tal como podemos ver en la lista de formatos numéricos



La clave del formato podemos copiarla de la ventanilla "Tipo" y pegarla en nuestra fórmula.

jueves, noviembre 05, 2015

Como crear una presentación Power Point a partir de un cuaderno Excel

Empiezo este post con una aclaración: la autoría del concepto de esta nota y del código son de Mike Alexander y fue publicado en su blog hace unos años atrás.

Como muchos de los posts de este blog, la idea surgió a partir de la inquietud de uno de mis colegas de trabajo. Como muchos de los lectores de este blog, mi colega recoge, transforma, analiza datos y finalmente crea reportes. Estos reportes incluyen, además de tablas, gráficos. El producto final suele ser una presentación PowerPoint, donde pega los gráficos que quiere presentar.
La tarea de pasar los gráficos de Excel a la presentación PowerPoint puede ser engorrosa y tiene sus bemoles, ya sea que los peguemos como imágenes o los liguemos al cuaderno Excel.
Con un poco de código Vba podemos automatizar el proceso de crear una presentación PowerPoint a partir de un cuaderno Excel.

La idea central es crear un cuaderno donde manejamos los datos de los gráficos. Luego creamos hojas, una para diapositiva de la presentación, definiendo el rango de celdas que contiene el gráfico y los elementos que queremos que aparezcan en la diapositiva. El rango debe ser el mismo para todas las hojas. También podemos crear una hoja para el título (la primer diapositiva).

En este ejemplo he creado un cuaderno con cuatro hojas, una para el título de la presentación y las tres restantes para mostrar las ventas por mes de las sucursales


El rango D1:O24 contiene lo que queremos que aparezca en cada una de las diapositivas de la presentación.

Finalmente activamos el código siguiente que creará una presentación de PowerPoint, con una diapositiva por cada hoja del cuaderno:


Sub WorkbooktoPowerPoint()

'Paso 1:  Declarar variables
    Dim pp As Object
    Dim PPPres As Object
    Dim PPSlide As Object
    Dim xlwksht As Worksheet
    Dim MyRange As String
    Dim MyTitle As String
    Dim SlideCount As Integer

'Paso 2:  Abrir PowerPoint, agregar una nueva presentacion
         'y volverla visible visible
    Set pp = CreateObject("PowerPoint.Application")
    Set PPPres = pp.Presentations.Add
    pp.Visible = True
 

'Paso 3:  Definir el rango de las hojas que contiene la diapositiva
    MyRange = "D1:O24"

'Paso 4:  Empezar el loop por las hojas del cuaderno
    For Each xlwksht In ActiveWorkbook.Worksheets
    xlwksht.Select
    Application.Wait (Now + TimeValue("0:00:1"))

'Paso 5:  Copiar el rango como imagen
    xlwksht.Range(MyRange).CopyPicture _
    Appearance:=xlScreen, Format:=xlPicture

'Paso 6:  Contar las diapositivas y agregar una nueva
        '(el numero 12 representa la enumeracion para una
        'diapositiva en blanco)
    SlideCount = PPPres.Slides.Count
    Set PPSlide = PPPres.Slides.Add(SlideCount + 1, 12)
    PPSlide.Select
        
'Paso 7:  Pegar la imagen y ajustar la posicion
    PPSlide.Shapes.Paste.Select
    pp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
    pp.ActiveWindow.Selection.ShapeRange.Top = 50
    pp.ActiveWindow.Selection.ShapeRange.Left = 1
    pp.ActiveWindow.Selection.ShapeRange.Width = 700

 
    Next xlwksht
     
'Paso 8:  Limpiar la memoria
    pp.Activate
    Set PPSlide = Nothing
    Set PPPres = Nothing
    Set pp = Nothing
              
End Sub


Este video muestra el proceso de creación de la presentación