Note: The other languages of the website are Google-translated. Back to English

Як автоматично сортувати стовпець за значенням в Excel?

Наприклад, у вас є таблиця покупок, як показано на екрані зліва. Тепер ви хочете, щоб стовпець Ціна сортувався автоматично, коли ви вводите новий номер / ціну в цей стовпець, як ви могли це вирішити? Тут я представляю макрос VBA, який допоможе вам автоматично сортувати певний стовпець за значенням у Excel.

Автоматичне сортування стовпця за значенням за допомогою VBA


Автоматичне сортування стовпця за значенням за допомогою VBA

Цей макрос VBA автоматично сортує всі дані у певному стовпці, як тільки ви вводите нові дані або змінюєте значення в стовпці в Excel.

1. Клацніть правою кнопкою миші назву поточного аркуша в Листок вкладки, а потім натисніть кнопку Переглянути код з меню, що клацне правою кнопкою миші.

2. У діалоговому вікні Microsoft Visual Basic for Application відкрийте наведений нижче код макросу VBA у вікні відкриття.

VBA: Автоматичне сортування стовпця в Excel

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("B:B")) Is Nothing Then
Range("B1").Sort Key1:=Range("B2"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End If
End Sub

примітки: У наведеному вище коді vba B: B означає, що він автоматично сортуватиме стовпець B, B1 - це перша комірка у стовпці B, B2 - друга комірка у стовпці B, і ви можете змінити їх відповідно до своїх потреб.

3. Потім поверніться до аркуша, коли ви введете нове число в стовпець Ціна або зміните будь-які існуючі ціни, стовпець Ціна буде автоматично відсортований за зростанням.

примітки: під час введення нового номера в стовпець Ціна потрібно ввести номер у першій порожній комірці під вихідними номерами Якщо між новим введеним номером та оригінальними номерами є порожні комірки, а також пусті клітинки між оригінальними номерами, цей стовпець не буде сортуватися автоматично.


Демо: автоматичне сортування стовпця за значенням за допомогою VBA в Excel


Kutools для Excel включає більше 300 зручних інструментів для Excel, які можна спробувати без обмежень протягом 30 днів. Завантажте та безкоштовно пробну версію зараз!

Легко сортувати за частотою зустрічань в Excel

Kutools для Excel Розширене сортування утиліта підтримує швидке сортування даних за довжиною тексту, прізвищем, абсолютним значенням, частотою тощо. Повнофункціональна безкоштовна пробна версія 30 днів!
сортування оголошень за частотою 2


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

  • Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Понад 300 потужних функцій. Підтримує Office / Excel 2007-2019 та 365. Підтримує всі мови. Простота розгортання на вашому підприємстві чи в організації. Повна функція 30-денної безкоштовної пробної версії. 60-денна гарантія повернення грошей.
вкладка kte 201905

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (33)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Красиво, красиво, гарно, дуже дякую. Ніколи б не зміг зрозуміти це самостійно, і я дуже вдячний, що ви поділилися цим!!!
Цей коментар був мінімізований модератором на сайті
Я шукаю те саме автоматичне сортування під час введення даних для моєї діаграми Excel. Мені важко зрозуміти деталі того, що ви ввели тут як приклад. Я був би дуже вдячний, якби хтось, хто зробив наведений вище приклад, допоміг мені розібрати мій аркуш, щоб він зробив те саме. У мене є діаграма F1, яка показує переможців та очки, і я хотів би, щоб, коли очки вводяться поруч із назвою гонщиків для певної гонки, загальна сума в правій частині аркуша вказується в порядку чисел, БЕЗ ЗМІШУВАННЯ РЕЗУЛЬТАТУ з іншими драйверами. Здається, я не можу розмістити в цьому повідомленні вкладення моєї діаграми, тому, якщо ви можете змінити мою діаграму для мене, щоб це сталося, я хотів би почути від вас. Я можу надіслати його вам електронною поштою. Якщо ви можете допомогти з цим, будь ласка, напишіть мені на lordmarshall2013@gmail.com і в рядку ТЕМА, будь ласка, напишіть довідку F1 Excel, і я відповім із доданою діаграмою для вас. Наперед дякуємо за будь-яку допомогу, яку ви можете надати.
Цей коментар був мінімізований модератором на сайті
Це чудово. Це дуже допомогло.
Цей коментар був мінімізований модератором на сайті
Скажімо, мені потрібно автоматично сортувати стовпці "C" і стовпці "D". Як я можу змінити код для сортування обох стовпців?
Цей коментар був мінімізований модератором на сайті
Привіт. Чудовий трюк, дуже дякую. У моєму файлі є важлива інформація, яку мені потрібно побачити в клітинках A1 і A2. Тому я стабілізував усі клітинки, і мої значення починаються від A3 до A500. Коли я виконую цей vba, моя інформація з комірки A2 потрапляє в клітинку 501. Як я можу змусити її починати ранжування з клітинки A3? Заздалегідь спасибі!
Цей коментар був мінімізований модератором на сайті
Перший рядок виключається для сортування
Цей коментар був мінімізований модератором на сайті
У мене була така ж проблема, і я дізнався чому. Перейдіть до рядка 5 (Порядок1:=xlAscending, Header:=xlYes, _). Сценарій повідомляє Excel, що перша клітинка є заголовком, і тому він ігнорує його під час сортування. Якщо ви хочете включити перший рядок, змініть його на такий рядок:


Порядок1:=xlЗа зростанням, Заголовок:=xlNo, _
Цей коментар був мінімізований модератором на сайті
Скопіював код точно на мій аркуш у VBA. Але нічого не відбувається, я щось пропускаю? Зробив саме те, що зробив.
Цей коментар був мінімізований модератором на сайті
ДЯКУЮ!!!
Цей коментар був мінімізований модератором на сайті
Дякую за код і логіку. Наведена вище логіка не працює, коли ми дивимося на більший діапазон комірок, наприклад Intersect(Target, Range("B:B,C:C,D:D")). Я хочу, якщо в будь-якій клітинці в стовпці (B, C або D) буде зміна, потрібно зробити перехід.
Цей коментар був мінімізований модератором на сайті
Будь-хто знає, як встановити автоматичний серійний номер. для робочого аркуша Excel. Номер має виключати всі заголовки та підзаголовки, і має автоматично перебудовуватися після додавання чи видалення рядка.
Цей коментар був мінімізований модератором на сайті
привіт,
Kutools for Excel надає функцію «Вставити порядковий номер», яка може вставляти унікальні та послідовні значення незалежно від того, скільки разів ви вставляєте.
Наприклад, коли ви вперше вставляєте 1,2,3,4;
Удруге ця функція буде вставляти 5,6,7,8,9,10
Втретє ця функція буде вставляти 11,12,…
Цей коментар був мінімізований модератором на сайті
Хоча це фантастичний код, я хотів би знати, чи може хтось допомогти мені перейти від висхідного до низхідного? Іншими словами, я шукаю, щоб це було найбільше число зверху та найменше число знизу
Цей коментар був мінімізований модератором на сайті
Змінити (Order1:=xlAscending, Header:=xlYes, ) на (Order1:=xlDescending, Header:=xlYes, )
Цей коментар був мінімізований модератором на сайті
Привіт, я проміжний користувач Excel. Мені цікаво, чи може хтось допомогти мені спрямувати те, що я намагаюся досягти. Ось що я намагаюся зробити: автоматичне сортування за допомогою спеціального порядку.

Трохи про мої електронні таблиці: у мене є один аркуш (з назвою: Sheet1), на якому перераховано 16 стовпців (від A до P) і наразі 19 рядків (це число буде збільшуватися, коли буде введено більше даних). В останньому стовпці (стовпець P) усі клітинки мають випадаюче меню параметрів (розташовуються та витягуються з аркуша XNUMX (з ім’ям «BackEnd»)). Виділення, що випадають, мають кольорове кодування (з використанням правил умовного форматування).

Що я сподіваюся зробити: коли користувач вводить дані в новий рядок, як тільки він закінчить вибирати параметр зі спадного меню в стовпці P, Excel автоматично відсортує новий рядок у певному порядку. Мені вдалося створити код VBA для автоматичного сортування в порядку зростання та спадання, але я не зміг створити код для автоматичного сортування даних у певному порядку. Порядок, у якому я хотів би відсортувати дані, такий:

Не реагує
Не зацікавлений
Зацікавлений
Попередня перевірка не кваліфікована:
Кваліфікована попередня перевірка
Заявка на розгляді
Заявка схвалена
Початкова оцінка:
Обсяг робіт:
Триває ремонт будинку
На утриманні:
Цілковита
Інший:

Це можливо? Будь-яка допомога цінується! Дякую!
Цей коментар був мінімізований модератором на сайті
привіт,

Як я можу запустити цей макрос після заповнення всіх даних у певний стовпець?
Я хочу, щоб макрос списку починався після того, як я заповню порожні поля. Тому що, коли я використовую це, воно раптово змінює місце.
Мені потрібно запустити цей макрос після того, як я заповню останні дані цього стовпця (точніше 20 даних)
Цей коментар був мінімізований модератором на сайті
Я можу запитати, чи є спосіб використовувати цей код VBA, якщо в стовпці є формула, яка має бути основним сортуванням.

тобто якщо A2 = суму f2 + g2+ h2 і стовпець A потрібно відсортувати за загальним підсумком? (Я не можу змусити VBA працювати, якщо формула в клітинках)

Будемо вдячні за будь-яку допомогу, оскільки ми сподіваємося використати її для рейтингових перегонів, коли переможцем є той, хто має три змагання.

Дякую
Цей коментар був мінімізований модератором на сайті
Я також хочу знати рішення проблеми Паули. поділіться будь ласка
Цей коментар був мінімізований модератором на сайті
Для мене це спрацювало, щоб змінити цю лінію
Якщо не перетинається(ціль, діапазон("B:B")) - це нічого
Я думаю, що головне — встановити цільовий діапазон на поля, які змінюються, і зберегти сортування даних із підсумованими результатами.
Цей коментар був мінімізований модератором на сайті
Це працює для мене, коли в клітинці є формула:
Приватний допоміжний робочий лист_SelectionChange(ByVal Target As Range) Range("B1").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:= xlTopToBottom
End Sub
Цей коментар був мінімізований модератором на сайті
Це було дуже корисно, але у мене є 2 рядки заголовків (рядки 1 і 2), і коли я запускаю VBA, він займає другий рядок у нижній частині дат
як мені це зупинити?
Цей коментар був мінімізований модератором на сайті
Привіт, Керрі,

Існує VBA, який автоматично сортуватиме клітинки в стовпці, окрім перших двох клітинок заголовка.

Приватний допоміжний робочий лист_Change(ByVal Target As Range)
Dim xIntRC як ціле число
Dim xURg As Range
On Error Resume Next
Якщо не перетинається(ціль, діапазон("B:B")) - це нічого
Якщо не перетинається(ціль, діапазон("B1:B2")) - це нічого, тоді вийдіть з підпорядкування
Встановіть xURg = ActiveSheet.UsedRange
xIntRC = xURg.Rows.count
Діапазон("B2:B" & xIntRC).Ключ сортування1:=Діапазон("B3"), _
Порядок1:=xlЗа зростанням, Заголовок:=xlТак, _
OrderCustom:=1, MatchCase:=False, _
Орієнтація:=xlTopToBottom
End If
End Sub
Цей коментар був мінімізований модератором на сайті
Привіт, мені не пощастило з кодом безпосередньо вище від "kellytte" для сортування комірок у стовпці, ігноруючи перші дві клітинки заголовка. Хтось може мені допомогти? Спасибі.
Цей коментар був мінімізований модератором на сайті
Цей код вирішить мою проблему. але мені потрібно відсортувати стовпець B & за допомогою цього Просто змінити стовпець A, а не всі. допоможіть плз
Цей коментар був мінімізований модератором на сайті
Привіт, він впорядковує весь рядок, але у мене є посилання на клітинки в певну папку, яка залишається після сортування.
Цей коментар був мінімізований модератором на сайті
Тож це, здається, працює, коли дані вводяться вручну, але не працює, коли це таблиця, яка повторно заповнюється з іншого файлу.... чи є спосіб зробити це?
Цей коментар був мінімізований модератором на сайті
Дивовижне спасибі!!!
Цей коментар був мінімізований модератором на сайті
привіт,
Це надзвичайно корисно.
Чи є спосіб розширити формулу, щоб охопити кілька стовпців? Наприклад, щоб відсортувати дані на основі значень спочатку, стовпця B, а потім стовпця C? Буду дуже вдячний за будь-які рішення!
Цей коментар був мінімізований модератором на сайті
привіт,
Це надзвичайно корисно.
Чи є спосіб розширити формулу, щоб охопити кілька стовпців? Наприклад, щоб відсортувати дані на основі значень спочатку стовпця B, а потім стовпця C?
Буду дуже вдячний за будь-які рішення!
There are no comments posted here yet
Load More
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця