Modificar fórmula y agregar un inputbox a FormulaR1C1

Siempre me complico al tratar de modificar fórmula obtenidas con el grabador de macros.

La fórmula es la siguiente:

ActiveCell.FormulaR1C1 = _
"=IFERROR(VLookup(RC2,[null.xls]Hoja1!R7C2:R32C16,R12C),"""")"

hoja As String

hoja = Application.InputBox("Selecciona el centralizador", Type:=8).Address(External:=True)

Para sustituir esta parte : [null.xls]Hoja1!R7C2:R32C16, R12C
¿Cómo le agrego un inputbox, para que pueda seleccionar el rango en otra hoja?

2 Respuestas

Respuesta
2

Lo que estás haciendo no es nada práctico.

Puedes poner la fórmula directamente en la macro.

Te pregunto, ¿quieres la fórmula o el resultado de la fórmula?

Prueba lo siguiente, pero es complicado determinar en dónde vas a poner la fórmula.

Sub SeleccionaRango()
'Por.Dante Amor
  Dim rng As Range
  Dim matriz As String
  '
  On Error Resume Next
  Set rng = Application.InputBox("Selecciona el centralizador", Type:=8)
  If rng Is Nothing Then Exit Sub
  On Error GoTo 0
  '
  matriz = rng.Address(ReferenceStyle:=xlR1C1, External:=True)
  ActiveCell.FormulaR1C1 = _
      "=IFERROR(VLookup(RC2," & matriz & ", R12C),"""")"
End Sub

Lo que hace la macro es sustituir esta parte:

 [null.xls]Hoja1!R7C2:R32C16

Los otros 2 argumentos los debes poner tú.


Si no puedes adaptar la macro a lo que necesitas, te recomiendo poner aquí la fórmula, pero la fórmula que tienes en la celda, no la que tienes en la macro.

También explica un ejemplo con imágenes para entender en dónde están los datos.

¡Gracias! funciono perfectamente!

Respuesta
2

Como comentas que siempre se te complica modificar fórmulas obtenidas con la grabadora, te comparto el video N° 15 de mi canal.

La regla para armar una fórmula es: entre comillas la parte 'fija' y entre & la parte 'variable'.

Por ejemplo:

ActiveCell.FormulaR1C1 = _
"=IFERROR(VLookup(RC2," & nbrelibro_hoja & "R7C2:R32C16,R12C),"""")"

Donde la variable nbrelibro_hoja debe incluir los corchetes y el signo de exclamación.

Ahora, si el nombre del libro será fijo y solo cambiarás el nombre de la hoja, sería de este modo:

ActiveCell.FormulaR1C1 = _
"=IFERROR(VLookup(RC2,[null.xls]" & hoja & "!R7C2:R32C16,R12C),"""")"

Observa que el signo de exclamación ya entra en la parte fija de la instrucción ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas