2009-04-01 9 views
8

Aquí está uno para Joel ...mejores ejemplos cortos de la necesidad de Excel VBA

Busco la manera de demostrar a un usuario de Excel (sin experiencia en programación) cómo aprender un poco de Excel VBA puede hacer su vida laboral con Excel un poco más fácil.

Las primeras ideas son utilizar un ejemplo que replica el ajuste manual de una hoja de cálculo, como el formato condicional de un clic de todos los datos. Por ejemplo: resaltar todos los números rojo, naranja o verde de acuerdo con los umbrales de entrada del usuario junto con algunos otros datos derivados, como la semana comercial actual.

Espero que un ejemplo VBA tan corto no sea demasiado difícil de entender para alguien que nunca antes haya escrito una línea de código y, con un poco de suerte, trate de aprender un poco de Excel VBA.

Sin embargo, con este ejemplo, el tiempo necesario para codificarlo no es mucho más rápido que aplicar el formato condicional manualmente en Excel. Entonces, me gustaría saber si alguien en la comunidad tiene ejemplos más elegantes que demuestren las ventajas de usar Excel VBA.

ejemplos ideal tendría las siguientes características:

  1. ahorros de tiempo significativos (grande T, donde T = tiempo de procedimiento manual/hora para el código).
  2. Ejemplos de hoja de cálculo no abstractos y cotidianos.
  3. Resultados finales que no pueden ser fácilmente logrados manualmente.
  4. Alcanzable con código VBA corto y básico.

Tenga en cuenta que el público objetivo está dando sus primeros pasos en la programación.

+0

Simplemente no olvide que: "el mejor macro no es macro" (del prefacio de un viejo libro de MS). Y eso es verdad ... ¡Cuántas veces he visto a personas reinventar la rueda, porque no conocían las características disponibles en Excel! por ejemplo: Goto Special. Los mejores desarrolladores de VBA son aquellos que conocen las posibilidades internas de Excel. –

Respuesta

2

Cree su propia "función" con VBA que pueda usar como otra función dentro de la hoja.

Puede hacer cosas que no son posibles en Excel simple, o muy difíciles de implementar o reutilizar.

Un ejemplo:

En VBA crear un nuevo módulo, agregue código como este:

Public Function SizeOfFile(a As String) 
    SizeOfFile = VBA.FileLen(a) 
End Function 

Y ahora se puede utilizar SizeOfFile en una fórmula en una celda.

Si la celda A1 contiene el nombre de un archivo, B1 complete con =SizeOfFile(A1) para obtener el tamaño.

también

le puede mostrar la grabación (y edición) una macro, repetir los pasos que se hacen a menudo.

1

Mis primeros pasos tentativos en VBA se tomaron después de unirme a una empresa y vi que uno de mis nuevos equipos pasaba 30 minutos cada mañana compilando un informe de una lista de aproximadamente 1.000 artículos que necesitaba filtrado automático de diferentes maneras para producir el recuentos requeridos. Unas pocas horas trasnochando con VBA hicieron que la tarea se redujera a un clic y alrededor de un segundo.

Cualquier cosa como esta que involucre un ciclo va a satisfacer sus primeros criterios de ahorro de tiempo significativo. ¿Tal vez una tarea que implica extraer los códigos de área o números de casa de una lista de 200 números de teléfono o direcciones?

11

Si puede, mire cómo usan Excel durante 1/2 hora y encontrará la oportunidad perfecta. Cuando abren esa única hoja de cálculo, configuran automáticamente todas las columnas, dan formato a col A como fecha, justifican a la derecha col J, eliminan las filas 2 a 5 y cambian la orientación de impresión a horizontal y luego encuentran un ganador. Haga que lo vuelvan a hacer, pero con la grabadora de macros encendida. Luego, reproduzca la grabadora de macros.

Al trabajar con algo que usan en la vida real, tendrá más impacto.

No tiene que guardarlos 1/2 hora por día con la primera toma. Ahorre 30 segundos de trabajo pesado en algo que usarán y comenzarán a pensar en todas las cosas que quieren automatizar. En mi experiencia, irán por la borda bastante rápido. En poco tiempo, querrán que Excel complete un formulario web, importe la información y obtenga un café.

2

¿La gente en el público objetivo potencia a los usuarios?

Si es así, ¿qué tal combinar datos de múltiples libros de trabajo utilizando referencias externas? No estoy seguro de si las referencias externas son la mejor manera de hacerlo, y no estoy seguro de lo difícil que sería para alguien nuevo en VBA, pero eso es lo que terminé haciendo en el pasado.

Ejemplo 1

Hay muchos archivos de Excel después de una convención de nomenclatura:

c:\data1.xls 
    c:\data2.xls 
    c:\data3.xls 

que quería ser capaz de entrar en los números de identificación en una columna y tener una VBA para obtener los datos para mí para todas las otras columnas. Elegí hacer esto con referencias externas porque entonces no tenía que preocuparme por abrir y cerrar archivos y preocuparme acerca de si esos archivos existían o no.

yo quería que el resultado de tener este aspecto:

id  data  hyperlink 
    1  extRefA1 c:\data1.xls 
    3  extRefA1 c:\data3.xls 
    500 extRefA1 c:\data500.xls 

no necesitaba VBA para hacer un hipervínculo, pero no pude encontrar una manera fácil de hacer referencias externas sin VBA. Intenté usar INDIRECT, pero el libro de referencia se tuvo que abrir para que INDIRECT funcione. Entonces, utilicé VBA para crear las referencias externas.

Ejemplo 2

Éste es similar al Ejemplo 1, pero tenía que combinar diferentes datos del gráfico.

Los datos de cada archivo de Excel estaban en columnas:

X Y 
    1 5 
    2 10 
    3 5 
    4 60 

I querían los datos del gráfico combinados en filas:

  1 2  3 4 
    data1 5 10 5 60 
    data3 30 60 4 2 
    data500 25 45 20 5 

así que hice una VBA que puso una matriz fórmula que contiene una referencia externa en un TRANSPOSE.

La fórmula de matriz datos1 parecía algo como esto:

=TRANSPOSE('c:\[data1.xls]Sheet1'!$B$2:$B$5) 

No sé cómo otros utilizan Excel y VBA, pero estos demostrado ser extremadamente útil para mí.

Francis