Excel VBA; Как да сортирате таблицата си с VBA; Денис Рейс

Тази публикация е част от поредицата VBA Basics.
Често ме питат как да сортирам стойности в таблица с VBA. В този пост ще ви покажа как да го направите, като използвате два примера.
Таблицата на резултатите показва продажбите по град.
| град | продажби |
| Берлин | 362 |
| Хамбург | 832 |
| Мюнхен | 290 |
| Кьолн | 901 |
| Франкфурт | 335 |
| Щутгарт | 987 |
| Дюселдорф | 257 |
| Дортмунд | 470 |
| Яжте | 867 |
| Лайпциг | 661 |
Искаме да сортираме таблицата по продажби и по името на града.

За целта първо създаваме нов макрос.
Първо дефинираме параметрите и определяме коя област трябва да бъде сортирана. Първо искаме да сортираме по продажби в колона Б.
За целта използваме метода Sort, който сортира диапазон от стойности. Този метод има редица параметри, само няколко от които ще използваме. Пълен списък на всички параметри можете да намерите в справочника на Microsoft VBA.
Искаме да сортираме продажбите в колона Б във възходящ ред. За да направите това, трябва да посочим първото поле за сортиране в Key1; това определя стойностите, които трябва да бъдат сортирани. Ако е необходимо, можете също да дефинирате няколко полета за сортиране. Полето за сортиране може да бъде прехвърлено или като име на диапазон, или като обект на диапазон. Ние избираме свойството Range за гъвкавост.
Във втория параметър Order1 определяте реда за сортиране чрез xlAscending (възходящ) или xlDescending (низходящ). Освен това казваме на Excel чрез параметъра Header, че нашата таблица съдържа заглавия. Ако използвате стойността xlGuess тук, Excel се опитва да определи за вас дали таблицата има заглавия или не.
Така че пълният макрос изглежда така:
Как стартирате макроса се сортира по продажби:
| град | продажби |
| Дюселдорф | 257 |
| Мюнхен | 290 |
| Франкфурт | 335 |
| Берлин | 362 |
| Дортмунд | 470 |
| Лайпциг | 661 |
| Хамбург | 832 |
| Яжте | 867 |
| Кьолн | 901 |
| Щутгарт | 987 |

111 VBA макроси, които улесняват живота ви
Искате ли да се отървете от скучните си рутинни задачи? Искате ли да адаптирате Excel към вашите нужди, да автоматизирате изчисленията, да създадете свои собствени диалогови прозорци и много други? Тази книга ви показва как да изпълнявате задачите си бързо и лесно с VBA.
Сега имате градовете, изброени по продажби.

Сега нека подредим градовете по азбучен ред. Въвеждам нов параметър. С MatchCase можете да определите дали да се вземат предвид големите или малки букви.
За новия макрос ние просто променяме параметъра strColumn и добавяме MatchCase.
Когато стартирате макроса, таблицата се сортира във възходящ ред по градове.
| град | продажби |
| Берлин | 362 |
| Дортмунд | 470 |
| Дюселдорф | 257 |
| Яжте | 867 |
| Франкфурт | 335 |
| Хамбург | 832 |
| Кьолн | 901 |
| Лайпциг | 661 |
| Мюнхен | 290 |
| Щутгарт | 987 |

Примерен файл на Excel с готовия за използване макрос и 111+ други макроса, които улесняват живота ви, можете да намерите тук.
Впечатлете шефа си с готини трикове на Excel!
- Не позволявайте на вашите колеги да зависят от вас!
- Спестете време и го използвайте за по-приятни неща
- Увеличете производителността и ефективността си
- Лесно е - в бюлетина си давам стъпка по стъпка инструкции, които всеки може да разбере
- Когато се регистрирате за моя бюлетин, ще получите книгата „Трикове на Excel, които впечатляват вашия шеф“ като подарък за добре дошли.

Източник на изображението: Pixabay, CC0 Public Domain
Споделяне на запис
Може да се интересувате и от това






благодаря за подробното обяснение. Бих могъл да го използвам супер.
За съжаление имам проблема, че в моята таблица коя колона включва A до N и е сортирана според колона M, колона N не се сортира, а просто остава.
Оттук и въпросът: Какво означава „1“ в този ред на кода:
Key1: = Обхват (strColumn & "1"), Order1: = xlAscending, _
Благодаря и всичко хубаво
Фридерике
Въпросът на Рике е много интересен. Бих искал да знам и това.
Благодаря и поздрави
Това е комбинация от strColumn, което е "A" в примера, и 1 ... така че това води до клетка A1 ... & в диапазона е връзка