Macro para buscar un valor y agregar datos

Estoy creando un archivo que me ayude con unas tareas, tengo conocimientos muy básicos, pero muy básicos sobre las macros y he estado pidiendo ayuda de a poco, para tratar de entender como funciona esto, bueno, ahora me he topado con la siguiente tarea.

Tengo dos hojas, una Ventas y la otra BD, en la hoja Ventas ingreso valores en las celdas D4, D6, D8 y en la D12 aplico la formula BuscarV.

Lo que requiero, es que de acuerdo a lo que ingrese en la celda D4, busque ahora en la hoja BD exactamente el mismo valor y añada los datos que faltan. (En BD tengo datos a partir de la columna A9 a la M)

Por ejemplo, ingreso Lápiz, en la hoja Ventas D4

Luego, tendrá que buscarlo en la hoja BD (el valor que busca debe coincidir exactamente con alguno de la columna 4)

Encontrado el valor, deberá añadir lo que he ingresado a la hoja ventas en D6, D8 y el valor que resulta de la formula en D12 a la hoja BD en N O y P, según la fila que le corresponda.

D6------------a---------N

D8------------a---------O

D12------------a---------P.

1 Respuesta

Respuesta
1

¿Esto es lo que tu quieres hacer? Pero en diferentes hojas

Si es eso solo dale un nombre al rango de datos y utiliza la fórmula "BuscarV" o "ConsultaV" depende de la version de office

Para dirijirla a otra hoja tienes que agregar el nombre de la hoja en la búsqueda

Ejemplo

"=BuscarV(D2;Hoja1!Registros;2;Falso)"

Aquí esta buscando en la hoja1 el dato que esta en D2, en el rango REGISTROS en caso que lo encuentre devolverá lo que hay en la columna 2 del rango REGISTROS

Tu explicación me ha dado un nuevo dato que no estaba considerando y debo incluir, (los arts. vendidos).

Intentare explicar mejor en esta ocasión.

Tengo la siguiente hoja, con los siguientes datos:

En esta hoja voy a ingresar que producto estoy vendiendo(D4), cuantos artículos(D6), la fecha(D8), y cuanto esta ingresando a mi caja por dicha venta (D10). En Utilidad (D12) deberá hacer el calculo en base a mis Ingresos (D10) y restando el precio que corresponde a dicho producto , para lo cual tendrá que buscar en la siguiente hoja: BD

Bueno como ya tengo esos datos en la hoja ventas, al darle clic a un botón, quiero que se registren en la hoja  BD  en celda que corresponda, por ejemplo. 

Tendrá que buscar en la Hoja BD el producto lapiz y  restará el numero de arts. vendidos al stock, ingresará la fecha en la columna (en la fila que corresponda) , así como el precio de venta en la columna O y la utilidad en la columna P.

Eso es lo que necesito. Ojala en esta ocasión haya logrado explicar mejor, gracias de antemano.

¿Así es te sirve?

La otra foto no la subo (hoja BD) porque lo hice en base a tus fotos solo que modifique esta hoja como la puedes apreciar... pega el siguiente código en un modulo y asígnale cada macro a cada botón

Sub Confirmar()
Set h1 = Sheets("ventas")
Set h2 = Sheets("BD")
uf = h2.Range("D" & Rows.Count).End(xlUp).Row
If h1.Range("E4").Value <> "" Then
    For fila = 7 To uf
        If h2.Cells(fila, 4) = h1.Range("E4") Then
            h2.Cells(fila, 5) = h2.Cells(fila, 5) - h1.Range("E6")
            h2.Cells(fila, 14) = h1.Range("E8")
            h2.Cells(fila, 15) = h1.Range("E10")
            h2.Cells(fila, 16) = h1.Range("E12")
        End If
    Next fila
Else
MsgBox " Parece que no a ingresado ningun producto, por favor verifique", vbInformation
End If
End Sub
Sub Buscar()
Set h1 = Sheets("ventas")
Set h2 = Sheets("BD")
uf = h2.Range("D" & Rows.Count).End(xlUp).Row
    For fila = 7 To uf
        If h1.Range("E4") = h2.Cells(fila, 4) Then
            h1.Range("E6") = h2.Cells(fila, 5)
            h1.Range("E8") = h2.Cells(fila, 14)
            h1.Range("E10") = h2.Cells(fila, 15)
            h1.Range("E12") = h2.Cells(fila, 16)
        End If
    Next fila
End Sub
Sub Limpiar()
Range("E4") = Empty
Range("E6") = Empty
Range("E8") = Empty
Range("E10") = Empty
Range("E12") = Empty
End Sub
Sub Utilidad()
Set h1 = Sheets("ventas")
Set h2 = Sheets("BD")
uf = h2.Range("D" & Rows.Count).End(xlUp).Row
    For fila = 7 To uf
        If h1.Range("E4") = h2.Cells(fila, 4) Then
            Range("E11") = h2.Cells(fila, 6)
            Range("E12") = Left((Range("E10") - Range("E11")) * 100 / Range("E11"), 5) & "%"
            Range("E11") = Empty
        End If
    Next fila
End Sub

Asi mismo te anexo el ejemplo para que lo puedas checkear

Link descarga ejemplo - Google Drive

Perdón parece que el enlace quedo mal aquí va de nuevo je je

Link ejemplo - Gooogle Drive

Acabo de notar que si haces click en "CALCULAR" o en "BUSCAR" te tira errores ... en "CONFIRMAR" no tira errores porque yo le agregue un mensaje para cuando no hay datos pero a la macro "BUSCAR" y la macro "CALCULAR" agregale debajo de los "SET" la línea

If Range("E4") = "" Then Exit Sub

para que sino hay dato que no prosiga.. jeje saludos

En parte si es lo que quiero que haga la macro, pero, más que dar el detalle de ventas, será como mi captura de datos, para después al presionar un solo botón lo añada en la hoja BD.

Así que, en la hoja ventas, quiero ingresar el producto que se está vendiendo y decirle cuántos artículos se están vendiendo, en qué fecha los estoy vendiendo y en qué precio, y por último que me calculé la utilidad en pesos.

Decía que quería que buscara el producto, pero en la hoja BD, ya que ahí está el detalle de compra, y el campo stock, del que tendrá que restar el número de artículos que estoy vendiendo, además de añadir los otros datos (fecha de venta, precio y la utilidad en pesos).

¿Revisaste el ejemplo que te deje en el link? Hace eso mismo que estas diciendo, solo que le adicione el botón "BUSCAR" para que veas la ultima fecha que se vendió ese producto, a que precio y la utilidad, la cantidad de artículos que te muestra al buscar es el stock que tienes ahí me explique mal je je pero el resto hace claramente lo que pides

Al darle el nombre el, el precio y la utilidad (ganancia en %) haciendo click en confirmar envía

  • La fecha de venta a N fila en la columna N
  • El precio de venta a N fila en la columna O
  • La utilidad (%) a N fila en la columna P

La utilidad la puedes ingresar o solo ingresar el precio de venta y presionar en "CALCULAR" que te dará el % de utilidad

Tambien podrias hacerlo al reves que tu escribas el porcentaje de utilidad (%) que quieres ganarle y que al hacer click en calcular te de el precio de venta

Ah la utilidad te la tira en % pero si solo quieres ver la ganancia en pesos cambia esto

Sub Utilidad()
Set h1 = Sheets("ventas")
Set h2 = Sheets("BD")
uf = h2.Range("D" & Rows.Count).End(xlUp).Row
    For fila = 7 To uf
        If h1.Range("E4") = h2.Cells(fila, 4) Then
            Range("E11") = h2.Cells(fila, 6)
            Range("E12") = Left((Range("E10") - Range("E11")) * 100 / Range("E11"), 5) & "%"
            Range("E11") = Empty
        End If
    Next fila
End Sub

Por esto

Sub Utilidad()
Set h1 = Sheets("ventas")
Set h2 = Sheets("BD")
uf = h2.Range("D" & Rows.Count).End(xlUp).Row
    For fila = 7 To uf
        If h1.Range("E4") = h2.Cells(fila, 4) Then
            Range("E11") = h2.Cells(fila, 6)
            Range("E12") = (Range("E10") - Range("E11")
            Range("E11") = Empty
        End If
    Next fila
End Sub

ok, ya lo revise, ya nada más por ultimo cómo le añado al botón CONFIRMAR,  lo que hace el botón CALCULAR?

Para que al presionar CONFIRMAR, también me haga el calculo de la utilidad.

Para usarlo así tal cual esta hecho podrías simplemente poner en la macro confirmar el nombre de la calcular

Ejemplo

Sub Confirmar()
Call Utilidad
'sigue el resto de la macro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas