La función MONEDA de Excel

miércoles, septiembre 10, 2014

¿Alguien usó alguna vez la función MONEDA de Excel? La función MONEDA y sus dos "primas hermanas" MONEDA.FRAC y MONEDA.DEC pertenecen esa colección de funciones que ni siquiera sabíamos que existen.

Según la ayuda en línea de Excel el objetivo de la función MONEDA es convertir un número en texto usando formato de moneda


Introducimos un número (o referencia a una celda que contiene un número), definimos la cantidad de decimales y el resultado es el número precedido por el símbolo de la moneda (de acuerdo a las definiciones del sistema). Lejos de ser la función más sofisticada de Excel.

Las mencionadas "primas" tienen usos que pueden ser útiles en ciertas circunstancias. EL objetivo original de la función MONEDA.FRAC, siempre de acuerdo a la ayuda en línea de Excel, es:

Convierte una cotización de un valor bursátil, expresada en forma decimal, en fraccionaria. Use MONEDA.FRAC para convertir números decimales de moneda, como precios de valores bursátiles, en fracción.
En lugar de intentar explicar el significado de la definición, voy a mostrar un uso posible.

Por lo general los sistema de control de horarios usan la notación decimal. Por ejemplo, 2.5 horas representa 2 horas y 30 minutos; 2.75 representa 2 horas y 45 minutos. La forma decimal puede conducir a confusiones y ya hemos visto cómo convertir esta forma en formato horario:

  1. dividimos 2.75 por 24
  2. cambiamos el formato de la celda a [hh]:mm
  3. el resultado será 02:45

En lugar del formato horario podemos usar MONEDA.FRAC de la siguiente manera

=MONEDA.FRAC(A2,60)


La parte decimal del número muestra ahora los minutos (2 horas, 45 minutos).







Seguir leyendo...

Pasar datos en filas o columnas a una matriz

lunes, septiembre 08, 2014

En un post del año 2008 mostré como pasar los datos de una matriz (tabla bi-dimensional) a una fila o columna. Inmediatamente surge la pregunta: ¿cómo hacemos para pasar los datos de una columna o fila a una matriz de tamaño determinado?

Consideremos este ejemplo:

Queremos tomar los datos en el rango B2:B16 y pasarlos a una matriz de 5 filas y tres columnas tal como vemos en el rango E6:G10.

Si bien podemos hacerlo con fórmulas, vamos a mostrar una solución con macros, solución más flexible y práctica (podemos guardar la macro en el libro Personal y usarla en cualquier cuaderno sin necesidad de recrear las fórmulas en cada oportunidad).

Este video muestra como funciona la macro



El código de la macro es el siguiente:

Sub make_matrix()
    Dim Arr_1()
    Dim lnumRows As Long, lnumCols As Long
    Dim rngDestRange As Range, rngCellDest As Range
    Dim i As Long, j As Long, x As Long
    Dim lCounter As Long
 
     
    If Selection.Count < 4 Then
        MsgBox "Debe seleccionar un rango de por lo menos cuatro celdas", vbExclamation
        Exit Sub
    End If
 
    lnumRows = Application.InputBox("Cuantas filas en la matriz?", "Filas", , , , , , 2)
    lnumCols = Application.InputBox("Cuantas columnas en la matriz?", "Columnas", , , , , , 2)
 
    ReDim Arr_1(1 To lnumCols, 1 To lnumRows)
 
    Set rngCellDest = Application.InputBox("Posicion de la primera celda de la matriz", "Copiar matriz", , , , , , 8)
    Set rngDestRange = rngCellDest.Range(Cells(1, 1), Cells(lnumRows, lnumCols))
 
    lCounter = 0
 
    For i = 1 To lnumCols
        For j = 1 To lnumRows
            Arr_1(i, j) = Selection.Item(lCounter + 1)
            lCounter = lCounter + 1
        Next j
    Next i
 
    rngDestRange.Value = WorksheetFunction.Transpose(Arr_1)
 
 
End Sub


Antes de aplicar la macro debemos seleccionar el rango de las celdas que queremos convertir en matriz. Este rango debe ser unidimensional, fila o columna.

Una vez seleccionado accionamos la macro. En primer lugar la macro comprueba que se haya elegido un rango con por lo menos cuatro celdas (el amable lector me disculpará si no explico la razón de esta condición).

El segundo paso es determinar las dimensiones de la matriz, cuántas filas y cuantas columnas. En nuestro ejemplo el rango contiene 15 celdas, por lo que hemos definido una matriz de 5 x 3. El número de elementos en la matriz equivale al múltiplo de las dimensiones. Así por ejemplo, si definimos en nuestro ejemplo una matriz de 4 x 2, sólo los primeros 8 datos serán pasados a la matriz.

El tercer paso es determinar la posición de la primer celda de la matriz.

Una vez que hemos definido todos los parámetros usamos la orden

ReDim Arr_1(1 To lnumCols, 1 To lnumRows)

para definir un array que contenga los datos que queremos que aparezcan en la hoja.

Luego usamos este loop para introducir los datos en el array

    For i = 1 To lnumCols
        For j = 1 To lnumRows
            Arr_1(i, j) = Selection.Item(lCounter + 1)
            lCounter = lCounter + 1
        Next j
    Next i

El último paso es pasar los datos a la hoja:

rngDestRange.Value = WorksheetFunction.Transpose(Arr_1)

Nótese que usamos Transpose par invertir los datos del array que pasamos a la matriz en la hoja.

El cuaderno con el ejemplo y la macro puede descargarse aquí.

Seguir leyendo...

Generador de facturas con base de datos

martes, agosto 26, 2014

En enero del 2008, hace más de seis años, publique el post "Numerador automático para facturas o recibos en Excel". Entre los distintos problemas del modelo propuesta en la nota, uno de los más mencionados es cómo producir copias de las facturas emitidas.

Para poder producir informes, analizar la ventas o producir copias no necesitamos guardar las facturas sino los datos de las facturas.

El modelo que presento en esta nota cuenta con una plantilla genérica para producir las facturas (o sus copias) y una base de datos (en una hoja) donde se van almacenando los datos de las facturas producidas.

A partir de esta base de datos podemos no sólo producir copias sino también analizar las ventas desde todo tipo de ángulo o combinaciones de ángulos: por cliente, por período, por producto, comparar clientes, comprar productos, etc., usando las distintas herramientas que Excel pone a nuestra disposición como, por ejemplo, tablas dinámicas.

En resumen:


El modelo Generador de facturas de JLD-Excel es una pequeña aplicación desarrollada enteramente en Excel que permite generar facturas, imprimirlas y guardar sus datos.

Con el modelo Factura con base de datos se puede:

·        Producir facturas e imprimirlas.
·        Guardar los datos en una base datos (en una hoja de Excel).
·        Producir copias de las facturas previamente guardadas.

·        Producir informes en base a los datos guardados en la base de datos.

Este video demuestra el uso del modelo




El costo del archivo es de 10 Euros (o su equivalente en otras monedas). Para realizar la compra debe apretar el carrito de compra

Add to Cart

Al apretar el icono será llevado a esta página


Una vez efectuada la compra (apretar el botón "Checkout with PayPal), recibirá un mail con el enlace para descargar el archivo. Por favor, tomar en cuenta que el mail puede demorar hasta 24 horas. En caso de no recibir el enlace dentro de las 24 horas, revisar el spam o ponerse en contacto conmigo directamente.

La descarga de la guía del modelo es gratuita.

El cuaderno y el proyecto Vba no están protegidos con contraseñas y el usuario es libre de modificar y emplear partes del modelo, hojas y códigos.

El modelo no requiere instalación de ningún tipo; sencillamente se guarda como todo archivo Excel. 

Seguir leyendo...

Google+ Followers

Seguidores

Google+ Badge

Términos Legales

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP