Ordenar un conjunto de datos distribuidos aleatoriamente


0

Tengo un conjunto de datos distribuidos al azar, como se puede ver en la imagen a continuación. Me gustaría recopilarlos y colocarlos en orden de grupos (grupo1, grupo2, etc.). En el siguiente ejemplo, si el valor "1" está presente en cualquiera de las columnas A: R, entonces todos los "1" deben estar alineados en el grupo1. si no hay 1, entonces debería aparecer en blanco. ¿Hay alguna manera de hacer esto en Excel, ya sea con una fórmula o macro? Aunque prefiero la fórmula. Gracias.

Aquí está el enlace al libro de trabajo de ejemplo (editable): https://1drv.ms/x/s!AgVGRfBWRysXgWJTuf-ILJ0BTxyQ

ingrese la descripción de la imagen aquí


¿No puede simplemente agregar una tabla dinámica de los datos y agruparla?
Thales

Realmente preferiría una fórmula o macro. No me gustaría cambiar a una tabla dinámica cada vez.
Max

Respuestas:


1

En primer lugar, los grupos deben tener el mismo tamaño de datos (en caso de que la fila tenga solo un número). Entonces el Grupo 1 debe ser de T a AK. En la celda T2 ingrese la fórmula:

= IFERROR (ÍNDICE ($ A $ 2: $ R $ 2, PEQUEÑO (IF ($ A $ 2: $ R $ 2 = 1, COLUMNA ($ A $ 2: $ R $ 2)), COLUMNA (A: A))), "" )

Escriba la fórmula y presione Ctrl + Shift + Enter para ingresar una fórmula de matriz. Luego, al copiar y pegar en las columnas U a AK, se mostrarán en el Grupo 1 todas las ocurrencias del 1.

Algunos consejos para mejorarlo:

  • Si coloca en la celda T1 solo el número 1 y luego lo formatea de forma personalizada para mostrar "Group " 0, entonces puede cambiar el 1 en la fórmula a la dirección T1. Luego, al copiarlo a los otros grupos, la fórmula debe ajustarse a los otros números (debe poner 1 en cada columna de T a AK, pero mostrar solo uno de ellos y, de las columnas AM a BD, debe aparecer el número 2 y así sucesivamente).
  • Si su excel es 2010 o anterior, entonces no tiene la IFERROR()función. La solución consiste en utilizar una IF()y un ISERROR(): IF(ISERROR(...),"",(...)). El (...)es la fórmula del primer argumento de IFERROR().
  • Para copiar la fórmula a las otras filas, puede cambiar la función ÍNDICE para devolver una fila y una columna. La única diferencia es que la fila de retorno es la fila de la celda y la columna es la fórmula (...).

cuando pego la fórmula en T2 y Ctrl + Shift + Enter, me dice "ha ingresado demasiados argumentos para esta función". No pude obtener el resultado. ¿Ya probaste esta fórmula?
Max

Lo que básicamente quiero es recopilar los mismos números de un dígito (digamos 1 o 2) y luego alinearlos. Los 1 están separados. Los 2 están separados. Sigue así. pero su número no es fijo para cada fila. Puede que no haya 1 en la fila, o solo dos de ellos o tres. Esto lo hace complicado.
Max

Lo sentimos, hubo un error tipográfico en la fórmula. Ya lo corregí. La primera función COLUMNA () estaba mal. En cambio, es la función SMALL (). Probado aquí y funciona.
Thales

=INDEX($A$2:$R$2,SMALL(IF($A$2:$R$2=1,COLUMN($A$2:$R$2)),COLUMN(A:A)))debería ser lo correcto
Thales

Traté de hacer esto con la función de índice, pero no pude resolverlo. Sí, funciona muy bien. ¡Muchas gracias!
Max
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.