Usar variables en el nombre de otra variable?

01/07/2008 - 11:51 por melonero | Informe spam
Hola a todos, me gustaría utilizar variables para nombrar a otra
variable.

Algo parecido a esto:
Dim a as string
Dim b as string
Dim WZXABC as string
Dim WZXBCD as string

a = "ABC"
b = "BCD"

"WZX" & a = "HOLA"
"WZX" & b = "ADIOS"

Alguien sabe como puedo hacer algo así? usar variables en el nombre de
otra variable?

Saludos y muchas gracias.

Preguntas similare

Leer las respuestas

#1 Juan M
01/07/2008 - 12:33 | Informe spam
Hola,

Si no es molestia, podrías indicar para que quieres hacer eso? No le veo
mucho sentido y no se me ocurre para que podría querer una variable que
tengo que construir para darle algún valor, si aportas algún ejemplo real de
lo que en realidad pretendes, te podríamos indicar alguna opción.

Por lo demás, creo que no es posible eso que planteas, pero si hacerlo de
otra forma

Un saludo,
Juan


"melonero" escribió
Hola a todos, me gustaría utilizar variables para nombrar a otra
variable.

Algo parecido a esto:
Dim a as string
Dim b as string
Dim WZXABC as string
Dim WZXBCD as string

a = "ABC"
b = "BCD"

"WZX" & a = "HOLA"
"WZX" & b = "ADIOS"

Alguien sabe como puedo hacer algo así? usar variables en el nombre de
otra variable?

Saludos y muchas gracias.
Respuesta Responder a este mensaje
#2 melonero
02/07/2008 - 10:06 | Informe spam
Es que tengo que recorrer 30.000 clientes de un archivo excel mirando
su código de territorio (80 diferentes). En función de ese código
tengo que mirar una categoría del cliente (A,B,C,D) y en función de
esto (codigo terriotorio y categoria) tengo que llevar un recuento de
clientes activos, del total y un sumatorio de importes y plasmar los
datos en una hoja Excel.

Es decir, tengo que almacenar el dato de cada territorio (80) y de
cada territorio sus 4 categorías y de cada categoría sus clientes
activos, totales y sumatorio de importes.

Resulta que tengo que tener en memoria 960 variables diferentes (80 x
4 x 3) porque tengo que tener guardados los datos mientras recorro las
30.000 filas y utilizar las variables para los cálculos en los "Select
Case de Territorio" y de "Categoria"

Por eso me interesaria crear el nombre de la variable dinámicamente de
alguna manera y no tener que escribir las 960 variables en cada
cálculo.

Estoy mirando de hacerlo con "Colecciones" o "Arreglos" pero no lo
acabo de conseguir.

Saludos.
Respuesta Responder a este mensaje
#3 Juan M
02/07/2008 - 11:00 | Informe spam
Hola,

Por lo que comentas, es muy probable que con tablas dinámicas, o incluso con
autofiltros pudieras resolver el problema y no necesitarías emplear código
para resolver el problema.

¿Puedes comentar como está estructurada la hoja de datos (rangos) con unas
pocas líneas de ejemplo y los nombres tipo de cada territorio (no hace falta
que sean todos), de cada categoría (A, B, C, D)?

Si el arreglo de datos es del tipo:

columna A: territorio
columna B: categoría cliente
columna C: cliente activo (Sí/no)
columna D: totales?? (esto no se que es lo que pretende almacenar)
columna E: importes
resto de columnas los datos que quieras

Se puede también preparar alguna fórmula del tipo Sumaproducto, pero es
necesario que nos indiques los rangos que estás empleando.

Si tu origen de datos es diferente a una hoja de excel también sería
interesante que lo comentaras, ya que hay formas de 'comunicar' diferentes
aplicaciones y probablemente te evitaría tener que reproducir muchos libros.

Un saludo,
Juan

"melonero" escribió
Es que tengo que recorrer 30.000 clientes de un archivo excel mirando
su código de territorio (80 diferentes). En función de ese código
tengo que mirar una categoría del cliente (A,B,C,D) y en función de
esto (codigo terriotorio y categoria) tengo que llevar un recuento de
clientes activos, del total y un sumatorio de importes y plasmar los
datos en una hoja Excel.

Es decir, tengo que almacenar el dato de cada territorio (80) y de
cada territorio sus 4 categorías y de cada categoría sus clientes
activos, totales y sumatorio de importes.

Resulta que tengo que tener en memoria 960 variables diferentes (80 x
4 x 3) porque tengo que tener guardados los datos mientras recorro las
30.000 filas y utilizar las variables para los cálculos en los "Select
Case de Territorio" y de "Categoria"

Por eso me interesaria crear el nombre de la variable dinámicamente de
alguna manera y no tener que escribir las 960 variables en cada
cálculo.

Estoy mirando de hacerlo con "Colecciones" o "Arreglos" pero no lo
acabo de conseguir.

Saludos.
Respuesta Responder a este mensaje
#4 melonero
02/07/2008 - 11:29 | Informe spam
Tengo una hoja Excel con las siguientes columnas:

Col B = Codigo Territorio (80 diferentes)
Col C = Codigo Cliente (30.000 dirferentes)
Col H = Categoria del Cliente (4 diferentes)
Col K hasta Col V = Nº de pedidos de los últimos 12 meses (cada
columna es 1 mes)

Necesito:
El total de clientes de cada territorio/categoria (80 x 4) hayan hecho
pedidos o no.
El total de clientes de cada territorio/categoria (80 x 4) hayan hecho
pedidos.
Suma de pedidos de cada territorio/categoria (80 x 4)

Son 960 celdas las hay que rellenar automáticamente en la plantilla y
lo hacían con tablas dinámicas manualmente pero era un trabajo de todo
un día llevarlo a cabo y quieren que se automatice y se haga pulsando
un botoncito (lo típico :-D )

Creo que tendré que usar autofiltros pero modificar los parámetros de
los filtros de territorio (80) más los de categoria (4) va a ser una
pechada además me resulta farragoso y lento de ejecución (son 30.000
filas y hay que rellenar la misma plantilla 4 veces por diferentes
periodos: mes, acumulado anual, trimetre y los 12 ultimos meses) así
que si hay alguna otra manera, con colecciones de datos o algo así
pues me iría genial pero no encuentro la solución. Probé con
colecciones de datos pero solo puedo añadir, eliminar y contar items,
no puedo modificarlos como debería hacer al ir contando o sumando los
datos de cada fila. En fin... un reto :)

Saludos y muchas gracias pro la ayuda.
Respuesta Responder a este mensaje
#5 Juan M
02/07/2008 - 15:50 | Informe spam
Hola,

Disculpa que lo vuelva a preguntar, ¿El origen de datos es excel o es una
base de datos tipo access?

Si tienes posibilidad de modificar la tabla de datos, en un futuro, podría
ser mejor emplear la fecha y el pedido que hacer 12 columnas una para cada
mes. Te comento esto por las últimas consultas que debes realizar. Excel es
capaz de entender las fechas y unos intervalos de tiempo para contar, en mi
opinión es más cómodo escribir el día en que se hizo un pedido y luego
contabilizar.

Para las tres primeras consultas

Necesito:
El total de clientes de cada territorio/categoría (80 x 4) hayan hecho
pedidos o no.
El total de clientes de cada territorio/categoría (80 x 4) hayan hecho
pedidos.
Suma de pedidos de cada territorio/categoría (80 x 4)



hacer un listado de territorios único (los 80) me imagino que sean los
mismos siempre entonces es relativamente sencillo.
copia la columna A en otra hoja vacía y luego en filtro avanzado seleccionas
copiar únicos a otra parte y así tendrías el listado de los territorios.

Las categorías de clientes son 4 (A, B, C, D)

Para la primera:
en las celdas E1:H1 escribe las categorías
En la columna D2:D81 copia el listado de territorios único
En E2 escribe la siguiente fórmula donde Hoja1 es donde está tu base de
datos y los rangos son los que has indicado
=SUMAPRODUCTO(--(Hoja1!$B$2:$B$3000=$D2);--(Hoja1!$H$2:$H$30000=E$1))

Debes ajustar los rangos para no dejar ninguno.
Arrastras hasta donde convenga, ten cuidado que puede volver muy lento el
recálculo.

Con esto obtenemos el número de clientes que hay por cada territorio y
categoría

Para la segunda
En un principio necesitas emplear una columna adicional, en la hoja de los
datos donde sumes todos los pedidos de cada entrada
=suma(K2:V2) y arrastra hasta el final o haz doble clic en el cuadradito
inferior de selección de la celda donde has escrito la fórmula

En la hoja de resumen en la fila L1:O1 para las categorías y de K2:K81 los
territorios escribimos en L2 la siguiente fórmula
En la columna W he puesto la fórmula de la suma

=SUMAPRODUCTO(--(Hoja1!$B$2:$B$30000=$D2);--(Hoja1!$H$2:$H$30000=E$1);--(Hoja1!$W$2:$W$30000>0))
Cuenta los clientes que han hecho pedidos

Para la tercera escribiríamos una fórmula similar a la anterior
=SUMAPRODUCTO(--(Hoja1!$B$2:$B$30000=$K2);--(Hoja1!$H$2:$H$30000=L$1);Hoja1!$W$2:$W$14)
Suma los pedidos de cada territorio y categoría

como ya te he comentado creo que te va a hacer demasiado lento el recálculo,
¿lo confirmas si lo pruebas?

Las otras cuestiones, donde intervienen las fechas se complican un poco más
por la forma de la tabla respecto a las fechas.

Voy a intentar prepararte una macro para hacer esto antes del fin de semana,
o a ver si alguien se anima y te echa una mano.

Un saludo,
Juan






"melonero" escribió
Tengo una hoja Excel con las siguientes columnas:

Col B = Codigo Territorio (80 diferentes)
Col C = Codigo Cliente (30.000 dirferentes)
Col H = Categoria del Cliente (4 diferentes)
Col K hasta Col V = Nº de pedidos de los últimos 12 meses (cada
columna es 1 mes)

Necesito:
El total de clientes de cada territorio/categoria (80 x 4) hayan hecho
pedidos o no.
El total de clientes de cada territorio/categoria (80 x 4) hayan hecho
pedidos.
Suma de pedidos de cada territorio/categoria (80 x 4)

Son 960 celdas las hay que rellenar automáticamente en la plantilla y
lo hacían con tablas dinámicas manualmente pero era un trabajo de todo
un día llevarlo a cabo y quieren que se automatice y se haga pulsando
un botoncito (lo típico :-D )

Creo que tendré que usar autofiltros pero modificar los parámetros de
los filtros de territorio (80) más los de categoria (4) va a ser una
pechada además me resulta farragoso y lento de ejecución (son 30.000
filas y hay que rellenar la misma plantilla 4 veces por diferentes
periodos: mes, acumulado anual, trimetre y los 12 ultimos meses) así
que si hay alguna otra manera, con colecciones de datos o algo así
pues me iría genial pero no encuentro la solución. Probé con
colecciones de datos pero solo puedo añadir, eliminar y contar items,
no puedo modificarlos como debería hacer al ir contando o sumando los
datos de cada fila. En fin... un reto :)

Saludos y muchas gracias pro la ayuda.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida