Necesito actualizar la hoja 2 automáticamente con valores de la hoja 1

Tengo una conexión a SQL que me devuelve datos de una tabla en la hoja 1 con los datos importados: La tabla tiene la siguiente estructura: Empresa Casilla Valor 

También tengo una macro que concatena los valores de Empresa y Casilla en una nueva columna denominada EmpresaColumna en la hoja 1

He creado una función que me devuelve los valores en la hoja 2 llamando a esta función en las celdas que necesito. Lo que pretendo es que al abrir el libro se actualice la hoja 2 de forma automática .

La función es la siguiente:

Function DameValor(EmpresaCasilla As String)
i = 1
For Each rw In Worksheets("dataimport").Rows
        If Worksheets("DataImport").Cells(i, 1).Value = "" Then
         Exit For
        End If
        If Worksheets("DataImport").Cells(i, 3).Value = EmpresaCasilla Then
             DameValor = Worksheets("DataImport").Cells(i, 4).Value
             Exit For
        End If
     i = i + 1
Next rw

 Tabla hoja1

Hoja 2

En la hoja 2 tecleo la función en las celdas correspondientes de esta forma:

=DameValor("120000") donde "170000" es el valor que tengo en la columna EmpresaCasilla de la hoja1

y al hacer enter se me actualiza el valor recuperado

Lo que pretendo es que esta parte de la hoja 2 la realice de forma automática sin tener que hacer Enter en cada casilla.

¿Cómo hacerlo?

1 Respuesta

Respuesta
1

Si en lugar de poner tu función, pones la fórmula buscarv, puede ser así:

=BUSCARV("120000",dataimport!C:D, 2,0)

Efectivamente la función no se actualiza si no editas la celda y presionas enter, a diferencia de la fórmula buscarv, ésta si se actualiza sin necesidad de editarla y presionar enter. Prueba el funcionamiento, cambia "120000" por el dato que deseas buscar.


Muchísimas gracias por contestar tan rápido y felices fiestas, la verdad es que estoy un poco desesperado con el tema.

Al incluir la fórmula que me propone en una celda de la hoja 2, me da error en fórmula

Me funciona así, teniendo en cuenta que C2 es donde está el valor 120000

=BUSCARV(Dataimport!C2;Dataimport!C:D;2;0)

Si cambio el primer C2 por 120000 me da error 

Además lo que me gustaría es simplificar el trabajo del  usuario, por eso había montado la función. 

De esa forma el cliente sólo tendría que poner DameValor("120000")

¿Alguna sugerencia?

Gracias por su paciencia

En este caso la fórmula se me hace más simple que una función.

Sólo que no entiendo cómo están los datos en cuál hoja tienes el "12000"

Si la fórmula no encuentra el "12000" en la hoja "Dataimport", tampoco lo va a encontrar la función.

Entonces estoy confundido, porque mencionas tablas, hojas, pero no me explicas claramente cómo tienes los datos.

Si gustas, envíame tu archivo y me explicas con imágenes, con colores y con comentarios lo que necesitas. Te preparo la fórmula y te regreso el archivo.

¡Gracias! 

Comentarle que ya he conseguido hacer funcionar la fórmula correctamente, el día 26 de diciembre digamos que yo no estaba muy inspirado, pero hoy haciendo pruebas no he tenido ningún problema para aplicarla.

Mil perdones por mi torpeza y muchísimas gracias por su inestimable ayuda.

Feliz Año

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas