¿Que tipo de macro puedo crear para que me recorra todos los valores de una lista desplegable?
Necesito ayuda con una macro que sea capaz de recorrer todos los valores de una lista desplegable y que el resultado tras selección de ese valor, me lo copie en una tabla.
1 Respuesta
Puedes comentar cómo es tu lista desplegable.
Es una validación de datos, es un combo, ¿o un combo control activex?
¿Y quieres que la macro recorra todos los valores?
Esta parte no la entendí:
"y que el resultado tras selección de ese valor, me lo copie en una tabla"
Puedes explicarla con un ejemplo
Saludos. Dante Amor
Hola, gracias por tu respuesta
Tengo 2 listas desplegables creadas a partir de una validacion de datos. Al combinar cada uno de los items de dentro de las listas, me aparce un resultado en otra celda.
Lo que busco, es que la macro vaya recorriendo todos los items de las listas, y que el resultado me lo pegue en una tabla en otra pestaña. Hacer todas las combinaciones posibles (intento explicarlo abajo)
ejemplo:
lista desplegable A lista desplegable B Resultado
itemA1 itemB1 R1
ItemA1 itemB2 R2
itemA1 itemB3 R3
ItemA2 ItemB1 R4
ItemA2 itemB2 R5
ItemA2 itemB3 R6
De tal manera que la tabla al final quede de la siguiente manera:
itemA1 itemA2
itemB1 R1 R4
itemB2 R2 R5
itemB3 R3 R6
Espero que te ayude la explicación.
Muchas gracias.
un saludo
Entonces, si la lista A y B son validaciones de datos, me puedes decir en cuáles celdas están los datos de cada lista. ¿Y en cuál columna tienes los resultados?
Podrías poner tu ejemplo considerando las filas y las columnas de excel para que me sea más claro.
Y en la otra pestaña, a partir de cuál celda quieres el resultado.
Los datos de las listas están:
Lista A: Hoja1!$A$5:$A$23
Lista B: Hoja1!$S$4:$S$17
Al combinar un dato de la lista A con otro dato de la lista B, se obtiene un resultado en una celda. Pero al cambiar de combinación el resultado aparece en la misma celda. Esta celda es: Hoja1!N19
En la tabla, tengo como eje horizontal los 13 items de la lista B, y como eje vertical los 18 items de la lista A.
La tabla va desde D8:Q26 y se encuentra en la Hoja2.
Espero que esto te ayude, sino dime por favor.
Muchas gracias
No entiendo cómo al combinar un dato de A con B obtienes un resultado en una "celdax", tienes una fórmula en esa "celdax", para poder armar la macro y poder crear el cuadro con los datos de A y con los datos de B, en la intersección tengo que poner el resultado, pero de dónde obtengo dicho resultado.
Ya no entendí qué quieres que haga la macro, entendí que querías esto:
"
De tal manera que la tabla al final quede de la siguiente manera:
ItemA1 itemA2
ItemB1 R1 R4
ItemB2 R2 R5
ItemB3 R3 R6
"
Pero después comentas esto:
"
En la tabla, tengo como eje horizontal los 13 items de la lista B, y como eje vertical los 18 items de la lista A.
La tabla va desde D8:Q26 y se encuentra en la Hoja2.
"
Tampoco entendí eso de los ejes, en tu ejemplo los itemA están en la misma fila y los itemB están en la misma columna.
Hola, gracias por tus comentarios. Voy a volver a explicar lo que tengo.
Tengo 2 listas desplegables. Una lista y una listaB, cada uno de ellas con diferente numero de items. La lista desplegable A tiene 18 items, y la lista desplegable B tiene 18 items.
Al hacer cualquier combinación de elementos de 1 item de A y otro de B, se obtiene en una celda un resultado. Este resultado es consecuencia de la suma de unas celdas. Se obtiene un resultado diferente en función de cada combinación, porque se hace un buscarv del item de A y del item de B para obtener unos valores, y ello conlleva que en función de la combinación, el resultado que aparece en la celda cambie.
Lo que yo busco, es crear una macro, que sea capaz de hacer todas las combinaciones y lea el resultado, y que lo plasme en una tabla. Esta tabla, que es como una matriz de combinaciones, tiene como cabecera, es decir, en una misma fila todos los items de B, y en una misma columna los items de A.
El objetivo es que al actualizar la macro, la macro recorra todas las combinaciones de lista desplegable, lea el resultado, y lo pegue en esta tabla.
Espero que te haya aclarado más las cosas. Sino, dime.
Muchas gracias por tu apoyo
Pero no pusiste en qué celdas específicas tienes cada lista ni en qué celda tienes el resultado y tengo que suponerlo en la macro.
Te anexo la macro cumpliendo estás características:
"
Lista A: Hoja1!$A$5:$A$23
Lista B: Hoja1!$S$4:$S$17
Al combinar un dato de la lista A con otro dato de la lista B, se obtiene un resultado en una celda. Pero al cambiar de combinación el resultado aparece en la misma celda. Esta celda es: Hoja1! N19.
De tal manera que la tabla al final quede de la siguiente manera:
ItemA1 itemA2
ItemB1 R1 R4
ItemB2 R2 R5
ItemB3 R3 R6
"
Cambia en la macro [C3] y [D3], por el las celdas en las que tienes las listas de la hoja1
Sub combinaciones() 'Por.Dante Amor Set h1 = Sheets("Hoja1") Set h2 = Sheets("Hoja2") c = 5 f = 9 For i = 5 To 22 h1.[C3] = h1.Cells(i, "A") h2.Cells(8, c) = h1.[C3] For j = 4 To 21 h1.[D3] = h1.Cells(j, "S") h2.Cells(f, "D") = h1.[D3] h2.Cells(f, c) = h1.[N19] f = f + 1 Next c = c + 1 f = 9 Next End Sub
si tienes problemas para adaptar la macro , envíame tu archivo para apoyarte.
Mi correo [email protected]
En el asunto del correo escribe tu nombre de usuario "sergio lopez" y el título de esta pregunta.
Te anexo la macro para que funcione de la forma en que me enviaste los datos.
Sub Tabla() 'Por.Dante Amor Application.ScreenUpdating = False Set h1 = Sheets("Hoja1") uf = Range("K" & Rows.Count).End(xlUp).Row If uf < 5 Then uf = 5 uc = Cells(5, Columns.Count).End(xlToLeft).Column If uc < 11 Then uc = 11 Range(Cells(5, 11), Cells(uf, uc)).ClearContents c = 12 f = 6 For i = 5 To Range("E" & Rows.Count).End(xlUp).Row h1.[H9] = h1.Cells(i, "E") h1.Cells(5, c) = h1.[H9] For j = 5 To Range("B" & Rows.Count).End(xlUp).Row h1.[H5] = h1.Cells(j, "B") h1.Cells(f, "K") = h1.[H5] h1.Cells(f, c) = h1.[H14] f = f + 1 Next c = c + 1 f = 6 Next End Sub
Saludos.Dante Amor
No olvides valorar la respuesta.
- Compartir respuesta