Traducir función, de excel a VB

Mfervic, te escribo para pedir ayuda :D
Lo que pasa es que quiero pasar una función excel a lenguaje de VB, ya que necesito dejar la función en una columna y que cuando borre los valores de la columna la función permanezca para así aplicarla a otros datos, mira esta es la función:

=INDICE(Mov_Central!B4:$H$13;COINCIDIR(MAX(Mov_Central!H4:H13);Mov_Central!H4:H13;0);3)

Mov_Central, es de una hoja del mismo libro de trabajo.
Ojalas puedas ayudarme.

2

2 Respuestas

99.775 pts.

'4c7569735f50

Prueba así:

[a1].FormulaR1C1 = _
"=INDEX(Mov_Central!R[-3]C:R13C8,MATCH(MAX(Mov_Central!R[-3]C[6]:R[6]C[6]),Mov_Central!R[-3]C[6]:R[6]C[6],0),3)"

Así asignas la función a la celda a1

11.625 pts. Hoy por ti, mañana por mi

Como no eres muy concreto como quieres que se ejecute, lo pondré de una manera sencilla. Luego tu mismo te lo "tuneas" a tu gusto.

Create un módulo dentro el proyecto VBA y pegas este código:

Sub funcion_indice()
Dim hoja As String Dim i As Double, j As Double, res As Double Dim v1 As Range, v2 As Range
'Función con parámetros a conseguir:

'INDICE(Mov_Central!B4:$H$13;COINCIDIR(MAX(Mov_Central!H4:H13);Mov_Central!H4:H13;0);3)

'como no se de que hoja se va a efectuar el cálculo, la guardo en la variable hoja para luego volver a ella

hoja = ActiveSheet.Name

Application.ScreenUpdating = False

'selecciono la hoja Mov_Central para realizar el cálculo

Sheets("Mov_Central").Select

'asigno valores a las variables

Set v1 = Range("B4:$H$13")

Set v2 = Range("H4:H13")

i = Application.WorksheetFunction.Max(v2)

j = Application.WorksheetFunction.Match(i, v2, 0)

'obtengo el resultado

res = Application.WorksheetFunction.Index(v1, j, 3)

'muestro el resultado en un mensaje

MsgBox "Resultado final:" & vbCrLf & res

'regreso a la hoja original

Sheets(hoja).Select
End Sub

Para que puedas ejecutar el código debes asignar esta macro a un botón de formulario o una celda en concreto.

Espero haberte ayudado. Si tienes algún problema, no dudes en preguntar.

Saludos desde Sevilla. No te olvides de finalizar y puntuar la pregunta.

Muchísimas gracias compañero mfervic, me sirvió tu ayuda, cualquier duda o consulta que surja en el futuro te pregunto.

Saludos y gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas