Ситуация такова: оптимизационная программа выгружает результаты оптимизации в Excel, причем сами данные представляют собой трехмерный массив: Продукт, Дата его производства и Вид сырья, который пойдет на каждый вид продукта в каждую дату. Конечно, можно выгрузить эти данные в отдельные листы или отдельные диапазоны одного листа, но навигация по этим данным будет сильно затруднена.
Вижу следующий вариант: разместить в строках измерение продукта, в столбцах - вид сырья. А в ячейках через точку с запятой (или любой другой разделитель) выгрузить данные за каждый день. Но как мне теперь вернуть данные за конкретный день? Интуиция подсказывает, что можно с помощью формулы массива ПОИСК, но как сосчитать позицию n-ного разделителя, придумать не могу.
По мне так проще было бы разместить на листах таблицу Продукт - Вид сырья. А листы обозвать нужными датами. Тогда можно и сквозное суммирование использовать. Да и вполне логично будет.
Если автоматизировать бардак, то получится автоматизированный бардак.
Спасибо. Это тоже вариант, но от него как раз хотелось бы уйти. Данных ОЧЕНЬ много. К тому же, не исключаю появление четырехмерного массива. Его можно будет сохранить в ячейку с помощью двух видов разделителей. Поэтому нужно искать какой-то способ "вытягивания" данных из ячеек. В крайнем случае, конечно, можно макрос написать.
Может тогда и не Ексель использовать, а например Акссес? И вытягивать нужные данные запросами? Потому как в данном случае Ексель вместо удобства, накладывает свое двухмерное ограничение, которое надо обходить...
Если автоматизировать бардак, то получится автоматизированный бардак.
Странный вы формат родили, почему не подходит простой вариант, с колонками (Продукт, Дата его производства и Вид сырья) и строками на каждое разнообразие? Потом сводной таблицей, это все крутить как хочется. А если данные измеряются уже миллионами строк, тогда уж лучше серверный OLAP запилить.
serdiuk написал: данные представляют собой трехмерный массив: Продукт, Дата его производства и Вид сырья
И у меня такая же проблема. Реально, у меня (да и у многих из Вас) есть данные, которые можно разместить в 3d-таблице. Это: - по оси X - "Статьи затрат" - по оси Y - "Наименование продукции" - по оси Z - "Период" Данные осей X, Y размещаются в двухмерной стандартной таблице Excel. Данные оси Z размещаются на разных листах. Удобнее было бы, если бы все данные были в одной трехмерной таблице - залез мышью в таблицу и легко выделяешь и сосчитываешь неоходимые данные. Я понимаю, что многое можно получить стандартными средствами Excel, но это не очень удобно.
Подскажите, пожалуйста, может, кто-нибудь обладает информацией, в какой программе можно построить трехмерную таблицу и работать с ее данными. Просто картинка в 3d не нужна, трехмерные графики - это не то, что нужно.
Неужели MicroSoft не может внедрить 3d-Excel, считаю, что это не сложно.
разработать Базу Данных, можно на сервере... учитывая все правила формирования БД... работать с БД (а не с сырьём через запятую)... можно будет применить Power Pivot (надстройка xl)
Цитата
Roiko написал: в какой программе можно построить трехмерную таблицу и работать с ее данными.
вы с какой-то непонятной стороны смотрите на xl или на ваше представление о трёхмерности... создаёте 3 столбца с 3-мя вашими измерениями и считаете, или вытягиваете из них что угодно - по ключам (может быть составной, т.е. состоящий из значений нескольких полей "период | продукт | статьи затрат"... если вы из такой структуры не можете просчитать, что вам надо - это др. вопрос... насколько вы знаете сам xl ... если чуть посложнее - то вопрос алгоритма обсчёта тех или иных показателей
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
JeyCi, так ведь хочется получить не просто какую-то выборку, а визуально, самому вручную это выбрать (посчитать, сравнить). Т.е. нужно визуально провести анализ данных находясь внутри самих данных.
Трехмерность? Внешне выглядит так, как в Win7 нажать клавиши Win+Tab: есть высота, ширина, глубина. Этого я и хочу от Excel.
Roiko написал: визуально, самому вручную это выбрать (посчитать, сравнить).
вы меня не услышали или не захотели понять или не захотели проверить... что обойтись можно просто предложенным инструментом - sql-запросы... ну и ладно... хотя автоматизация для того и создана, чтобы НЕ визуально и НЕ вручную
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Я согласен. Я лишь пытаюсь показать то, как я себе представляю трехмерную таблицу Excel. Ось Z - это и есть глубина, т.е. период. Пока-то что на каждый период я делаю копию таблицы на новом листе. А так было бы все на одном листе - своего рода слоеный пирог, где каждый слой - период. Мне кажется, что так было бы удобнее работать с данными (вводить, смотреть, сравнивать) - сразу видны данные за какой-то БОЛЬШОЙ период времени, а так приходится постоянно прыгать с одного листа на другой.
Пример? Ну это обыкновенный кубик. - вправо - по оси X - "Статьи затрат" - вниз - по оси Y - "Наименование продукции" - в глубину - по оси Z - "Период". Двумерность - это очень хорошо, но не всегда.
Вот поэтому и интересуюсь - есть ли какая программа, позволяющая работать по принципу, описанному выше. Или я где-то сильно заблуждаюсь?
что хотите смотреть и сравнивать? покажите... куда вводить - подскажут... p.s. а трёхмерно - читать неудобно будет... по одной из плоскостей текст/цифры точно будет(ут) накладываться др на др...
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
serdiuk написал: оптимизационная программа выгружает результаты оптимизации в Excel, причем сами данные представляют собой трехмерный массив: Продукт, Дата его производства и Вид сырья, который пойдет на каждый вид продукта в каждую дату.
В примере как раз не массив, а сводная таблица на основе этого массива, сохраненная в виде значения. Неужели из такой программы невозможно получить нормальную 2-мерную таблицу, а для анализа использовать сводную?
Цитата
Roiko написал: в какой программе можно построить трехмерную таблицу и работать с ее данными.
Программа - Excel, инструмент - сводные таблицы.
Цитата
Roiko написал: Трехмерность? Внешне выглядит так, как в Win7 нажать клавиши Win+Tab: есть высота, ширина, глубина. Этого я и хочу от Excel.
Только вот WIn 7 - это плоский монитор. Даже если получить такую пространственную картинку, то Вы не сможете её анализировать, мозгов не хватит. Проведите простой эксперимент - сделайте две таблицы одинаковой структуры 20х20 (например), положите их рядом на рабочем столе и замерьте время, которое потратите на сравнение этих двух таблиц. С помощью сводной же вы потратите не более 5 мину, хотя она не будет объемной как Win 7.
Цитата
Roiko написал: Пока-то что на каждый период я делаю копию таблицы на новом листе. А так было бы все на одном листе - своего рода слоеный пирог, где каждый слой - период.
А что мешает период вынести в столбцы, зачем разные листы?
Цитата
Roiko написал: Цитата Doober написал: Вы пример хотелки прикрепите
На первой картинке схематичное изображение моего представления о трехмерных данных, а на второй - то же, но с данными. Проблема второй картинки в том, что она плоская (данные по оси Z плоские, хотя я попытался смоделировать объем), т.е. нет той наглядности, которая должна быть у объемной картинки. Но принцип, я думаю, понятен.
принцип (OLAP-кубы) и без ваших картинок понятен... вы не хотите понять, КАК и ЧТО вы там хотите "вычислять и сравнивать"... пример поднимался буквально вчера - Данные из Oracle в модель данных с параметрами! - смотрите, как люди работают с данными многомерных кубов (google тоже в помощь) - SQL, PowerPivot, и разрабатывайте свою БД... Если данных Немного,, все могут влезть на один лист (1млн.строк в xl2007 и выше), то и нет смысла плодить столько листов - для "вычислять и сравнивать"...
Цитата
Roiko написал: сразу видны данные за какой-то БОЛЬШОЙ период времени, а так приходится постоянно прыгать с одного листа на другой.
ВЫБОРКУ нужного можно делать за любой период - (ИЗ ОБЩЕЙ БАЗЫ)
разрабатывайте UserForm для быстрого поиска строки, куда вводить (так всегда работают с большой Базой Данных в xl)... можете на ту же UserForm и график (чего смотреть и сравнивать) разместить p.s. постарайтесь понять всё, уже изложенное по вашему вопросу в этой ветке! да и вообще, принципы построения (нормализации) БД почитайте и способы работы с ней (т.к. ваши данные именно такого рода)... вместо того, чтобы искать способ буравить лист глазами и руками
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Придумал такой вариант. 1 Берешь книгу эксель. Называешь ее конкретным месяцем и годом 2. В книге делаешь количество листов = колличеству дней в месяце + 1 3. В первом листе формируешь шаблонную двумерную таблицу - в строках наименование товара, а в столбцах - структурные элементы себестоимости. Эту шаблонную таблицу вставляешь на все остальные листы на те же самые ячейки. 4. В первой таблице, ну пусть она нулевая будет, т.е. основная. В каждую ячейку забиваешь формулу по типу - Если("ссылка на свободную ячейку на первом листе"=1;"аналогичная ячейка, в которую вбиваешь эту формулу, но уже второго листа";если("ссылка на свободную ячейку на первом листе"=2;"аналогичная ячейка, в которую вбиваешь эту формулу, но уже третьего листа;............))))))))))) И так далее. Пока не дойдешь до последнего листа. 5. Создаешь список дней - просто в столбик от 1 до номера последнего дня в месяце. 6. Делаешь выпадающий список из этой колонки с номерами дней. А ячейку, куда выпадающий список выводит номер строки выбираешь ту, куда в первой формуле ссылалась "ссылка на свободную ячейку на первом листе". 7. Каждый новый день получаешь данные и вставляешь их в каждый новый лист. 8. Вот и все. Теперь из выпадающего списка выбираешь на пером листе любой нужный день и кликаешь. Номер строки изменяется в ячейке, куда выводится номер строки, а значит данные нулевой таблицы так же меняются и показывают данные с того листа, который соответствует номеру строки. Особенности алгоритма - насколько помню есть ограничения на размер формулы в несколько десятков строк, 60 строк что ли. Но я думаю, что простого сможешь уместить констуркцию Если("ссылка на свободную ячейку на первом листе"=1;"аналогичная ячейка, в которую вбиваешь эту формулу, но уже второго листа" 28,29,30,31 разв зависимости от колличества дней в месяце. Ну и единственный недостаток - каждая книга содержит данные за месяц, если хочешь перескакивать от одного на другой месяц - этот алгоритм не поможет. Если товары выгружаются в беспорядочном положении, т.е. не шаблонизированно - добавляешь ВПР. Вот так, выбирая из выпадающего списка нужный день ты тут же получаешь данные за этот день. А сама кубическая матрица является книгой с 30-ю в среднем плоскостей