Seguimiento inverso de una lista de elementos numerados


3

¿Existe una forma programática, con suerte no macro, de realizar un seguimiento inverso de un conjunto de elementos numerados?

Ejemplo:

texto alternativo

Las primeras dos columnas son aquellas en las que se ingresan los datos. Puede ver que el elemento A tiene una relación con los elementos 1, 2 y 3. En la columna más a la derecha, los elementos 1, 2 y 3 se remontan al elemento A.

Si esto requiere absolutamente una macro personalizada, ¿puede proporcionar algunas sugerencias sobre cómo procesarla previamente con funciones integradas para facilitar la escritura de la macro?

Respuestas:


1

No creo que haya una manera de hacer el tipo de búsqueda que estás buscando en esto sin una macro. Podría estar equivocado, pero si no lo estoy, aquí hay una función personalizada para usted.

Esto parece funcionar sin ningún procesamiento previo. Lo usarías como tal:

En la celda al lado de 1, la fórmula sería

=ReverseTrace(A10,$B$1:$B$7,-1)

Asumiendo:

  • A10 es la ubicación de "1" (el valor que está buscando)
  • $ B $ 1: $ B $ 7 es la ubicación de su lista de artículos (1, 2, 3 hasta 2, 4)
  • -1 es el desplazamiento de la columna de esta lista $ B $ 1: $ B $ 7 que desea consultar

Al lado de 2, sería = ReverseTrace (A11, $ B $ 1: $ B $ 7, -1)

Function ReverseTrace(varValue As Variant, lookupRange As Range, intTraceOffset As Integer)

Dim rngCell As Range

    For Each rngCell In lookupRange
        If InStr(1, CStr(rngCell.value), CStr(varValue)) > 0 Then

            If Len(ReverseTrace) > 0 Then
                ReverseTrace = ReverseTrace & ", " & rngCell.Offset(0, intTraceOffset)
            Else
                ReverseTrace = rngCell.Offset(0, intTraceOffset)
            End If

        End If
    Next

End Function

0

He tenido una grieta en esto usando fórmulas de matriz, sin mucho éxito.

Casi he llegado allí, así que he decidido publicar mis (falta de) resultados hasta ahora, en caso de que alguien más pueda desarrollar el paso final que me estoy perdiendo.

Esto es lo que tengo hasta ahora. Casi funciona, pero dado IFque parece que no devuelve una matriz, solo el primer elemento, terminas solo con la primera categoría ("A") en lugar del conjunto. No estoy seguro de si es posible arreglar esto, ¿alguien más tiene alguna idea?

CONCATENATE( IF( NOT( ISERROR( SEARCH(D1,$B$1:$B$7) ) ), $A$1:$A$7 , "" ) )

Rangos en la matriz:

  • $B$1:$B$7 ¿Estás buscando vals ("1,2,3", etc.)
  • $A$1:$A$7 son las categorías ("A", "B", etc.)
  • D1 es el valor que estás investigando
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.