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

Office y Programación: Edad Bruta y Edad Neta. Microsoft Excel y VBA

Edad Bruta y Edad Neta


Solución
en Excel

Aplicando
una secuencia de funciones anidadas, podemos llegar al resultado correcto.

 

Edad
Bruta:               =AÑO(HOY())-AÑO(A4)

Edad
Neta:   

 

=SI(AÑO(HOY())>AÑO(A5);SI(MES(HOY())>MES(A5);AÑO(HOY())-AÑO(A5);SI(MES(HOY())<MES(A5);AÑO(HOY())-AÑO(A5)-1;SI(DIA(HOY())>=DIA(A5);AÑO(HOY())-AÑO(A5);AÑO(HOY())-AÑO(A5)-1)));0)

 

Solución
en VBA

Código VBA que
resuelve el mismo problema. El botón <Calcular Edades> está asociado a la
macro <Calcular_Edades> que a su vez invoca a los procedimientos

<
Calcular_Edad_Bruta> y < Calcular_Edad_Neta>.

 

Nótese que se han aplicado dos soluciones diferentes:

a)    La
que calcula las edades 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 el cálculo.

 


 

Option Explicit


Sub Calcular_Edad_Bruta()

   Dim oWorksheet As Worksheet

   Dim dFechaNacimiento As Date

   Set oWorksheet =
ThisWorkbook.Worksheets(1)

   dFechaNacimiento = oWorksheet.Cells(13,
1)

   oWorksheet.Cells(13, 3) =
Year(Now()) – Year(dFechaNacimiento)

   dFechaNacimiento =
oWorksheet.Cells(14, 1)

   oWorksheet.Cells(14, 3) = Year(Now())
– Year(dFechaNacimiento)

End Sub

 

Sub Calcular_Edad_Neta()

   Dim oWorksheet As Worksheet

   Dim dFechaNacimiento As Date

   Set oWorksheet =
ThisWorkbook.Worksheets(1)

   dFechaNacimiento =
oWorksheet.Cells(13, 1)

   oWorksheet.Cells(13, 5) =
F_Edad_Neta(dFechaNacimiento)

   dFechaNacimiento =
oWorksheet.Cells(14, 1)

   oWorksheet.Cells(14, 5) =
F_Edad_Neta(dFechaNacimiento)

End Sub

 

Function F_Edad_Neta(ByVal pFecha As Date) As Integer

   If Year(Now()) >
Year(pFecha) Then

      If Month(Now()) >
Month(pFecha) Then

         F_Edad_Neta = Year(Now())
– Year(pFecha)

      Else

         If Month(Now()) <
Month(pFecha) Then

            F_Edad_Neta =
Year(Now()) – Year(pFecha) – 1

         Else

            If Day(Now()) >=
Day(pFecha) Then

               F_Edad_Neta =
Year(Now()) – Year(pFecha)

            Else

               F_Edad_Neta = Year(Now()) –
Year(pFecha) – 1

            End If

         End If

      End If

   Else

      F_Edad_Neta = 0

   End If

End Function

 

Sub Calcular_Edades()

   Call Calcular_Edad_Bruta

   Call Calcular_Edad_Neta

End Sub