Macro con Enter

Estimado Experto:
Le ruego observe esta consulta y la responda si sabe como solucionarlo.
Me pregunto como puedo hacer para crear un macro con el cual:
Yo escriba algo en A2 y al presionar enter, ¿la fórmula que esta en B1 se copie a B2?
O mejor aún, que no copie una fórmula, si no que la escriba directamente, pero cambiando la referencia de la celda con la que tiene que trabajar.
Ej: Si en A2 pongo código "111", me devuelve en B2 "VINO TINTO" que en realidad es el resultado de la formula: "=INDICE(Hoja2!A:B;COINCIDIR(A1;Hoja2!A:A;0);2)"
Y si me paro en A3, pongo el código y doy enter quiero obtener la fórmula en B3.
Espero haber sido claro.
Muchas Gracias por su atención.
Matías

3 Respuestas

Respuesta
1
Prueba con el siguiente código, debes pegarlo en el editor de Visual basic de excel de la hoja1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Column = 1 And Cells(ActiveCell.Row - 1, 1).Value <> "" Then
Cells(ActiveCell.Row - 1, 2).Value = "=INDEX(Hoja2!C[-1]:C,MATCH(RC[-1],Hoja2!C[-1],0),2)"
End If
End Sub
Leone, si bien no probé exacto el código tal cual lo mandaste, logré hacer lo mismo hace un rato, pero con la función BuscarV.
Muchísimas gracias por la respuesta.
Saludos.
Matías
Respuesta
1
a). ¿Y por qué no utilizas la función =BuscarV()?, creo que sería más efectiva y no altera la velocidad de consulta.
[email protected]
La estoy usando por que me pasaron ese dato, pero con esa función, cuando ejecuto otra macro que tengo un poco más larga, me da: recursos insuficientes.
Sigo probando...
Me parece que tienes muchas fórmulas matriciales en tu hoja. De ser ese el caso, es mejor que las cambies por funciones como =SumaProducto(). Claro está que tendría que ver tus fórmulas para saber si son o no matriciales (las que tienes con {}). En lo particular a mí no me gusta usarlas a menos que sea demasiado necesario ya que consumen mucha memoria de cálculo.
[email protected]
Voy a renovar todo el libro...
Deseame suerte !
Me encontraras en otra consulta si se me complica algo.
Muchísimas gracias por contestar.
Matías
Respuesta
1
Para esto debés trabajar con "eventos". En la solapa con el nombre de la hoja, presiona botón derecho con el mouse y selecciona Ver código; luego tipea lo siguiente
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
  Target.Offset(0, 1).FormulaR1C1 = "=INDEX(Hoja2!C1:C2,MATCH(RC1,Hoja2!C1,0),2)"
End If
End Sub
esta fmla te va a poner la función en la columna B siempre que ingreses algun dato en la columna A (Target.Column = 1)
GFellay, si bien no probé lo que me pusiste vos, hice lo mismo pero con Buscarv y anduvo perfecto.
Agradezco infinitamente tu colaboración.
Matías

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas