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 *