Macros en Excel

De antemano muchas Gracias
Bueno empecemos, estoy en la hoja1, en la hoja 2 hay una lista de productos ej.
       A B C D
1 pelota roja rallas 3.35
2  balon        azul          circulos      10.30
3 pelota roja simple 4.00
Lo que quiero es una macro o fórmula que al teclear el producto me de solamente el precio le intente con BuscarV pero como a veces la misma palabra se repite en la columna, me encuentra solo la primera, lo que quiero es teclear todo por columnas y me de el precio ej.
Yo tecleo pelota roja rallas y automáticamente en la celda siguiente meda 3.35 y no 4.00
También intente ponerlo todo en una columna, pero al teclearlo se confunden, me gustaría más que tecleara en una celda, brincara a la otra y luego tecleara y brincara a la otra y luego me apareciera el precio (todo esto en la hoja1) se supone que lo que tecleo lo va a estar buscando en la hoja2
Le estaré muy agradecido Muchas Gracias

1 Respuesta

Respuesta
1
Chiclesm:
No conozco alguna forma sencilla de hacerlo, pero voy a trabajar en ello y luego te envío una respuesta.
Aquí te dejo las macros que te pueden ser útiles, tu tienes que cambiar los valores y hacer las modificaciones correspondientes para que se adapten a tu proyecto
Esta macro llama a la función que te devolverá el precio. Como no das mayores referencias de nombres de celdas o columnas, no puedo entregarte algo más específico. Pero creo que es suficiente, para que con un poquito de esfuerzo, la puedas acomodar.
Sub buscarPrecio()
   
'Busca en las columnas A, B y C de la hoja2, los criterios "a", "b" y "c"
    'respectivamente y devuelve el valor contenido en la columna DE de la fila
'que cumpla con los tres criterios. Si no existe una fila con tales
'características, devuelve vacío ""

   
'El valor final se almacena en la celda A20
    [a20] = fcnBuscar(Hoja2, "A:A", "B", "C", "D", "a", "b", "c")
End Sub

FcnBuscar es la función que busca el precio según los criterios ingresados, no requiere de tu intevención, lo único que tienes que variar son los parámetros de entrada, que se describen a continuación.
'hojaOrigen: Hoja en la que se hará la busqueda _
StrRng: Rango en el que se buscará el primer cirterio _
StrCC2: Columna en la que se buscará el segundo criterio _
StrCC3: Columna en la que se buscaré el tercer criterio _
StrCR: Columna en la que se encuentra el valor que debe ser devuelto _
StrCrit1: Primer criterio de búsqueda _
StrCrit2: Segundo criterio de búsqueda _
StrCrit3: Tercer criterio de búsqueda
Function fcnBuscar(hojaOrigen As Worksheet, _
           StrRng As String, strCC2 As String, strCC3 As String, strCR As String, _
           StrCrit1 As String, strCrit2 As String, strCrit3 As String) As String
   Dim blnFin As Boolean
   Dim dblUltFila(2) As Double, dblFila As Double
   Dim strRango As String, strColCrit(2) As String, strCriterios(2) As String
   Dim strColRes As String
   Dim resFinal As Range, resulta As Range
   strCriterios(0) = strCrit1 'Criterio 1
   strCriterios(1) = strCrit2 'Criterio 2
   strCriterios(2) = strCrit3 'Criterio 3
   
'Recorrer todas la hojas en busca del código
    Set hojaBusq = hojaOrigen
'Hoja sobre la que se realiza la busqueda
    StrRango = strRng
'Rango en el que se buscará el primer criterio
    StrColCrit(1) = strCC2
'Columna an la que se busca el segundo criterio
    StrColCrit(2) = strCC3
'Columna an la que se busca el tercer criterio
    StrColRes = strCR
'Columna en la que se buscará el resultado
   
'Primera búsqueda
    Set resulta = hojaBusq.Range(strRango).Find(strCriterios(0), _
                   After:=hojaBusq.Range(strRango).End(xlDown), _
                   LookIn:=xlValues, LookAt:=xlWhole)
   
'Búsquedas siguientes
    Do Until (resulta Is Nothing Or blnFin)
        dblFila = resulta.Row
        Set resFinal = resulta
       
'Comparar los criterios restantes
        If hojaBusq.Range(strColCrit(1) & dblFila) = strCriterios(1) And _
           hojaBusq.Range(strColCrit(2) & dblFila) = strCriterios(2) Then GoTo salir
       
'Buscar siguiente fila
        Set resulta = hojaBusq.Range(strRango).FindNext(resulta)
        blnFin = (resulta.Row <= dblFila)
    Loop
salir:
    If Not resFinal Is Nothing Then
        fcnBuscar = hojaBusq.Range(strCR & resFinal.Row).Value
    End If
End Function
Se ve que esta muy completa la macro pero no le entiendo, te puedo calificar como excelente no hay problema pero una pregunta más
no seria más fácil si se fueran filtrando las columnas, una macro que me filtre la columna según la palabra que le ponga ej
si escribo pelota en algún cuadro de la macro, que en la columna A solo que den todas las que digan pelota, luego escribo en otro cuadro de la macro, roja, y que en la B queden todas las que dicen roja y así me va a quedar solo una fila y esa la puedo copiar y pegar en la hoja 1 con un botón
No se si hay un modo más sencillo, de todas formas muchas gracias
PD. Si puedes explicarme mejor la macro o enviarme un ejemplo a mi correo [email protected] es que no me dices si el código lo guardo en un botón o en un modulo, no se si son varias macros o es solo una, explícamelo por fases en caso de que se han varias, es que viene muy confuso, espero tu repuesta, si es No, yo te califico como excelente por que yo fui el que no entendí
GRACIAS
Te envíe un ejemplo al coreo!
Muchas Gracias por tu tiempo
Muchas gracias por contestar muy rapido
PD. Voy a checar el correo para así empezar a crear la macro, GRACIAS

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas