У меня есть ряд, который с клетками равномерно распределены между друг другом. Я хотел бы, чтобы каждая восьмая ячейка в этой строке ссылалась на ячейку на другом листе, где между ячейками нет пробелов. У меня в этой строке много данных, поэтому я не хочу ничего делать, что замедлит и без того большой документ без кода VB.

1 ответ1

0

Вот суть того, как этого добиться.

Скажем, исходные значения на 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, настроив ее в соответствии с макетом вашей электронной таблицы. Затем скопируйте его в каждую из других ячеек дисплея.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .