Cómo extraer un recordatorio de una coincidencia en MS Excel 2003


0

Intenté usar varias combinaciones de funciones, pero parece que no hay una función específica que pueda devolver valores no buscados / coincidentes. Hacerlo manualmente lleva días debido a la gran cantidad de datos que necesito clasificar.

Quiero que MS Excel 2003 extraiga el resto de la Lista A basada en la Lista B.

* La lista A tiene 2000 artículos, la lista B tiene un máximo de 10-30

Lista A
No.1 ---- 1 2 3 4 5 6 (cada dígito se coloca en 1 celda, siempre 6 dígitos)
No.2 ---- 1 1 2 3 4 5 (cada dígito se coloca en 1 celda, siempre 6 dígitos)
No.3 ---- 1 3 4 5 6 7 (cada dígito se coloca en 1 celda, siempre 6 dígitos)

Lista B
No.1 ---- 1 2 3 (cada dígito se coloca en 1 celda, siempre 3 dígitos)
No.2 ---- 1 1 4 (cada dígito se coloca en 1 celda, siempre 3 dígitos)
No. 3 ---- 2 3 5 (cada dígito se coloca en 1 celda, siempre 3 dígitos)

Por ejemplo:

En la Lista A, encuentre coincidencias (si las hay) basadas en la entrada de la Lista B y devuelva el resto como salida. Si no se encuentra ninguna coincidencia, no se requiere salida.

Lista A
No.1 ---- 1 2 3 4 5 6 (cada dígito se coloca en 1 celda, siempre 6 dígitos)

