miércoles, noviembre 28, 2012

Convertir documentos PDF a Excel

Aclaración: esta nota no es publicidad paga y tampoco implica ninguna recomendación por mi parte a hacer uso de los servicios, gratuitos o pagos, ofrecidos por el sitio.

El sitio PDFConverter.com permite convertir documentos PDF a Excel y también a otros formatos de Office como PPT y DOC.

El procedimiento es sencillo: seleccionamos el archivo PDF a convertir, introducimos la dirección mail donde queremos recibir el archivo convertido y apretamos al botón Start



El peso del archivo no debe superar los 2MB.

Después de unos minutos, recibimos un mail con un enlace para descargar el archivo convertido.

El sitio puede resultar útil cuando recibimos informes en forma de documento PDF y queremos extraer datos a una hoja.

El sitio ofrece otras aplicaciones, éstas pagas, como PDF Converter Elite, que promete permitir crear, editar y convertir todo tipo de PDF a un costo menor que Adobe Acrobat.

sábado, noviembre 24, 2012

Calcular al número de semana dentro del trimestre

En un comentario en la nota Calcular trimestres con Excel me pregunta un lector:

¿existe alguna fórmula que permita calcular el número de semana, pero no anual, sino dentro de un trimestre?

Excel no tiene una función nativa para este cálculo, pero podemos crear una fórmula como ésta:

=NUM.DE.SEMANA(A2)-NUM.DE.SEMANA(BUSCAR(A2;FECHA(AÑO(A2);{1;4;7;10};1)))+1

Esta imagen muestra algunos ejemplos



Así, por ejemplo, el 25/05/2012 corresponde al segundo trimestre del año; es la semana número 21 del año pero la octava semana del trimestre.

La idea de la fórmula es restar el número de semanas transcurridas hasta el primer día del semestre en cuestión del número de semana en el año de la fecha buscada.

Esta fórmula funciona así:

1 - =NUM.DE.SEMANA(A3) calcula el número de semana del año, en nuestro caso 21.

2 - BUSCAR(A3;FECHA(AÑO(A3);{1;4;7;10};1)) calcula el primer día del trimestre correspondiente a la fecha en A3. La expresión FECHA(AÑO(A3);{1;4;7;10}; crea una matriz con los primeros días de cada trimestre ({1;4;7;10} es una constante matricial). Así para la fecha 25/05/2012, esta fórmula da como resultado 01/04/2012.

3 - NUM.DE.SEMANA(BUSCAR(…) calcula el número de semana del primer día del semestre; en nuestro ejemplo, 14.

4 – Restamos este último resultado del número de semana en el año y sumamos uno para corregir el resultado.

martes, noviembre 06, 2012

Generar muestras aleatorias en Excel

Supongamos que tenemos una lista de nombres como esta (la lista contiene 100 nombres propios)


y queremos extraer una muestra aleatoria de diez nombres.

En Excel podemos hacerlo con facilidad usando la función ALEATORIO.ENTRE para generar números aleatorios y usando este resultado como argumento en la función INDICE. Por supuesto tendremos que superar algunos inconvenientes, como, por ejemplo, números repetidos.

Empezamos por crear un nombre definido que re refiere al rango que contiene la lista (la población, en términos estadísticos)



En la hoja donde queremos que aparezca la muestra creamos una matriz que contenga los nombres (D4:E14 en nuestro ejemplo) y en el rango A5:A14 creamos una columna auxiliar con la fórmula

=ALEATORIO.ENTRE(1,CONTARA(Lista))



La fórmula que extrae los nombre en el rango E5:E14 es

=INDICE(Lista,A5)

donde "Lista" es el nombre que acabamos de definir.

Ahora basta con apretar F9 (Recalcular) para obtener una nueva muestra.

El problema con este modelo es que los números aleatorios no son únicos, es decir, pueden repetirse y por lo tanto generar nombres repetidos.

Para evitar esto creamos un mecanismo que verifique si hay números repetidos y en caso afirmativo, vuelva a calcular. Por supuesto, tendremos que usar macros.

En B5:B14 creamos un rango auxiliar con la fórmula

=CONTAR.SI($A$5:$A$14,A5)

Si el número aparece una única vez en el rango, el resultado es 1; en caso contrario será mayor que 1. Por ejemplo, en este caso el número 75 aparece dos veces y por lo tanto el nombre Cristian aparece dos veces en la muestra



En la celda B15 agregamos la fórmula " =SUMA(B5:B14)". Creamos el nombre definido " ControlValoresUnicos" que se refiere a esta celda. Si todos los números aparecen una única vez, el valor de la celda será 10; si es mayor de 10, sabemos que hay números repetidos.

Para automatizar esta operación usamos esta macro que ponemos en un módulo común del editor de Vb

Sub valores_unicos()

    Calculate
    While Range("ControlValoresUnicos") <> 10
        Calculate
    Wend
  
End Sub


La primer línea del código recalcula la hoja; luego la estructura While…Wend sigue recalculando hasta que la celda " ControlValoresUnicos" contiene el resultado 10.

El último paso es ocultar las columnas auxiliares y agregar un botón de la colección de Formularios de manera que el usuario puede generar una nueva muestra apretando este botón



El archivo con el ejemplo puede descargarse aquí