Страницы: 1
RSS
Трехмерный массив в Excel, Excel не поддерживает трехмерные массивы, но очень нужно
 
Здравствуйте!

Ситуация такова: оптимизационная программа выгружает результаты оптимизации в Excel, причем сами данные представляют собой трехмерный массив: Продукт, Дата его производства и Вид сырья, который пойдет на каждый вид продукта в каждую дату.
Конечно, можно выгрузить эти данные в отдельные листы или отдельные диапазоны одного листа, но навигация по этим данным будет сильно затруднена.

Вижу следующий вариант: разместить в строках измерение продукта, в столбцах - вид сырья. А в ячейках через точку с запятой (или любой другой разделитель) выгрузить данные за каждый день.
Но как мне теперь вернуть данные за конкретный день?
Интуиция подсказывает, что можно с помощью формулы массива ПОИСК, но как сосчитать позицию n-ного разделителя, придумать не могу.

Спасибо.
Изменено: serdiuk - 09.12.2015 08:38:57
 
По мне так проще было бы разместить на листах таблицу Продукт - Вид сырья. А листы обозвать нужными датами.
Тогда можно и сквозное суммирование использовать. Да и вполне логично будет.
Если автоматизировать бардак, то получится автоматизированный бардак.
 
Спасибо. Это тоже вариант, но от него как раз хотелось бы уйти. Данных ОЧЕНЬ много.
К тому же, не исключаю появление четырехмерного массива. Его можно будет сохранить в ячейку с помощью двух видов разделителей.
Поэтому нужно искать какой-то способ "вытягивания" данных из ячеек.
В крайнем случае, конечно, можно макрос написать.  
 
Может тогда и не Ексель использовать, а например Акссес? И вытягивать нужные данные запросами? Потому как в данном случае Ексель вместо удобства, накладывает свое двухмерное ограничение, которое надо обходить...
Если автоматизировать бардак, то получится автоматизированный бардак.
 
Странный вы формат родили, почему не подходит простой вариант, с колонками (Продукт, Дата его производства и Вид сырья) и строками на каждое разнообразие?
Потом сводной таблицей, это все крутить как хочется.
А если данные измеряются уже миллионами строк, тогда уж лучше серверный OLAP запилить.
Изменено: justirus - 09.12.2015 08:59:54
 
Цитата
serdiuk написал:
данные представляют собой трехмерный массив: Продукт, Дата его производства и Вид сырья
И у меня такая же проблема.
Реально, у меня (да и у многих из Вас) есть данные, которые можно разместить в 3d-таблице.
Это:
- по оси X - "Статьи затрат"
- по оси Y - "Наименование продукции"
- по оси Z - "Период"
Данные
осей X, Y размещаются в двухмерной стандартной таблице Excel. Данные
оси Z размещаются на разных листах. Удобнее было бы, если бы все данные
были в одной трехмерной таблице - залез мышью в таблицу и легко
выделяешь и сосчитываешь неоходимые данные. Я понимаю, что многое можно
получить стандартными средствами Excel, но это не очень удобно.

Подскажите,
пожалуйста, может, кто-нибудь обладает информацией, в какой программе
можно построить трехмерную таблицу и работать с ее данными. Просто
картинка в 3d не нужна, трехмерные графики - это не то, что нужно.

Неужели MicroSoft не может внедрить 3d-Excel, считаю, что это не сложно.
Изменено: Roiko - 31.07.2016 13:54:36
 
Цитата
Roiko написал:  у меня такая же проблема.
см. #5
а sql-запросы по принципу Access БД можно и в Excel делать...
Цитата
Roiko написал: залез мышью в таблицу и легко выделяешь и сосчитываешь неоходимые данные.
?? а почему без мыши никак?
Цитата
serdiuk написал:  навигация по этим данным будет сильно затруднена.
по ним не надо бегать... изучите язык sql-запросов и вытягивайте нужное
Цитата
serdiuk написал: Данных ОЧЕНЬ много.
разработать Базу Данных, можно на сервере... учитывая все правила формирования БД... работать с БД (а не с сырьём через запятую)... можно будет применить Power Pivot (надстройка xl)
Цитата
Roiko написал: в какой программе можно построить трехмерную таблицу и работать с ее данными.
вы с какой-то непонятной стороны смотрите на xl или на ваше представление о трёхмерности... создаёте 3 столбца с 3-мя вашими измерениями и считаете, или вытягиваете из них что угодно - по ключам (может быть составной, т.е. состоящий из значений нескольких полей "период | продукт | статьи затрат"... если вы из такой структуры не можете просчитать, что вам надо - это др. вопрос... насколько вы знаете сам xl  ;) ... если чуть посложнее - то вопрос алгоритма обсчёта тех или иных показателей  
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, так ведь хочется получить не просто какую-то выборку, а визуально, самому вручную это выбрать (посчитать, сравнить). Т.е. нужно визуально провести анализ данных находясь внутри самих данных.

Трехмерность? Внешне выглядит так, как в Win7 нажать клавиши Win+Tab: есть высота, ширина, глубина. Этого я и  хочу от Excel.
Изменено: Roiko - 31.07.2016 15:29:02
 
Цитата
Roiko написал:  визуально, самому вручную это выбрать (посчитать, сравнить).
вы меня не услышали или не захотели понять или не захотели проверить... что обойтись можно просто предложенным инструментом - sql-запросы... ну и ладно... хотя автоматизация для того и создана, чтобы НЕ визуально и НЕ вручную
Цитата
Roiko написал: высота, ширина, глубина.
- это не структура данных, это графика...
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
Roiko написал:
есть высота, ширина, глубина
Какая может быть глубина у монитора, это все обман зрения,изометрия.
Вы пример  хотелки прикрепите
 
Я согласен. Я лишь пытаюсь показать то, как я себе представляю трехмерную таблицу Excel. Ось Z - это и есть глубина, т.е. период. Пока-то что на каждый период я делаю копию таблицы на новом листе. А так было бы все на одном листе - своего рода слоеный пирог, где каждый слой - период. Мне кажется, что так было бы удобнее работать с данными (вводить, смотреть, сравнивать) - сразу видны данные за какой-то БОЛЬШОЙ период времени, а так приходится постоянно прыгать с одного листа на другой.
Цитата
Doober написал:
Вы пример  хотелки прикрепите
Пример? Ну это обыкновенный кубик.
- вправо - по оси X - "Статьи затрат"
- вниз - по оси Y - "Наименование продукции"
- в глубину - по оси Z - "Период".
Двумерность - это очень хорошо, но не всегда.

Вот поэтому и интересуюсь - есть ли какая программа, позволяющая работать по принципу, описанному выше.
Или я где-то сильно заблуждаюсь?
 
Цитата
Roiko написал: Пример? Ну это обыкновенный кубик.
пример данных это пол-беды
Цитата
Doober написал: пример  хотелки прикрепите
ведь не из воздуха
Цитата
Roiko написал:  (вводить, смотреть, сравнивать)
что хотите смотреть и сравнивать? покажите... куда вводить - подскажут...
p.s. а трёхмерно - читать неудобно будет... по одной из плоскостей текст/цифры точно будет(ут) накладываться др на др...  
Изменено: JeyCi - 01.08.2016 20:56:40
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
serdiuk написал: оптимизационная программа выгружает результаты оптимизации в Excel, причем сами данные представляют собой трехмерный массив: Продукт, Дата его производства и Вид сырья, который пойдет на каждый вид продукта в каждую дату.
В примере как раз не массив, а сводная таблица на основе этого массива, сохраненная в виде значения. Неужели из такой программы невозможно получить нормальную 2-мерную таблицу, а для анализа использовать сводную?

Цитата
Roiko написал: в какой программе можно построить трехмерную таблицу и работать с ее данными.
Программа - Excel, инструмент - сводные таблицы.

Цитата
Roiko написал: Трехмерность? Внешне выглядит так, как в Win7 нажать клавиши Win+Tab: есть высота, ширина, глубина. Этого я и  хочу от Excel.
Только вот WIn 7 - это плоский монитор. Даже если получить такую пространственную картинку, то Вы не сможете её анализировать, мозгов не хватит. Проведите простой эксперимент - сделайте две таблицы одинаковой структуры 20х20 (например), положите их рядом на рабочем столе и замерьте время, которое потратите на сравнение этих двух таблиц. С помощью сводной же вы потратите не более 5 мину, хотя она не будет объемной как Win 7.

Цитата
Roiko написал: Пока-то что на каждый период я делаю копию таблицы на новом листе. А так было бы все на одном листе - своего рода слоеный пирог, где каждый слой - период.
А что мешает период вынести в столбцы, зачем разные листы?

Цитата
Roiko написал: Цитата Doober  написал: Вы пример  хотелки прикрепите
+
Неизлечимых болезней нет, есть неизлечимые люди.
 
На первой картинке схематичное изображение моего представления о трехмерных данных, а на второй  - то же, но с данными. Проблема второй картинки в том, что она плоская (данные по оси Z плоские, хотя я попытался смоделировать объем), т.е. нет той наглядности, которая должна быть у объемной картинки. Но принцип, я думаю, понятен.

Первая картинка (схема):
Скрытый текст

Вторая картинка (с данными):
Скрытый текст
 
Кросс
 
Цитата
Roiko написал: Но принцип, я думаю, понятен.
принцип (OLAP-кубы) и без ваших картинок понятен... вы не хотите понять, КАК и ЧТО вы там хотите "вычислять и сравнивать"... пример поднимался буквально вчера - Данные из Oracle в модель данных с параметрами! - смотрите, как люди работают с данными многомерных кубов (google тоже в помощь) - SQL, PowerPivot, и разрабатывайте свою БД... Если данных Немного,, все могут влезть на один лист (1млн.строк в xl2007 и выше), то и нет смысла плодить столько листов - для "вычислять и сравнивать"...
Цитата
Roiko написал: сразу видны данные за какой-то БОЛЬШОЙ период времени, а так приходится постоянно прыгать с одного листа на другой.
ВЫБОРКУ нужного можно делать за любой период - (ИЗ ОБЩЕЙ БАЗЫ)
Цитата
Roiko написал: Или я где-то сильно заблуждаюсь?
ДА - читать и писать в пространстве НЕрационально - причина в #12
Цитата
Roiko написал: (вводить,
разрабатывайте UserForm для быстрого поиска строки, куда вводить (так всегда работают с большой Базой Данных в xl)... можете на ту же UserForm и график (чего смотреть и сравнивать) разместить
p.s.
постарайтесь понять всё, уже изложенное по вашему вопросу в этой ветке!
да и вообще, принципы построения (нормализации) БД почитайте и способы работы с ней (т.к. ваши данные именно такого рода)...
:excl: вместо того, чтобы искать способ буравить лист глазами и руками  
Изменено: JeyCi - 04.08.2016 07:05:03
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Придумал такой вариант.
1 Берешь книгу эксель. Называешь ее конкретным месяцем и годом
2. В книге делаешь количество листов = колличеству дней в месяце + 1
3. В первом листе формируешь шаблонную двумерную таблицу - в строках наименование товара, а в столбцах  - структурные элементы себестоимости. Эту шаблонную таблицу вставляешь на все остальные листы на те же самые ячейки.
4. В первой таблице, ну пусть она нулевая будет, т.е. основная. В каждую ячейку забиваешь формулу по типу - Если("ссылка на свободную ячейку на первом листе"=1;"аналогичная ячейка, в которую вбиваешь эту формулу, но уже второго листа";если("ссылка на свободную ячейку на первом листе"=2;"аналогичная ячейка, в которую вбиваешь эту формулу, но уже третьего листа;............))))))))))) И так далее. Пока не дойдешь до последнего листа.
5. Создаешь список дней - просто в столбик от 1 до номера последнего дня в месяце.
6. Делаешь выпадающий список из этой колонки с номерами дней. А ячейку, куда выпадающий список выводит номер строки выбираешь ту, куда в первой формуле ссылалась "ссылка на свободную ячейку на первом листе".
7. Каждый новый день получаешь данные и вставляешь их в каждый новый лист.
8. Вот и все. Теперь из выпадающего списка выбираешь на пером листе любой нужный день и кликаешь. Номер строки изменяется в ячейке, куда выводится номер строки, а значит данные нулевой таблицы так же меняются и показывают данные с того листа, который соответствует номеру строки.
Особенности алгоритма - насколько помню есть ограничения на размер формулы в несколько десятков строк, 60 строк что ли. Но я думаю, что простого сможешь уместить констуркцию Если("ссылка на свободную ячейку на первом листе"=1;"аналогичная ячейка, в которую вбиваешь эту формулу, но уже второго листа"
28,29,30,31 раз в зависимости от колличества дней в месяце.
Ну и единственный недостаток - каждая книга содержит данные за месяц, если хочешь перескакивать от одного на другой месяц - этот алгоритм не поможет.
Если товары выгружаются в беспорядочном положении, т.е. не шаблонизированно - добавляешь ВПР. Вот так, выбирая из выпадающего списка нужный день ты тут же получаешь данные за этот день. А сама кубическая матрица является книгой с 30-ю в среднем плоскостей
 
JeyCi    :excl: =  String( ∞,"+")
 
Del
Изменено: Влад - 04.08.2016 16:41:40
Страницы: 1
Читают тему
Наверх