Здравствуйте! Пробую перейти на OpenOffice. Столкнулся с проблемой соответствия функций ДВССЫЛ и INDIRECT. ДВССЫЛ позволяет склеивать адрес ячейки. Выглядит это примерно так: ДВССЫЛ("2стр!B"&G11&":"&"B"&H11)
INDIRECT пишет, что это недопустимый аргумент. Подскажите, пожалуйста, есть ли в Calc способ также просто склеивать адрес ячейки?
[вложение удалено Администратором]
Глянул на книгу и первый вопрос: а почему не через Offset (Смещ)? Утром посмотрю внимательнее
PS. Там, кстати, глючит не INDIRECT, а MATCH... Последний, третий параметр в MATCH - ожидаемый (или гарантированный?) порядок сортировки. А в '2стр'!A1:A2 у нас сидят слово "Дата" и сумма по второй строке... Ексель такие данные проглатывает, а LO - ругается. А с этого места уже и остальные ошибки лезут.
Кстати, насчет суммы в A2. А почему здесь не просто =SUM(F2:AL2)?
Там глючит организация данных на листе "2стр":
- в параметрах MATCH указаны диапазон A1:A2721 и третий параметр = 1, т.е. данные строго упорядочены по возрастанию
- на листе упорядоченные данные начинаются с 6-й, а не с 1-й строки, да и внутри диапазона есть пустые строки.
Совет:
- либо поменяйте параметр MATCH на 0 - неупорядоченные данные, но строгое соответствие,
- либо приведите данные листа "2стр" в порядок.
Я бы, наверное, вообще отказался от MATCH в этой книге. Ну, например, у оператора рука дрогнула и стоя посреди таблицы он нажал, например, кнопку сортировки: данные отсортировались по возрастанию сумм, а даты, соответственно, выстроились в беспорядке. И тут же все MATCH'и выдадут неправильные номера строк или #Н/Д и все итоговые суммы превратятся в кашу.
Поскольку здесь требуется суммирование по условию, то само напрашивается SUMIF. Правда, условие сложное, не на точное совпадение с датой, а на попадание в диапазон "первый день месяца - последний день месяца". Поэтому, ИМХО, здесь нужен SUMPRODUCT и EOMONTH
Ну, вопрос адекватного задаче решения - это уже, как говорится, 2-й вопрос, профессор. Тут по уму нужно статью писать на эту тему - один раз и навсегда, на форуме всякий раз одно и то же советовать - пальцы сотрешь.
Дык, это же Mike Harding Roberts (http://www.hraconsulting-ltd.co.uk/project-management-proverbs.htm): There's never enough time to do it right first time but there's always enough time to go back and do it again. (http://translate.google.com.ua/#en%7Cru%7CThere's%20never%20enough%20time%20to%20do%20it%20right%20first%20time%20but%20there's%20always%20enough%20time%20to%20go%20back%20and%20do%20it%20again.) - невозможно найти минутку, чтобы сесть и написать статью :(
В общем, у меня для LO получилось нечто монстрообразное: {=IF($A11="";"";SUM(((EOMONTH($Сводная.$A11;0)=EOMONTH($2стр.$A$4:$A$10000;0))*($2стр.$B$4:$B$10000+$2стр.$H$4:$H$10000+$2стр.$N$4:$N$10000))))}
Выглядит, конечно, ужасно. Но это из-за того, что я не использовал именованные диапазоны для столбцов в 2стр. Если дать им человеческие имена, должно стать нагляднее.
Тем, кто захочет воспользоваться этой конструкцией, напоминаю: эту формулу нужно вставить в ячейку Сводная.B11, завершить ввод Ctrl+Shift+Enter чтобы получилась формула массива, растягивать вниз по столбцу B с зажатой клавишей Ctrl! В результате должны получить не один большой массив с ошибками #ИМЯ?, а суммы напротив каждой из дат.
При этом можно "наплевать и забыть" (с) В.И.Чапаев) про функции из сабжа - формулы в Сводная.D:J уже не нужны.
Но напоминаю! Это решение для LO или ООо! Хоть в XL и включена функция EOMONTH(), она входит в пакет Analysis ToolPak и реализована весьма похабно таким образом, что не понимает диапазон ячеек в качестве первого параметра. Поэтому в МСО формула работать не будет.
Благодарю за все ответы по моему вопросу. И, как всегда, при общении с компьютером главное - внимание! Указал корректный диапазон и всё заработало!
ДВССЫЛ использовал потому, что на planetexel.ru её описание попалось первым. Прочитал бы сначала про СМЕЩ - была бы она.
Ещё раз всех благодарю!