¿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

Respuesta
2

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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas