none
busqueda en matriz excel RRS feed

  • Pregunta

  • Buenos dias:

    Partiendo de esta tabla, necesito añadirle un campo donde se indique a cada persona el grado que le corresponde segun su antiguedad (expresada en la fila 1)

    0-1 1-2 2-3 3-4
    PEPE X
    CARMEN X
    MARIA X
    RAMON X

    la tabla en la que realizar la busqueda seria

    0-1 semi-junior
    1-2 junior
    2-3 semi-senior
    3-4 senior

    El resultado seria

    0-1 1-2 2-3 3-4 grado
    PEPE X semi-junior
    CARMEN X semi-senior
    MARIA X junior
    RAMON X senior

    ¿como podría hacerlo ?

    Gracias por su ayuda

    jueves, 21 de diciembre de 2017 11:16

Respuestas

  • Hola Rafa_c,

    Este procedimiento hace lo que tu necesitas.Arregla los rangos a tu caso real.

    Espero te sirva

    Sub ColocaGrado()
       Dim Nombre As Range, GradosT As Range, k, RangoB As Range, j
       Set Nombre = Hoja1.Range("C4:C" & Hoja1.Range("c" & Rows.Count).End(xlUp).Row)
       Set GradosT = Hoja1.Range("I13:J16")
       For Each k In Nombre
          Set RangoB = Hoja1.Range(Cells(k.Row, 4), Cells(k.Row, 7))
          For Each j In RangoB
             If j.Value = "X" Then
                Hoja1.Cells(k.Row, 8) = Application.WorksheetFunction.VLookup(Hoja1.Cells(3, j.Column), GradosT, 2)
                Exit For
             End If
          Next j
       Next k
    End Sub

    • Marcado como respuesta rafa_c martes, 26 de diciembre de 2017 19:19
    lunes, 25 de diciembre de 2017 9:34

Todas las respuestas

  • Hola Rafa_c,

    Este procedimiento hace lo que tu necesitas.Arregla los rangos a tu caso real.

    Espero te sirva

    Sub ColocaGrado()
       Dim Nombre As Range, GradosT As Range, k, RangoB As Range, j
       Set Nombre = Hoja1.Range("C4:C" & Hoja1.Range("c" & Rows.Count).End(xlUp).Row)
       Set GradosT = Hoja1.Range("I13:J16")
       For Each k In Nombre
          Set RangoB = Hoja1.Range(Cells(k.Row, 4), Cells(k.Row, 7))
          For Each j In RangoB
             If j.Value = "X" Then
                Hoja1.Cells(k.Row, 8) = Application.WorksheetFunction.VLookup(Hoja1.Cells(3, j.Column), GradosT, 2)
                Exit For
             End If
          Next j
       Next k
    End Sub

    • Marcado como respuesta rafa_c martes, 26 de diciembre de 2017 19:19
    lunes, 25 de diciembre de 2017 9:34
  • Buenas tardes ikanni!

    Resuelve mi problema perfectamente.

    Muchas gracias por tu tiempo y tu ayuda,

    Saludos

    martes, 26 de diciembre de 2017 19:21