|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.04.2011, 13:27 | #1 |
Пользователь
Регистрация: 13.04.2011
Сообщений: 58
|
Как сортировать два массива данных?
В Excel есть расширенная сортировка данных, когда таблица из 2-х столбцов сортируется связано,т.е сортируем столбец А от мин к макс, а второй столбец В сортируется по условию первого
Вот пример сортировки диапозона Sub Сортировка диапазона() With ActiveWorkbook.Worksheets("Лист4"). Sort .SetRange Range("A1:B45") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub Как быть если вместо диапазона ячеек я хочу произвести сортировку дыух массивов одинакового размера, к примеру Массив А() - это столбецА, Массив В() - это столбец В Что нужно поставить вместо строки .SetRange Range("A1:B45") Заранее благодарен. |
15.04.2011, 13:38 | #2 | |
Форумчанин
Регистрация: 07.03.2010
Сообщений: 796
|
Цитата:
Выгрузил бы ваши массивы на лист, затем отсортировал как надо, считал бы в двухмерный массив, удалил данные с листа при желании функцией index можно разобрать на одномерные массивы быстро, надежно , мало кода
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
|
|
15.04.2011, 13:49 | #3 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Есть такой код сотировки "пузырьком" массива, созданного из двух столбцов:
Код:
webmoney: E265281470651 Z422237915069 R418926282008
|
15.04.2011, 15:24 | #4 | |
Пользователь
Регистрация: 13.04.2011
Сообщений: 58
|
Цитата:
Только размерномть массива надо уменьшить еще на 1, а то выдает ошибку S=длина массива price -первый массив volume - второй For i = 0 To S - 2 For j = i + 1 To S-1 If price(i) > price(j) Then 'change to <> for change order t = price(i): tt = Volume(i) price(i) = price(j): Volume(i) = Volume(j) price(j) = t: Volume(j) = tt End If Next j Next i Просто я не использую LBound(a) To UBound(a) т.к. загружаю данные из файла, где длина массива не постоянна и для того что бы создать массив, мне надо определить длину загружаемых данных, обозначаю переменной S. Если длина данных s=100 строк, то LBound(a)=0 , UBound(a)=99 Теперь все работает. Еще раз спасибо. Последний раз редактировалось clever77; 15.04.2011 в 15:34. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Два одномерных массива A и B. Сформировать два новых массива. Паскаль. Где ошибка в коде? | Tomny | Помощь студентам | 1 | 27.03.2011 16:47 |
как объеденить два одномерных массива разной длины? | Artur1992 | Помощь студентам | 3 | 26.12.2010 20:26 |
сортировать по фамилии два листа | Kotik123 | Microsoft Office Excel | 2 | 23.04.2009 18:52 |
Как объединить два массива в один. | TheWanderer | Общие вопросы C/C++ | 2 | 10.11.2008 00:15 |
Как прочесть два массива из файла | Need_Help | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 20.05.2007 16:40 |