Erb 21.11.2012 20:43
Есть проблема! — Вопрос по LibreOffice Calc
Дано:Строка длинной в 80 клеток
В каждой клетеке есть данные в формате целого числа
Надо на соседнем Sheet превратить эту строку в столбик при этом мне нужно число только из каждой четфертой клетки первоначальной строки.
Еще раз:
Имеем:
А$5: 6 3 2 4 6 1 2 8 4 3 4 3 2 8 4 2 1 ....... 3
Надо:
$B1:
6
6
4
2
1
.
.
.
3
Чего я смог достичь:
при помощи вот такого выражения я могу получить адрес клетки.
1 |
|
В $C$1 находится смещение = 4, на которое надо сдвигать курсор, при вытягивании мышой за угол клетки на всю колонку.
проблема в том, что в клетке с этой формулой я получаю адрес, но в формате TEXT и не могу найти, как его подставить в формулу в виде адреса, а не текста.
Поскольку в вышеописанном способе я зашел в тупик - попробовал зайти с другой стороны и использовал для клeтки B1:
1 |
|
В этом случае я получаю все 80 значений, и как оставить только каждое 4 - тоже не могу найти.
Кто сталкивался с такими задачами - подскажите, хотябы, куда копать.
Спасибо
Решение:
1 |
|
где в (4*(ROW()-1)) рассчитывается шаг клетки. -1 - значит, что начинаем с самой верхней строки. Если начинаем, скажем, с 5, то соответственно -5.
Спасибо Андрей за наводку на INDIRECT
Что интересно, что из описания функции я сразу не вник, что она мне нужна, хотя несколько раз перечитал, т.к. по назаванию казалось то, что надо. После твоего совета посмотрел еще раз в описание, а там первой строкой:
Returns the reference specified by a text string.
Как я это изначально пропустил?
Вообщем всем спасибо за помощь, вопрос решен - мир спасен, конец света в очередной раз отложили.
jh 22.11.2012 06:48 #
+ 0 -
в сторону макросов.
Глупое и костыльное решение:
Поставить в соседней клетке номер ячейки через COLUMN
Затем через =IF(MOD(порядковый номер;4)=0;значение по порядковому номеру)
Ну а потом через фильтры вывести всё что не равно false.
Пример:
6 5 4 1 13 34 484 6 5 4
1 2 3 4 5 6 7 8 9 10
ЛОЖЬ ЛОЖЬ ЛОЖЬ 1 ЛОЖЬ ЛОЖЬ ЛОЖЬ 6 ЛОЖЬ ЛОЖЬ
Поставить в соседней клетке номер ячейки через COLUMN
Затем через =IF(MOD(порядковый номер;4)=0;значение по порядковому номеру)
Ну а потом через фильтры вывести всё что не равно false.
Пример:
6 5 4 1 13 34 484 6 5 4
1 2 3 4 5 6 7 8 9 10
ЛОЖЬ ЛОЖЬ ЛОЖЬ 1 ЛОЖЬ ЛОЖЬ ЛОЖЬ 6 ЛОЖЬ ЛОЖЬ
Что-то слишком тривиально...
в B1: =INDIRECT(ADDRESS(COLUMN(B2)+3;(ROW(B2)-2)*4+1;;;"Sheet1"))
и протянуть.
+3 это чтобы начинать с пятой строки в столбце B
*4 - каждая четвертая ячейка
в B1: =INDIRECT(ADDRESS(COLUMN(B2)+3;(ROW(B2)-2)*4+1;;;"Sheet1"))
и протянуть.
+3 это чтобы начинать с пятой строки в столбце B
*4 - каждая четвертая ячейка