У меня есть ряд, который с клетками равномерно распределены между друг другом. Я хотел бы, чтобы каждая восьмая ячейка в этой строке ссылалась на ячейку на другом листе, где между ячейками нет пробелов. У меня в этой строке много данных, поэтому я не хочу ничего делать, что замедлит и без того большой документ без кода VB.
1 ответ
Вот суть того, как этого добиться.
Скажем, исходные значения на sheet1 находятся в строке 3, начиная с столбца C; так С3, Д3, Е3 и т. д. Ячейки дисплея находятся на листе 2 в строке 5, начиная со столбца B, затем в каждой восьмой ячейке, то есть B5, J5, R5 и т.д. Я специально использовал разные строки и начальные столбцы для иллюстрации. Это может быть проще в вашем случае.
Таким образом, вы хотите, чтобы B5 отображал C3, J5 отображал D3, R5 отображал E3 и т.д. Есть два распространенных способа сделать это, используя OFFSET или INDIRECT. Я проиллюстрирую оба.
Вычисление столбца: для любого из них вам нужно вычислить количество приращений столбца (приращение составляет 8 на листе 2 против 1 на листе 1). Формула для этого будет:
(COLUMN()-COLUMN(B5))/8 or in this example:
(COLUMN()-2)/8
Пустая функция COLUMN() возвращает столбец ячейки, в которой она находится. Для каждой отображаемой ячейки на sheet2 ее столбец за вычетом первого столбца в серии, разделенный на 8, дает число приращений столбцов на sheet1.
Для OFFSET, вы бы использовали это так. Формула в ячейках листа 2 будет иметь вид:
=OFFSET(sheet1!C3,0,(COLUMN()-2)/8,1,1)
OFFSET работает из якорной ячейки (в данном примере C3), затем смещает 0 строк, смещает количество столбцов, рассчитанных по приведенной выше формуле, и возвращает результат размером 1 строка на 1 столбец (одна ячейка).
INDIRECT переводит то, что вы строите, из текста и расчетов, в адрес. Для этой функции вам нужно добавить точку привязки, чтобы найти фактический адрес ячейки. INDIRECT позволяет вам использовать альтернативный стиль спецификации адреса, который удобен для вычисления столбцов; это относится к столбцам как числа, а не буквы. Ячейка C3 будет R3C3 или строка 3, столбец 3.
Добавление в столбец якоря приведет к тому, что вычисление столбца будет выглядеть так:
(COLUMN()-COLUMN(B5))/8+COLUMN(sheet1!C3) or in this example:
(COLUMN()-2)/8+3
Создание ссылки на ячейку осуществляется путем объединения текста и вычисленных чисел:
=INDIRECT("sheet1!R3C"&(COLUMN()-2)/8+3,false)
"Ложь" означает, что ссылка на ячейку выполнена в стиле "R1C1".
Настройте любую формулу в первой ячейке отображения на sheet2, настроив ее в соответствии с макетом вашей электронной таблицы. Затем скопируйте его в каждую из других ячеек дисплея.