Buscar un valor en una columna después de otro valor determinado

Os escribo ya que no he conseguido dar con una solución al siguiente problema.

Tengo un archivo donde me aparecen datos de la siguiente manera (es un ejemplo en realidad el archivo es bastante más extenso):

Me gustaría extraer la información sobre Pedro, de una columna determinada (la C por ejemplo, para cada ciudad diferente. Debería quedar algo así:

El problema está en que "pedro" no está siempre en la misma posición debajo de una ciudad (ni las ciudades están siempre en el mismo orden), con lo que mi idea sería encontrar una manera de que excel hiciese lo siguiente:

Busca en una columna "zaragoza", después busca el primer valor en esa misma columna llamado "pedro" y extrae la información X columnas más a la derecha.

¿Se os ocurre cómo podría hacerlo?

Respuesta
1

Para esto necesitarás una macro. Para desarrollarla confírmame si en la col de valores puede encontrarse que alguno presente celda sin datos en alguna ciudad.

Sdos, quedo a la espera de tus aclaraciones. No valores aún.

Hola Elsa, gracias por tu rápida respuesta.

En las columnas de valores siempre hay datos para todos los nombres, solamente en las filas de las ciudades existen valores vacíos.

Saludos!

Bien, se me ocurren 2 alternativas:

1- Con la siguiente macro que podrás ejecutarla con un botón, atajo de teclado o desde el mismo menú Macros (estos temas los tengo explicados en la sección Macros de mi sitio).

Presionando juntas las teclas Alt y F11 entras al Editor de macros, menú Insertar Módulo y allí la copias. Ajusta nombre de hoja destino, celda donde estará el dato a filtrar y otros detalles en las instrucciones que dicen: 'ajustar

Sub rescataDatos()
'x Elsamatilde
'se ejecuta en hoja activa copiando datos a otra hoja a partir de la 1er celda libre
Set hdest = Sheets("Hoja2")     'ajustar nombre de hoja
filx = hdest.Range("A" & Rows.Count).End(xlUp).Row + 1
'el dato a buscar se encuentra en F1 (ajustar)
datox = [F1]
'se recorre col A desde fila 2 hasta el fin de datos
[A2].Select
While ActiveCell.Value <> ""
ciudad = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
marca = 0
'recorre la col no mientras haya datos en 2da col
    While ActiveCell <> "" And ActiveCell.Offset(0, 1) <> "" And marca = 0
        If ActiveCell = datox Then
            'copia el registro en Hoja2
            hdest.Range("A" & filx) = ciudad
            hdest.Range("A" & filx + 1) = datox
            hdest.Range("B" & filx + 1) = ActiveCell.Offset(0, 3) 'col C...ajustar
            marca = 1
            filx = filx + 2
        End If
        ActiveCell.Offset(1, 0).Select
    Wend
If marca = 1 Then    'significa que encontró el dato, busca la próxima localidad
    While ActiveCell.Offset(0, 1) <> ""
        ActiveCell.Offset(1, 0).Select
    Wend
End If
Wend   
End Sub

2- otra opción posible sería con el uso de Filtro avanzado. En la imagen adjunta podrás observar un ejemplo. Allí coloco los criterios (con sus mismos títulos) en rango J:K y solicito el resultado a partir de col M. 

Luego debes ocultar las col que no necesites o copiar los registros resultantes en otro destino... tarea que también se puede realizar con macros.

Muchísimas gracias Elsa! Te agradezco un montón la ayuda tan completa y detallada, es justo lo que necesitaba.

Un gran saludo y que tengas un buen día!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas