|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.04.2011, 16:27 | #1 |
Пользователь
Регистрация: 13.04.2011
Сообщений: 58
|
Можно ли задавать и описывать массивы данных программно?
Здравствуйте,
Подскажите можно ли программно создавать и описывать массив? Есть список продаж (длина 1000 позиций, из них 500 наименований не повторяются) допустим список отсортирован по алфавиту, т.е одинаковые наименования идут подряд. Хочу создать массив под каждое наименование и туда занести цену и количество Можно конечно, объявить 1000 массивов в начале программы и надеятся что хватит, а если нет? Хотелось бы примерно следующее столбец А наименования столбец B цена столбец С кол-во name() массив наименований всех, name (0)=A1 ' к примеру 1 позиция "ручка" Здесь хочу создать массив "ручка" ну или пусть будет name1 () и в него занести цену и кол-во А далее если наименование не меняется ( т.е. если name(i)=name(i+1))продолжаю заносит в массив name1 цену и кол-во Если наменование сменилось, напрмер на карандаш, то создаю массив карандаш() или name2() и заношу данные по цене и кол-ву позиции карандаш и тд Вопрос в том как сделать так чтобы программа сама могла объявить массив, задать ему имя и размерность? |
23.04.2011, 16:38 | #2 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Все можно сделать,если цель понятна.
Это уже третья ваша тема,и все на пальцах ,одна теория Нет ни одного вложения с примером данных и желаемым результатом. И нет ничего удивительного в том,что вы в своих темах не получили практического решения.
Анализ,обработка данных Недорого
|
23.04.2011, 17:18 | #3 | |
Пользователь
Регистрация: 13.04.2011
Сообщений: 58
|
Цитата:
Если условие выполнено, то создать массив if name(i)<>name(i+1) then ................................... . - в этой строке создать новый массив с именем name1() и диной пусть 25 элементов, который нигде ранее не был описан Упрощенно: Обычно все описывается в начале программы, когда известно кол-во требуемых переменных и массивов (в моем случае это не так) Допусти массив Name() уже заполнен, опустим эту процедуру Sub 1 Dim name() Dim name1() Dim name2() .................. ReDim name(1000) ReDim name1(25) ReDim name2(25) ............. p=0 j=1 k=0 h=0 name1(0)=B1 for i=0 to 999 if name(i)=name(i+1) then elseif p=0 then name1(j)=cells (i,2).Value ' заполняю первый массив ценой j=j+1 elseif p=1 then name2(k)= cells(i,2).Value ' заполняю второй массив ценой k=k+1 elseif p=2 then name3(h)= cells(i,2).Value ' заполняю третий массив ценой h=h+1 ............. elseif name(i)<>name(i+1) then p=p+1 Next i Так сойдет? Мне нужно чтобы по условию name(i)<>name(i+1) создавался массив с опр названием пусть будем name1(), а еще лучше чтобы название приcваивалось из опр ячеки к примеру A3 или из массива name() ,с опр длиной, я ее сам задам заранее неизвестна, а уже потом строкой ниже он запонялся name1(j)=cells (i,2).Value ' заполняю первый массив ценой В противном случае в начале программы после описания ее названия (Sub 1) я должен заранее описать 1000 массивов, а из них мне может потребоваться всего сто, а может и 1000 не хватить да и сама программа с элементами if будет с километр А так будет примерно следующее j=1 name1(0)=cells(1,2) for i=0 to 999 if name(i)=name(i+1) then massiv(j)=cells (i+2,2).Value ' massiv=name1()- как только наименование сменится, создастся новый массив name2() j=j+1 elseif name(i)<>name(i+1) then создать новый массив name2() ' В этой строке будет прописано откуда брать название и длину нового массива massiv=name2() j=0 end if next i Согласись так было бы короче. Последний раз редактировалось clever77; 23.04.2011 в 18:13. |
|
23.04.2011, 18:30 | #4 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Слов много, но зачем создавать эти массивы - не понятно.
И где пример в файле? Подозреваю, что можно сделать что-то вроде Dictionary с массивами в Item - это если нужно создать неопределённое количество массивов с "именем из переменной". Но зачем?
webmoney: E265281470651 Z422237915069 R418926282008
|
23.04.2011, 20:10 | #5 | |
Пользователь
Регистрация: 13.04.2011
Сообщений: 58
|
Цитата:
Пусть цена товара указана в у.е., тогда в руб цена будет менятся в зависимости от курса у.е. Т.о. один и тот же товар может быть продан по разной цене Если Вы возьмете лист продаж за неделю, к примеру где 1 колонка наименование 2 колонка цена 3 колонка кол-во штук то обнаружите что наименование товара ото дня ко дню будет повторяться, а цена и кол-во разным. Позиций товара может быть много Для того что бы узнать(вывести наглядно на диаграмму) сколько товара, скажем ручек продано за неделю и по какой цене, Придется организовать выборку данных Я поступаю так Заношу в массив "ручки" данные по цене и соотвтствующее кол-во за день , те двумерный массив 2 на 5 2 - цена и кол-во 5-кол-во дней А потом с ним работаю, могу найти мин цены макс и.т.д Поэтому данные удобно хранить в массивах Сколько таких массивов может потребоваться - заранее неизвестно, какой длины тоже Ведь нельзя заранее сказать сколько наименований товара будет продано за мес и сколько мес содержит рабочих дней, есть праздники которые переносятся и по какой цене Иными словами под каждую позицию товара, я создаю свой массив, с которым потом работаю За неделю он будет иметь размер 2 на 5 За мес 2 на 20 и т.д Можно работать с одномерными массивами "ручки1" - будет цена, "ручки2" - будет объем Как организовать это по другому не знаю |
|
23.04.2011, 20:21 | #6 | |
Пользователь
Регистрация: 13.04.2011
Сообщений: 58
|
Цитата:
Программы нет.... точнее есть, но она работает только с одним наименованием и там все просто. |
|
23.04.2011, 21:45 | #7 | |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
Цитата:
не понимаю зачем все данные держать в памяти
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
|
23.04.2011, 23:29 | #8 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Всё равно не понятно. Покажите на листе - какие данные есть и что нужно получить.
А про Dictionary я почему упомянул - т.к. название массива не может быть составлено из переменной, то можно сделать так - переменную помещаем в словарь (т.к. массивы будут в любом случае с разными именами, словарь подходит), а в Item словаря помещаем массив. Теперь к этому массиву можно обращаться по имени переменной. Что-то вроде Код:
Не замерял, но скорее всего памяти на такое действо уходит много - тут на каждый элемент массива a создаётся такой-же пустой массив в словаре, на случай, если вдруг весь массив a придётся поместить в один массив словаря. Если сразу известно предельное количество - можно создавать массив под это количество.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 23.04.2011 в 23:31. |
24.04.2011, 00:51 | #9 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
сыграю в угадайку.
Подозреваю,что есть точки по продаже,они продают какой то товар.Требуется провести анализ продаж точка-товар-дата,построить нагляности Диаграмму
Анализ,обработка данных Недорого
|
24.04.2011, 16:22 | #10 |
Пользователь
Регистрация: 13.04.2011
Сообщений: 58
|
Просьба не обижаться на мои глупые вопросы, у меня опыт программирования на VB менне 2 недель и то методом самообразования
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
можно ли в Excel задавать тип данных ячейки через формулу? | peq | Microsoft Office Excel | 3 | 29.03.2010 15:30 |
Как можно программно выйти из ждущего режима | xakkkkker | Win Api | 1 | 13.03.2009 17:26 |
Можно ли программно переименовать папку | Rusl92 | Общие вопросы Delphi | 3 | 13.09.2008 12:52 |
можно ли в stringgrid задавать размер конкретной ячейки | SeЯgey | Помощь студентам | 3 | 26.04.2008 18:47 |
Можно программно создать dll из текстового файла? | hamann-2006 | Помощь студентам | 2 | 29.10.2007 10:41 |