¿Cómo puedo buscar un valor específico dentro de varios pequeños conjuntos de datos en excel?

Tengo una columna base de datos (números) en excel, tengo otra hoja en la que tengo varios conjuntos de datos agrupados en columnas, cada columna corresponde a un número específico como encabezado. Necesito buscar dentro de dichas columnas si el número que estoy buscando (primera base de datos) se encuentra en algunas de las columnas y que como resultado me dé el número que encabeza dicha columna de datos. Quién me puede apoyar con esta actividad? Gracias

1 Respuesta

Respuesta
1

Mándame el fichero a

[email protected]

Pon como asunto el título de la pregunta y como nombre del fichero pon

PequeñosConjuntosDatos.XLSX

(OXLSM si es esa su terminación)

Déjame ver si lo he entendido con el tercer número. NUMBER = 17, INDEX= 6

Entonces tengo que buscar el numero 17 en la fila 6º. Pues sucede que esta el primero, entonces el resultado sería 6, ¿No?

Espero que lo hago con otro más Number=30, Index=1. Pues aquí el número 30 no aparece en ningún lugar de la columna...¿Qué se hace?

Y cuando el número buscado esté en rojo se toma el mismo ¿no? Ya que es el primero del grupo.

Espero esas aclaraciones.

Pero antes te daré mi impresión:

El problema parece fácil de resolver por macros. Podría ser ejecutarla bajo demanda, botón o que se ejecutara cuando cambiemos algún valor en las columnas A o B. La desventaja es que las macros eliminan el historial de deshacer, que a lo mejor tampoco te importa nada pero hay que avisarlo.

Y el hacerlo mediante una función de Excel tendría que mirarlo bastante y no te aseguro si lo podría hacer, no es algo tan obvio.

Pues eso, aclarame las dudas y me dices si te sirve con macros.

Hola!!

Así es, con el siguiente NUMBER=17 INDEX=6 el resultado sería 6.

Con el ejemplo de NUMBER=30 INDEX=1, como 30 no aparece en ninguno, para mi es bueno si el resultado aparece en blanco o aparece el 0, lo que sea más fácil, el 0 me parece buena opción.

Cuando el número buscado corresponde al que esta en rojo, efectivamente se coloca el mismo ya que aparecería siempre en el primer subconjunto.

Probablemente el resultado lo vaya a utilizar como valor numérico posteriormente. Suena bien que se ejecute cuando se cambie el valor de NUMBER, con macros esta perfecto si es una opción viable.

Un saludo y gracias.

Pues como me temía. Con funciones de Excel es medio imposible, asi que esta hecho con una macro que se ejecuta cuando cambiamos algún valor en la columna A o B.

Si el número o índice están vacíos el resultado estará vació.

Si el indice es mayor de 9 también estará vacío

Si el número e indice tienen algo y el indice es menos o igual que 9 y el número no se encuentra el resultado será 0. Aunque cuidado con esto porque he visto ceros en la tabla y si alguno estuviera en rojo no se distinguiría lo que es una respuesta buena de una que no lo es. Yo pondría otro distintivo o la casilla vacía. Ya me lo dirás. Basta con cambiar la línea que pone

Cells(Target.Row, 3) = 0

Y si los dos números son buenos y se encontró en la tabla aparece el número de color rojo anterior. La fórmula para calcularlo ese número rojo es complicada, pero ose hace eso o se tienen que formular cuatro casos distintos.

Y lo mejor será que la pruebes y si necesitas alguna aclaración me la pides.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rango As Range, Fila As Integer
If Not Intersect(Target, Range("A:B")) Is Nothing Then
  Fila = Target.Row
  If Cells(Fila, 1) <> "" And Cells(Fila, 2) <> "" And Cells(Fila, 2) <= 9 Then
    Set Rango = Worksheets("Sheet2").Columns(Cells(Fila, 2)).Find(what:=Cells(Fila, 1), lookat:=xlWhole)
    If Not Rango Is Nothing Then
      Cells(Fila, 3) = Worksheets("Sheet2").Cells(7 * Int((Rango.Row - 2) / 7) + 2, Cells(Fila, 2))
    Else
      Cells(Target.Row, 3) = 0
    End If
  Else
    Cells(Target.Row, 3) = ""
   End If
End If
End Sub

Ahora te mando el fichero.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas