Верстка таблиц
В ячейках А1:В24 находится база данных, состоящая из повторяющихся модулей. Задача – распределить эти значения в виде развёрнутой таблицы D1:G7
В принципе, значения можно перетаскать, но есть более деликатное решение.
Нам понадобится формула =ДВССЫЛ(АДРЕС(1;1))
Которая состоит из комбинации двух независимых формул:
ДВССЫЛ (определяет адрес ячейки из текстового обозначения) смотри справку
АДРЕС (преобразует адрес ячейки из формата VBA в формат Excel) смотри справку
Что значит формат VBA ??? Лист в Excel разбит на именованные ячейки, которые могут обозначаться 3 типами:
Например: А1 = R1C1 = Cells(1, 1) всё это обозначение одной ячейки А1
VBA понимает все 3 формата, но чаще всего используется обозначение Cells(1, 1) где:
Cells(номер строки сверху вниз, номер столбца слева на право)
Так вот, если мы забубеним в любую ячейку формулу =ДВССЫЛ(АДРЕС(1;1)) , то результатом будет значение ячейки А1. Естественно, меняя значения (1;1) на другие – вы получите ссылку на соответствующие ячейки. Кстати, ДВССЫЛ способна распознавать ссылки как на листы так и на файлы Excel, что может значительно расширить возможности применения.
Теперь вернёмся к первоначальной задаче.
Если вы догадались, мы должны в D1:G7 проставить формулы =ДВССЫЛ(АДРЕС(1;1)) и получить искомые значения в нужном виде (развёрстке). Однако мы не хотим вручную прописывать значения в каждую формулу, вдруг их там будет 50 000 ???
Тогда рядом I2:L7 мы создаём массив параметров смещения, который укажет формуле, какую строчку из столбика В1:В24 нужно применить.
=ДВССЫЛ(АДРЕС(I2;2)) второй параметр у нас всегда будет равен 2, так как значения выбираются только из 2 по порядку столбика В:В
В принципе, таким образом можно достигнуть выборки по любым ячейкам, главное – указать их адреса.