Механическая испытательная машина выводит 1000 строк данных (+ строка заголовка) в 4 столбцах на тест. Однако она выводит второй тест, начиная со строки 1002, третий тест — со строки 2003 и т. д. Мне нужно переместить каждый блок из 1001 строки (в 4 столбцах), чтобы начать со строки 1 в новом столбце. Тест 1 должен быть столбцом AD, тест 2 должен быть столбцом EH и т. д.
Любая помощь будет оценена по достоинству.
решение1
Вывод будет на отдельном рабочем листе.
Предположим, у вас есть 10 блоков данных, они будут находиться в диапазоне Export_Curve_03!A1:D10010
.
В ячейку A1 вашего выходного листа добавьте формулу
=INDEX(Export_Curve_03!$A$1:$D$10010,ROW(A1)+1001*INT((COLUMN(A1)-1)/4),1+MOD(COLUMN(A1)-1,4)
Скопируйте эту формулу до строки 1001 и далее для получения достаточного количества столбцов — 40 столбцов в случае 10 блоков данных, поэтому скопируйте в диапазон A1:AN1001
.
Преобразование, предположительно, требуется только один раз для каждого набора входных данных, поэтому, если дисковое пространство имеет значение, я бы заменил все данные на выходном листе на значения с помощью специальной вставки.
Объяснение
Функция INDEX
используется для выбора отдельных ячеек из массива и, как указано выше, имеет общую форму, INDEX(array,i, j)
представляющую собой значение в i-й строке и j-м столбце массива.
Выходные данные делятся Export_Curve_03!$A$1:$D$10010
на блоки по 1001 строка, при этом первый блок находится в столбцах AD выходных данных, второй — в столбцах EH, третий — в столбцах IL и т. д. Таким образом, ячейку выходных данных можно сопоставить с номером входного блока, используя выражение
INT((COLUMN(cell)-1)/4)
где cell
указывает ссылку на ячейку, например A805 или X20
Фактически, это выражение оценивается как 0 для ячейки в столбцах AD, 1 для ячейки в EH, 2 для ячейки в IL и т.д. Это на 1 меньше номера блока, что удобно, поскольку включение его в выражение
ROW(cell)+1001*INT((COLUMN(cell)-1)/4)
определяет правильный номер строки из входных данных, соответствующий ячейке выходных данных.
Требуемый номер столбца входных данных, соответствующий столбцу выходных данных, получается путем повторения шаблона 1,2,3,4,1,2,3,4,... по всем столбцам выходных данных, начиная с 1 в столбце A.
Выражение
1+MOD(COLUMN(cell)-1,4)
эффективно идентифицирует столбец входных данных (1, 2, 3 или 4), соответствующий ячейке выходных данных.
Два выражения для строки и столбца входных данных, соответствующие любой ячейке выходных данных, теперь можно подключить к функции INDEX, и это завершает объяснение.