Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: поиск по массивам Добавлено: 25.03.09 09:34  

Автор вопроса:  mixman13
Доброго времени суток.
Есть два массива:
massiv1(50,4)
massiv2(1500,7)
первые элементы это название, по которому нужно из второго массива вытащить остальные 6 значений для каждого элемента первого. Можно это как-то сделать через поиск во втором массиве, без переборки всех 1500 значений 50 раз?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #1 Добавлено: 25.03.09 09:47
Можно, если оба массива отсортированы по первому элементу.

Ответить

Номер ответа: 2
Автор ответа:
 mixman13



Вопросов: 3
Ответов: 3
 Профиль | | #2 Добавлено: 25.03.09 09:50
А поподробней?
Интересуют сами команды сортировки и поиска по массивам

Ответить

Номер ответа: 3
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #3 Добавлено: 25.03.09 10:57
Про сортировку: вариантов масса, многое зависит и от того, где источник данных для этих массивов. Если Excel - сортируй прямо на листе. Могу также порекомендовать сортировку Хоара, например vbnet.ru/forum/show.aspx?id=182195&page=2 посты 21,23 (если с ней будут проблемы - обращайся, попробую помочь)
А поиск по массивам (отсортированным) может выглядеть примерно так
  1. Option Base 1
  2. Dim M1(50, 4), M2(1500, 7) ', M3() As Long
  3.  
  4. Sub F()
  5. Dim I As Long, J As Long ', C As Long
  6. J = 1
  7. For I = 1 To 50
  8.   While M1(I, 1) > M2(J, 1)
  9.     If J = 1500 Then Exit For
  10.     J = J + 1
  11.   Wend
  12.   While M1(I, 1) = M2(J, 1)
  13. '    C = C + 1
  14. '    ReDim Preserve M3(1 to C)
  15. '    M3(C) = J
  16.     Debug.Print M2(J, 1) ,M2(J, 2),M2(J, 3),M2(J, 4),M2(J, 5),M2(J, 6),M2(J, 7)
  17.     If J = 1500 Then Exit For
  18.     J = J + 1
  19.   Wend
  20. Next I
  21. End Sub
Предполагается, что массивы отсртированы по возрастанию первого ключа. То что заремировано может помочь при необходимости запомнить первые индексы М2 (результаты поиска).

Ответить

Номер ответа: 4
Автор ответа:
 mixman13



Вопросов: 3
Ответов: 3
 Профиль | | #4 Добавлено: 25.03.09 11:49
Спасибо, сортировка Хоара как раз мой случай.
Как я понимаю чего-то вроде:
http://www.codenet.ru/progr/vbasic/Dot-Net/Arrays.php
в ВБА нет?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам