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.

Respuesta
1

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.

1 respuesta más de otro experto

Respuesta
1

'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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas