|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.02.2013, 11:51 | #1 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 20
|
Работа с массивами
Возможно ли заполнение массива не в цикле перебором ячеек листа, а сразу же диапазоном например с помощью Range("a1:c10")?
Массив определен как Dim D001(22, 12, 400000) As Single потом его надо сохранить в файл данных. Последний раз редактировалось parshin; 10.02.2013 в 12:10. |
10.02.2013, 12:41 | #2 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Код:
Потом можете в цикле переписать его значения в нужные элементы своего трехмерного массива.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
10.02.2013, 13:03 | #3 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 20
|
Спасибо, но проблема еще в том, что этот массив сжирает практически всю память.
|
10.02.2013, 13:41 | #4 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
А зачем вам 3-мерный массив?
И как вы его собрались в файл записывать? Почему 3-я размерность - именно 400000? Вы расскажите, что и для чего делаете - тогда, может, посоветуем решение попроще. |
10.02.2013, 14:52 | #5 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Записать-то, конечно, не проблема:
Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
10.02.2013, 21:01 | #6 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 20
|
Под именем, parshin будем участвовать в форуме совместно. Меня зовут Кощеев Эдуард (мой сайт и тема: www.ed-kosheev.ru). Совместно с Михаилом Паршиным (как программистом VBA) мы реализовали задачу, как смогли (и ее поддерживаем) в одной из мск. фирм. (http://ed-kosheev.ru/nu_obectn_uchet_truda.php)
Отзыв: http://ed-kosheev.ru/otziv01.htm Сейчас я работаю по задачам одной достаточно крупной оптовой торговой фирмы г.Перми. Основная задача: решить вопрос с кем, и чем выгодно/невыгодно торгуем сейчас, с учетом многофакторных затрат/доходов в учете рентабельности конкретного артикула товара. Есть огромное желание работать на четырехмерном массиве DIM, как минимум: 12 Х 30 Х 1500 Х 2000 (месяц / статьи / артикулы / клиенты). Было бы удобно разнести например, бонус (руб.) клиенту (за объемы потребления) на доп. затраты к артикулам, которые он потреблял.. Причина, в демонстрашке по ссылке: http://files.mail.ru/32E92321141F48129FF210A34DB7FC2C Но Excel такой массив не берет. Поэтому приходится извращаться, преобразуя его в трехмерный (понятно, что не каждый клиент с каждым артикулом работает, на этом экономим..) Вопрос: 1. возможно ли придумать вариант закачки такого объемного 4-х мерного массива в мозги excel (по нашим экспериментам 2000 Х 1500 Х 30 Х 1 - это максимум при 2ГБ физической опер. памяти (одинарный формат числа), а нужно как минимум держать два таких массива, когда из одного переносим трансформируя данные в другой, да и размерность 2000 Х 1500 Х 30 Х 1 - маловата..., нужно больше..) 2. как сохранить 4-х мерный (3-х мерный) DIM в виде файла.. и затем его так же просто обратно закачать в DIM? С меня причитается, если все получится.... (просто перечислю свое "спасибо" на Ваш, указанный сотовый телефон) С уважением, Кощеев Эдуард и Паршин Михаил Последний раз редактировалось parshin; 10.02.2013 в 21:38. |
10.02.2013, 21:44 | #7 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Я бы все данные перенес в Mssql,написал бы некоторые процедуры по выборке определенных данных
с предварительными расчетами,а результаты выборки обрабатывал бы в Excel. В прошлом году писал программу по обработке статистики одного интернет-магазина. За 3 года данные,всего 14 миллионов строк.Mysql упал минут чез 20 ,я ему выделял 2 гига для буфера . Mssql 2008 справился с поставленной задачей с 1 гигом памяти.
Анализ,обработка данных Недорого
|
11.02.2013, 08:41 | #8 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 20
|
doober, спасибо за отклик. Содержание базы в Access рассматривали как один из вариантов. Но он не очень хороший.. Дело в том, что очень неудобно как раз производить простые арифметические операции и разнесение затрат (на артикулы). Например, что бы в указанном четырехмерном массиве разнести на каждый артикул бонус начисленный клиенту за объемы потребления товаров (его назвали ретро-бонус) пропорционально объемам потребления каждого артикула в отпускных ценах, достаточно ну пусть пять-десять строчек макроса VBA. Как это разнесение делать на по-сути двумерной базе Access, путем запросов - представляю пока с трудом. Возможно, если не обойдем проблему, возможно придется делать что-то близкое к тому что вы говорите. Хотя я склоняюсь к тому, что проще будет работать (производить арифметические операции) с трехмерными DIMами... или пусть 4-х мерными, но меньшего объема.
|
11.02.2013, 10:24 | #9 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Не пойму - зачем нужен 4-х мерный массив?
Помню как-то делал словарь словарей (т.е. что-то вроде трёхмерности получалось), но 4 измерения - это в голове не укладывается... Мне кажется, вполне достаточно обычного двумерного массива - ну пройтись по нему пару раз, чтоб сперва определить среднее, затем раскидать бонус.
webmoney: E265281470651 Z422237915069 R418926282008
|
11.02.2013, 13:07 | #10 |
Пользователь
Регистрация: 13.03.2012
Сообщений: 20
|
Ну представьте что ""словарь словарей" (книга, 3-х мерный массив по-сути), создается каждый месяц - вот вам и четвертое измерение... что тут сложного...
Бонусы разные бывают, вот беда... и от нас клиентам, и от поставщиков нам, и вообще всякие приколы типа "плата сетям, за годовой контракт-право на поставку им продукции", который бы нужно как-то "раскатывать" на год.. и т.п. В принципе одна из идей работать не с одним .dat , а с несколькими (т.е. разбить этот большой массив на несколько). Это первое, что вроде как напрашивается. Еще один вариант - это как-то уменьшить формат числа в DIMе. Ситуация такая: одинарной точности - много, а от -32000 до 32000 - мало, нужно максимум иметь число скажем 999 млн. с двумя знаками после запятой. Вопрос: можно ли создать в VBA какой-то пользовательский формат, лежащий между FFFF и FFFF FFFF? Например FF FFFF? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с массивами | lindstorm | Помощь студентам | 0 | 05.12.2011 18:25 |
Работа с массивами | Jeffrey_4 | Помощь студентам | 2 | 30.09.2011 15:41 |
Работа с массивами | pashqa | Помощь студентам | 2 | 27.05.2011 15:23 |
Работа с массивами(Си++) | GNick | Помощь студентам | 2 | 12.01.2010 00:27 |
Работа с массивами | Stelix | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 20.06.2008 11:37 |