Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Поиск номера элемента в массиве


Автор: temr 28.1.2008, 21:28
Добрый день всем 
стоит следующая задача есть массив 

array(100,200,3)

во вторую строчку массива записаны имена 
как можно в вба написать процедуру поиска номера элемента по названию последнего без перебора всего массива
 
Заранее благодарю
Тимур

Автор: bilya 29.1.2008, 02:52
temr,  что такое
Цитата(temr @  28.1.2008,  21:28 Найти цитируемый пост)
во вторую строчку массива записаны имена

 smile 
У вас двумерный массив? При чем тут тогда ряд?

Автор: temr 29.1.2008, 08:10
Согласен, дезинформировал)
массив трехмерный - массив(год, месяц, день) пусть первое измерение это год второе месяц третье день пусть у нас данные за 2005 и 2006 годы 
как в этом массиве найти индекс допустим  февраля 2005 года без перебора всех данных 

Автор: abyrval 29.1.2008, 13:41
Судя по размерам массива... smile - 3 "таблицы" 100*200 каждая, для этих данных хватит и двумерного...

может, я не понял вопрос, но поиск подразумевает перебор данных smile



Автор: temr 29.1.2008, 14:17
Согласен может и хватит но давайте сначала  пример

есть файл в котором содержаться три столбца  
первый столбец дата , второй столбец имя человека, третий его накопленный доход 

2006 ваня 10
2006 оля 20
2006 катя 15
2007 катя 20
2007 юля 10
2007 ваня 20


я хочу найти доход вани с 2006 по 2007 год 
как я могу найти индекс вани на 2006 год ?

Добавлено через 2 минуты и 32 секунды
По поводу перебора 
я могу решить поставленную задачу перебором второго столца за 2006 год но как мне кажеться это займет больше времени нежели использование функции типа Match  или Vlookup

Автор: abyrval 29.1.2008, 14:27
Цитата(temr @  29.1.2008,  14:17 Найти цитируемый пост)
я хочу найти доход вани с 2006 по 2007 год как я могу найти индекс вани на 2006 год ?

чет я с годами не понял

снят вопрос

Автор: temr 29.1.2008, 14:30
Забыл добавить я формирую массив array(year,name,1)
где year годы
name имена 
1- накопленный доход

и поиск нужно выполнить в этом массиве

Автор: Akina 29.1.2008, 15:13
Первый вопрос - почему эти данные хранятся в массиве? Массив категорически не предназначен для выполнения операций, которые тебе требуются.

Автор: temr 29.1.2008, 15:29
to Akina
Хранить данные в массиве мне необходимо из-за поставленной задачи а она заключается в следующем
есть файл 300 мегабайт в котором хроняться таблицы в хоторых по датам раскиданы уникальные записи мне нужно после формирования массива вывести таблицу в которой по алгоритму описанному выше(пример с ваней) я бы формировал таблицу. Если я напрямую буду выводить данные каждой промежуточной операции в экселевский лист то это будет долго а во вторых сам файл в конечном итоге станет похожего размера что и исходник 
 Встречный вопрос а почему он не предназначен для таких операций ?
если у меня есть нужный индекс записи массива то не проще ли выполнить промежуточные операции в нем ?

Автор: temr 29.1.2008, 16:03
Всем спасибо проблему решил с помощью Scripting.Dictionary

Автор: igor_123 29.1.2008, 19:27
а почему бы не положить данные в БД какую нибудь и не делать из неё запросы ???

Автор: temr 4.2.2008, 11:56
 
Цитата

а почему бы не положить данные в БД какую нибудь и не делать из неё запросы ???


Для этого нужно создать БД, а это тема другой ветки  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)