Una máquina de pruebas mecánica genera 1000 filas de datos (+ una fila de título de encabezado) en 4 columnas por prueba. Sin embargo, genera la segunda prueba comenzando en la fila 1002, la tercera prueba en la fila 2003, y así sucesivamente. Necesito mover cada bloque de 1001 filas (en 4 columnas) para comenzar en la fila 1 de una nueva columna. La prueba 1 debe ser la columna AD, la prueba 2 debe ser la columna EH, y así sucesivamente.
Cualquier ayuda sería apreciada
Respuesta1
El resultado estará en una hoja de trabajo separada.
Supongamos que tiene 10 bloques de datos, estos estarán dentro del rango Export_Curve_03!A1:D10010
.
En la celda A1 de su hoja de trabajo de salida, agregue la fórmula
=INDEX(Export_Curve_03!$A$1:$D$10010,ROW(A1)+1001*INT((COLUMN(A1)-1)/4),1+MOD(COLUMN(A1)-1,4)
Copie esta fórmula hasta la fila 1001 y a lo largo para obtener suficientes columnas: 40 columnas en el caso de 10 bloques de datos, así que cópiela al rango A1:AN1001
.
La conversión, presumiblemente, se requiere solo una vez para cada conjunto de datos de entrada, por lo que si se considera el espacio de almacenamiento, mi práctica sería cambiar todo en la hoja de cálculo de salida a valores usando pegado especial.
Explicación
La INDEX
función se usa para seleccionar celdas individuales de una matriz y, como se usó anteriormente, tiene una forma general INDEX(array,i, j)
que es el valor en la i'ésima fila y j'ésima columna de la matriz.
La salida se divide Export_Curve_03!$A$1:$D$10010
en bloques de 1001 filas con el primer bloque en las columnas AD de la salida, el segundo en las columnas EH, el tercero en las columnas IL, etc. Por lo tanto, una celda de la salida se puede hacer coincidir con el número de bloque de entrada usando la expresión
INT((COLUMN(cell)-1)/4)
donde cell
indica una referencia de celda como A805 o X20
De hecho, esta expresión se evalúa como 0 para una celda en las columnas AD, 1 para una celda en EH, 2 para una celda en IL, etc. Esto es 1 menos que el número de bloque, lo cual es conveniente porque incorporarlo dentro de la expresión
ROW(cell)+1001*INT((COLUMN(cell)-1)/4)
identifica el número de fila correcto de la entrada correspondiente a una celda de la salida.
El número de columna requerido de la entrada que coincide con una columna de la salida se obtiene repitiendo el patrón 1,2,3,4,1,2,3,4,... en las columnas de la salida comenzando con 1 en la columna A.
La expresion
1+MOD(COLUMN(cell)-1,4)
identifica efectivamente la columna de la entrada (1, 2, 3 o 4) correspondiente a una celda en la salida.
Las dos expresiones para la fila y la columna de la entrada correspondiente a cualquier celda de salida ahora se pueden conectar a la función ÍNDICE y esto completa la explicación.