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