2014-02-24

Crear una lista personalizada mediante VBA

Anteriormente, vimos como crear listas personalizadas para crear una lista alfabética. Esta vez vamos a utilizar VBA para crear una sencilla subrutina que crea una lista personalizada con el rango seleccionado. Será particularmente útil si tenemos que crear varias listas, sin seguir la enrevesada ruta para hacerlo manualmente.

1. Escribimos el siguiente código en un módulo.
Sub Crear_lista_personalizada()
Application.AddCustomList Selection
End Sub
2. Seleccionamos el rango que compondrá los elementos de la lista.
3. Presionamos Alt+F8.
4. Seleccionamos Crear_lista_personalizada y clic sobre ejecutar.
5. La lista estará creada. Para usarla, escribimos en una celda un elemento de la misma y arrastramos el controlador de relleno.


Es importante señalar que el rango seleccionado debe de contener valores y no fórmulas. En caso contrario nos mostrará el error:

 

Entradas relacionadas:
Crear una lista alfabética automáticamente

2014-02-20

Editando y ejecutando código en RStudio

Title

Introducción

Al abrir RStudio en la consola aparece el símbolo > que nos indica que R está preparado para ejecutar código. Podemos escribirlo directamente en la consola y ejecutarlo al presionar Entrar. No obstante, en RStudio es recomendable usar el editor de código (source editor) para escribir y la consola para ejecutarlo.

Abrimos un R Script nuevo, File> New> R Script, para escribir nuestro código. Para ejecutar una línea situamos el cursor en la misma (o seleccionamos el bloque de texto que deseamos ejecutar) y presionamos Ctrl+Entrar o el botón Run.

En el editor de código disponemos de una pestaña para cada fichero abierto. También encontramos dos iconos: Find and Replace (Ctrl+F) y Code Tools. Con el primero buscamos y reemplazamos texto, con Code Tools accedemos a varias herramientas para editar nuestro código: completar automáticamente el código (Tabulador), obtener ayuda (F1), ver la definición de una función (F2) o convertir código en comentarios y viceversa (Ctrl+Mayús+C) por mencionar algunos.



Otros comandos en RStudio:

Ctrl+O - Abre un documento
Ctrl+Mayús+N - Crea un documento nuevo: R Script
Ctrl+S - Guarda el documento activo
Ctrl+2 - Situa el cursor en la consola.

Escribiendo código por primera vez

R admite operadores aritméticos como: + - = / * . Los dos puntos : son el operador para generar secuencias.

1 + 1  # Usamos R como una calculadora
## [1] 2
1:10  # Secuencia del 1 al 10 
##  [1]  1  2  3  4  5  6  7  8  9 10
letters[1:10]  # Secuencia de la 'a' a la 'j'
##  [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"

En la consola:

▲▼ Con las flechas de dirección navegamos el historial del código ejecutado.
Tabulador - Completa el código.
Esc - Borra el código escrito.
Ctrl+L - Limpia la consola.

Asignación

En R el operador para asignar es <- (menor que y signo menos). Se puede obtener presionando Alt+-. El símbolo < indica hacia el objeto al que asignamos el valor de una expresión. Si el objeto ya existe se sobreescribe. Los objetos creados permanecen la memoria de R y RStudio los muestra en (Environment, anteriormente Workspace)

resultado <- 1 + 1  # Creamos el objeto: resultado
resultado  # Escribimos el nombre del objeto para mostrarlo
## [1] 2
edit(resultado)  # Invoca el editor de texto. No permite cambiar el objeto
fix(resultado)  # Sí permite cambiar el objeto

Función c

La función c (combine) combina varios elementos en un vector.

x <- c(1, 9, 7, 7)  # Creamos el vector x
x  # Mostramos x
## [1] 1 9 7 7
x[2]  # Obtenemos el segundo elemento del vector x
## [1] 9
R tiene algunas palabras reservadas y algunas letras, que aunque no reservadas, no conviene utilizar: c, q, s, t, C, D, F, I, y T. Las cadenas de texto se delimitan con comillas simples o dobles. R distingue entre mayúsculas y minúsculas.

y <- c("n", "u", "b", "e")  # Creamos el vector x
y  # Mostramos x
## [1] "n" "u" "b" "e"
Y  # Y mayúscula genera un error pues no existe
## Error: object 'Y' not found

Panel superior derecho de RStudio


Muestra los objetos creados en la pestaña Environment y el historial del código ejecutado en la consola en History. Desde aquí también se pueden eliminar objetos y borrar líneas. Desde History podemos seleccionar líneas de código y copiarlas en la consola (To Console) o en el R Script activo (To Source)

Funciones básicas para comenzar

ls()  # Lista los objetos disponibles en el entorno de trabajo.
list.files()  # Lista los ficheros dentro del directorio de trabajo.
rm(x)  # Elimina el objeto x de la memoria.
rm(list = ls())  # Limpia todos los objetos del entorno de trabajo (Environment).
q()  # Finaliza la sesión actual de R.

2014-02-16

Medir el tiempo de ejecución de subrutinas en VBA

En VBA tanto en Access como en Excel, podemos medir el tiempo transcurrido desde que se inició la subrutina hasta un punto determinado. Para mostrar el tiempo usamos la función MsgBox.
Option Explicit
Sub NuestraSubrutina()
  Dim t As Single 'Inicia el cronómetro
  t = Timer
  'NUESTRO CÓDIGO
  MsgBox Timer - t, vbInformation, "Segundos" ' Muestra el tiempo transcurrido
End Sub
El mensaje será:

Entradas relacionadas:
Mensaje emergente al abrir un fichero Ms Excel.

2014-02-13

Distribución de frecuencias en Ms Excel

Title

Problema

Al igual que en la entrada anterior, queremos calcular  la distribución de frecuencias para una serie de datos. En nuestro ejemplo, tenemos una tabla con las fechas de nacimiento de 100 personas. Queremos mostrar el número de personas nacidas en cada intervalo: <1923, 1923-1932, 1933-1942, etc.

Solución

  1. Determinamos la amplitud del intervalo.
  2. Calculamos la diferencia entre la fecha de nacimiento mínima y máxima, y la dividimos entre el número de intervalos deseados, 10 en nuestro caso. El rango de cada intervalo es de aproximadamente 10 años.


  3. Creamos una tabla con 3 columnas.
  4. Grupos: los intervalos dentro de los cuales deseamos agrupar los valores.
    Intervalos: con los nombres de los grupos.
    Frecuencia: seleccionamos el rango F2:F11, presionamos F2, introducimos la fórmula matricial FRECUENCIA y presionamos Ctrl+Mayús+Entrar.

    Hemos creado a propósito un grupo menos (9) que el número de intervalos devueltos (10). Esto es así porque como indica la documentación:

    El número de elementos de la matriz devuelta supera en una unidad el número de elementos de grupos. El elemento adicional de la matriz devuelta devuelve la suma de todos los valores superiores al mayor intervalo.

  5. Gráfico.

Entradas relacionadas

2014-02-09

Distribución de frecuencias en Ms Access

En estadística, la distribución de frecuencias muestra una agrupación de datos en categorías mutuamente excluyentes y el número de observaciones en cada categoría. En nuestro ejemplo, tenemos una tabla con las fechas de nacimiento de 100 personas. Queremos mostrar el número de personas nacidas en cada intervalo: 1913-1922, 1923-1932, 1933-1942, etc.

Para determinar la amplitud del intervalo, calculamos la diferencia entre la fecha de nacimiento mínima y máxima, y la dividimos entre el número de intervalos deseados, 10 en nuestro caso. El rango de cada intervalo es de aproximadamente 10 años.

Consulta para calcular la amplitud del intervalo
1. Creamos una tabla definiendo los intervalos.

Escribimos los nombres del campo Intervalo y los rangos de los intervalos en Min y Max:


Es importante señalar que el máximo de un intervalo no debe ser idéntico al mínimo del siguiente. Hay un día de diferencia. En caso contrario, correríamos el riesgo de que un dato se encuentre en ambos intervalos.

 2. Consulta de selección para calcular la distribución de frecuencias.

Añadimos las tablas Intervalos y Datos. No establecemos una combinación explícita entre ambas (combinación cruzada):

   - De Intervalos añadimos el campo Intervalos con los nombres de los mismos. 
   - De Datos añadimos el campo Id para contar el número de observaciones y Fecha para especificar el criterio que relaciona ambas tablas: Entre [Min] Y [Max]

3. Gráfico.


Entradas relacionadas:
Distribución de frecuencias en Ms Excel
Distribución de frecuencias en R

2014-02-05

Listas numeradas en Google Docs

En Word usando listas numeradas, si insertamos un párrafo y apretamos el botón Numeración, la lista numerada continua con el siguiente elemento de la misma. En cambio, a día de hoy, Google Docs comienza la numeración en 1 tras cada párrafo.

Para corregir la secuencia de numeración en Google Docs:

1. Clic con el botón secundario del ratón y elegimos Volver a empezar la numeración.

2. En la ventana emergente, escribimos el número correspondiente y clic en Aceptar.

2014-02-02

Sistemas de ecuaciones lineales en Excel: ESTIMACION.LINEAL

Una alternativa para resolver sistemas de ecuaciones lineales es usar la función ESTIMACION.LINEAL. Por ejemplo:

2x + 3y + 3z = 20
  x + 4y + 3z = 15
5x + 3y + 4z = 30


En Conocido_y, seleccionamos el rango b.
En Conocido_x, seleccionamos el rango A.


Al ser una fórmula matricial, selecciona el rango (tres celdas contiguas horizontalmente, p.ej.: I21:K21), inserta la fórmula y presiona Ctrl+Mayús+Entrar.

Si quisiéramos los coeficientes (x, y, z) en el orden correcto introducimos:
=INDICE(ESTIMACION.LINEAL($E$21:$E$23;$A$21:$C$23;0);1;COLUMNAS(A21:$C21)) 
Y arrastramos la fórmula dos celdas a la derecha.

Entradas relacionadas:
Sistemas de ecuaciones lineales en Excel
Nube de datos