Basado en la Lista B
No.1 ---- 1 2 3 (coincidencia encontrada (1 y 2 y 3 está presente), luego selecciono el resto manualmente # # # 4 5 6 o = 456)
No.2 ---- 1 1 4 ( no se encontraron coincidencias (1 y 1 y 4 no están presentes), no hay salida)
No.3 ---- 2 3 5 (coincidencias encontradas (2 y 3 y 5 están presentes), luego selecciono 1 # # 4 # 6 o salida = 146)

Supuse que utilizo la función COUNT para contar la frecuencia de cada dígito 0-9 en cada elemento de la Lista A y luego utilizo la función IF & AND (que especifica qué y cada dígito se requiere para calificar como una coincidencia) para decirme qué los elementos de la Lista B coinciden con la Lista A.

Por lo tanto, para cada elemento de la Lista A, requiero que Excel se ejecute a través de toda la Lista B y la salida podría variar desde ninguna salida hasta un máximo de 3 salidas.

También quiero la capacidad de cambiar los valores en la Lista B sin alterar la fórmula utilizada para buscar para poder usar la misma hoja de trabajo repetidamente con facilidad.

Hasta ahora, todos mis otros intentos de usar otras funciones no han podido extraer el resto de la manera que yo quiero. Si tienes alguna sugerencia por favor enséñame.


No entiendo cómo estás eligiendo los números de la tabla.
Raystafarian

@Raystafarian Refiné lo que quería, espero que esto sea lo suficientemente claro.
Peter Vermillion

¿Cada uno de los personajes necesita ser evaluado independientemente? ¿No estarán siempre en el mismo orden (serie) que la lista B? Esto va a ser muy difícil sin múltiples columnas auxiliares y demás, especialmente si es Excel 2003. Una macro podría hacerlo mejor.
Raystafarian

Sus reglas de coincidencia no tienen sentido. En la mayoría de los casos, parece que encuentra una coincidencia de cadena y el resto es cualquier número antes o después de la coincidencia. Sin embargo, su ejemplo para el resultado No.2 parece que la lista B 114 coincidió con 11 ## 4 para dejar 235.
Fixer1234

Entonces, el criterio de coincidencia es simplemente los tres dígitos en la lista B (¿siempre exactamente tres?), Que ocurren en el mismo orden en la Lista A pero no necesariamente de manera contigua. ¿Ambos elementos de la lista están siempre en orden ascendente?
Fixer1234

Respuestas:


1

OK, aquí hay una solución que funciona pero que puede causarle daño cerebral al configurarla. Lo construí paso a paso, calculando un conjunto de cosas que luego fueron utilizadas por los siguientes cálculos. Una vez que tuve un modelo de trabajo, trabajé hacia atrás, sustituyendo las fórmulas reales por las referencias de celda para que todas las fórmulas se refirieran solo a sus listas reales y no a cálculos intermedios. Las fórmulas se multiplicaron. De hecho, el primer intento produjo fórmulas que excedieron la capacidad de la celda. Lo dividí en dos tablas, la primera alimentaba a la segunda. Las tablas son muy grandes y se habrían vuelto locos al tratar de obtener todas las referencias de celda que apuntan a los lugares correctos para llenar las fórmulas en dos direcciones a lo largo de las tablas. Así que agregué algunas referencias indirectas para que las fórmulas simplemente se puedan copiar y pegar y funcionarán sin limpieza manual. Desafortunadamente, eso produjo algunas fórmulas bastante grandes.

Explicaré esto como un ejemplo ubicado en lugares específicos en una hoja de cálculo. Si necesita ubicar las piezas en otro lugar, edite todas las referencias de fila y columna en la primera celda y luego copie y pegue para llenar las tablas. Para su propia cordura, configure algunos ejemplos conocidos para que pueda verificar que los primeros dos renglones y columnas de cada tabla funcionen antes de completar todo. Tome un par de aspirinas profilácticas y comenzaremos.

Esto se basa en su Lista A en las columnas A a F con datos que comienzan en la fila 1 (2,000 filas). La lista B está en las columnas H a J con datos que comienzan en la fila 1 (30 filas).

La primera tabla comienza en L1. Esta tabla crea una lista de las posiciones de las entradas de la Lista B en los registros de la Lista A. Por ejemplo:

                          Position:  1 2 3 4 5 6          
    So if a List A record contains:  1 3 3 5 7 9
    and a List B record contains:    1 3     7
    the entry in this table will be: 1 2     5  (stored as a single number: 125)

Si el registro de la Lista B no coincide con el registro de la Lista A, habrá un # N / A en la celda. El diseño de esta tabla es así:

            [L]     [M]      [N]       [O]  
    [1]             <=======List B Row========>
    [2] List A Row   1        2         3    ...
    [3]     1
    [4]     2
    [5]     3
        ...

En realidad, debe colocar los números de fila como encabezados de columna en la fila 2 de las columnas M a AP y como etiquetas de fila en la columna L. Esto es lo que usan las fórmulas como punteros. Hay 30 columnas de datos, una para cada fila de entradas de la Lista B, y tendrá 2,000 filas, que representan las entradas en la Lista A, comenzando en la fila 3. Cada celda de la tabla refleja una entrada de la Lista B frente a una entrada de la Lista A . Esta es la fórmula para M3:

    =MATCH(INDIRECT("H"&M$2),$A1:$F1,0)&MATCH(INDIRECT("H"&M$2),$A1:$F1,0)
     +MATCH(INDIRECT("I"&M$2),INDIRECT(ADDRESS($L3,MATCH(INDIRECT("H"&M$2),$A1:$F1,0)+1, , )&":$F"&$L3),0)&MATCH(INDIRECT("H"&M$2),$A1:$F1,0)
     +MATCH(INDIRECT("I"&M$2),INDIRECT(ADDRESS($L3,MATCH(INDIRECT("H"&M$2),$A1:$F1,0)+1, , )&":$F"&$L3),0)
     +MATCH(INDIRECT("J"&M$2),INDIRECT(ADDRESS($L3,MATCH(INDIRECT("H"&M$2),$A1:$F1,0)
     +MATCH(INDIRECT("I"&M$2),INDIRECT(ADDRESS($L3,MATCH(INDIRECT("H"&M$2),$A1:$F1,0)+1, , )&":$F"&$L3),0)+1, , )&":$F"&$L3),0)

He roto la fórmula aquí para que sea más legible, pero es una sola fórmula. Verifique que lo tenga funcionando en M3 a N4 con algunos datos de muestra y luego copie y pegue para llenar la tabla.

La segunda tabla comienza en AR1. Esta tabla está estructurada de la misma manera:

           [AR]    [AS]      [AT]      [AU]  
    [1]             <=======List B Row========>
    [2] List A Row   1        2         3    ...
    [3]     1
    [4]     2
    [5]     3
        ...

Esta tabla funciona de manera similar a la primera: cada celda representa los resultados de un registro de la Lista B frente a un registro de la Lista A. Esta tabla contiene su resto. Entonces, en el ejemplo que di para la primera tabla, el resto sería 359:

    So if a List A record contains:  1 3 3 5 7 9
    and a List B record contains:    1 3     7
    the remainder is:                    3 5   9

La fórmula que va en la celda AS3 es:

    =IF(ISNA(M3),"",IF(ISERROR(FIND(COLUMN(INDIRECT("a"&$AR3)),M3)),INDIRECT("a"&$AR3),"")&
     IF(ISERROR(FIND(COLUMN(INDIRECT("b"&$AR3)),M3)),INDIRECT("b"&$AR3),"")&
     IF(ISERROR(FIND(COLUMN(INDIRECT("c"&$AR3)),M3)),INDIRECT("c"&$AR3),"")&
     IF(ISERROR(FIND(COLUMN(INDIRECT("d"&$AR3)),M3)),INDIRECT("d"&$AR3),"")&
     IF(ISERROR(FIND(COLUMN(INDIRECT("e"&$AR3)),M3)),INDIRECT("e"&$AR3),"")&
     IF(ISERROR(FIND(COLUMN(INDIRECT("f"&$AR3)),M3)),INDIRECT("f"&$AR3),""))

Cada celda en esta tabla contendrá el resto o un carácter nulo si no hubo coincidencia.

Quería obtener un resumen de los resultados para cada registro de la Lista A. Como cada fila de la tabla representa un registro de la Lista A, el resumen puede ir al final de cada fila de la tabla. Las 30 columnas de la tabla terminan en la columna BV, por lo que los resultados están en la columna BW. La fórmula para BW3 será:

    =AS3&IF(ISBLANK(AS3),""," ")&AT3&IF(ISBLANK(AT3),""," ")& ... &BV3&IF(ISBLANK(BV3),""," ")

En lugar de mostrar los 30 términos aquí, esto muestra solo los dos primeros y el último. Sigue el mismo patrón para agregar el resto. Construye la cadena de resultados concatenando los resultados de cada coincidencia. Si hay un valor en una celda, agrega un espacio antes del siguiente valor. Si desea un delimitador diferente, cambie el espacio a otro, como el espacio de coma. Copie esta fórmula en la columna BW para todas las filas.

Probablemente este no sea el lugar más útil para los resultados. Una vez que tenga todo funcionando, puede mover las cosas. En realidad, si mueve algo, puede tener una limpieza masiva de las referencias de celda. Tendría más sentido crear la salida que desea en otra ubicación y usar referencias de celda para referirse a lo que ya está configurado.


@Peter Vermillion: la columna L son los números de fila de la Lista A, que las fórmulas usan como índice. Lo mismo para la columna AR. Debe insertar esos números para actuar como etiquetas de fila para las tablas. Los números de fila para la Lista B debe ingresar como encabezados de columna en la fila 2, las columnas M a AP para la primera tabla y las columnas AS a BV para la segunda tabla. Para que las fórmulas funcionen, debe crear realmente los encabezados de fila y columna para que se vean como los ejemplos en la respuesta. Tome más aspirina e intente nuevamente.
fijador1234

tomando más aspirina ... intentándolo de nuevo
Peter Vermillion

funciona como un sueño
Peter Vermillion
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.