Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2012, 20:05   #1
ymnuhj
Пользователь
 
Регистрация: 26.03.2012
Сообщений: 42
По умолчанию Сортировка столбцов с данными по значению в верхней ячейке

В общем есть таблица в которой каждый столбец начинается с числа а затем заполнен смешанной информацией. Нужно выстроить столбцы в порядке убывания этих "верхних чисел". Как сортировать числа пузырьковым методом я разобрался. Результат на прикрепленном снимке, код:

Sub sort()
Dim a(5) As Single, a1 As Single, i As Integer, j As Integer

For i = 1 To 5
a(i) = Worksheets(1).Cells(1, i).Value
Next i



For i = 1 To 4
For j = 1 To 4
If a(j) < a(j + 1) Then
a1 = a(j)
a(j) = a(j + 1)
a(j + 1) = a1
End If
Next j
Next i

For i = 1 To 5
ThisWorkbook.Sheets(1).Cells(1, i + 6).Value = a(i)
Next i


End Sub


А вот как отсортировать по ним нижерасположенные данные пока не вкурил. Есть идея двигать каждый раз вместе с первым числом столбец снизу, но код у меня не выходит:


Sub sa()
Dim a(5) As Single, i As Integer, k As Integer, a1 As Single, b(9), b1(9)

For i = 1 To 5
a(i) = Worksheets(1).Cells(1, i).Value
b(i) = Worksheets(1).Range("A2:A10").Value
Next i



For i = 1 To 4
For j = 1 To 4
If a(j) < a(j + 1) Then
a1 = a(j)
a(j) = a(j + 1)
a(j + 1) = a1
b1 = b(j)
b(j) = b(j + 1)
b(j + 1) = b1
End If
Next j
Next i

For i = 1 To 5
ThisWorkbook.Sheets(1).Cells(1, i + 6).Value = a(i)
ThisWorkbook.Sheets(1).Cells("2, i + 6:10,i+6").Value = b(i)
Next i


End Sub


Подскажите как добиться результата. Заранее благодарен
Изображения
Тип файла: jpg Sort.jpg (39.7 Кб, 74 просмотров)
ymnuhj вне форума Ответить с цитированием
Старый 27.03.2012, 20:23   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Зачем изобретать велосипед? В диалоге сортировки выберите Параметры - сортировать: столбцы диапазона, сортировать по: Строка 1, по убыванию.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 27.03.2012, 20:54   #3
ymnuhj
Пользователь
 
Регистрация: 26.03.2012
Сообщений: 42
По умолчанию

Затем что мне нужно чтобы это производилось автоматически. Я пишу небольшую програмку, в которой результаты должны сортироваться таким образом. Я бы рад делать это через Параметры-...., но увы.

Хотя можно ведь записать все в макрос. Только щас догадался, спасибо за идею

Последний раз редактировалось ymnuhj; 27.03.2012 в 21:08.
ymnuhj вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка по наибольшему значению Irek11 Microsoft Office Excel 4 14.08.2011 17:58
Как присвоить ячейке с данными число? Pecnekm Microsoft Office Excel 44 06.04.2011 16:03
Сортировка grida по значению поля amator_roma Помощь студентам 2 30.11.2010 16:41
По значению из выпадающего списка в рядом стоящей ячейке выводить текст 550953 Microsoft Office Excel 6 09.09.2009 06:59
Возвращаемое функцией значение = находившемуся в ячейке значению motorway Microsoft Office Excel 8 14.07.2009 08:53