Office y Programación: Buscar Nombre con Salario Mínimo. Microsoft Excel y VBA

Nombre con Salario Mínimo

Solución
en Excel


 

Nombre
con Salario Mínimo:      =INDICE(B2:B6;COINCIDIR(MIN(F2:F6);F2:F6;0);1)

 


Solución
en VBA

 

Código VBA que
resuelve el mismo problema.

El botón <Buscar
Nombre con Salario Mínimo> está asociado a la macro <BuscarNombreConSalarioMinimo>
que realiza los procesos de búsqueda del resultado y lo coloca en la celda
correspondiente. El botón <Generar Fórmula>  coloca en la celda de resultado, la fórmula
Excel correspondiente a la solución.


Nótese que se han aplicado dos soluciones diferentes:

a)    La
que busca el NOMBRE con SALARIO MINIMO y coloca el resultado en la celda
correspondiente;


b)    La
que coloca en la celda correspondiente la fórmula adecuada para que sea el
propio Excel quien resuelva la búsqueda.

 

Option Explicit

Sub BuscarNombreConSalarioMinimo()

   Dim oWorksheet As Worksheet

   Dim oRangoSalarios As Range

   Dim oRangoNombres As Range

   Dim sExpresion As String

   Dim dblValorSalarioMinimo As
Double

   Dim
dblPosicionRelativaSalarioMinimo As Double

   Dim sNombreResultante As String

  

   Set oWorksheet =
ThisWorkbook.Worksheets(1)

   Set oRangoSalarios =
oWorksheet.Range(“F2:F6”)

   Set oRangoNombres =
oWorksheet.Range(“B2:B6”)

  

   sExpresion = “MIN(” +
oRangoSalarios.Address + “)”

   dblValorSalarioMinimo =
Evaluate(sExpresion)

  

   sExpresion = “MATCH(”
+ CStr(dblValorSalarioMinimo) + _

                           ” ,” +
oWorksheet.Name + _

                           “!” + oRangoSalarios.Address
+ “,0)”

  
dblPosicionRelativaSalarioMinimo = Evaluate(sExpresion)

 

   sExpresion = “INDEX(”
+ oWorksheet.Name + “!” + _

                                              oRangoNombres.Address + “,” + _

                                             CStr(dblPosicionRelativaSalarioMinimo) + “,1)”

   sNombreResultante = Evaluate(sExpresion)

   oWorksheet.Cells(16, 4) =
sNombreResultante

End Sub

 

Sub BuscarNombreConSalarioMinimoFormula()

   Dim oWorksheet As Worksheet

   Dim oRangoSalarios As Range

   Dim oRangoNombres As Range

   Dim sExpresion As String

  

   Set oWorksheet =
ThisWorkbook.Worksheets(1)

   Set oRangoSalarios =
oWorksheet.Range(“F2:F6”)

   Set oRangoNombres =
oWorksheet.Range(“B2:B6”)

  

   sExpresion =
“=INDEX(” + oWorksheet.Name + “!” + _

                                                  oRangoNombres.Address
+ _

                                                 “,MATCH(MIN(” + oWorksheet.Name + “!” + _

                                                 oRangoSalarios.Address
+ _

                                                 “),” +
oWorksheet.Name + “!” + _

                                                 oRangoSalarios.Address
+ “,0),1)”

   oWorksheet.Cells(16, 6) =
sExpresion

 

End Sub

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *