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

Jak automaticky třídit sloupec podle hodnoty v aplikaci Excel?

Máte například nákupní tabulku, jak je znázorněno na obrázku níže. Nyní chcete, aby se sloupec Cena seřadil automaticky, když do tohoto sloupce zadáte nová čísla/ceny, jak byste to mohli vyřešit? Zde představím makro VBA, které vám pomůže automaticky seřadit konkrétní sloupec podle hodnoty v Excelu.

Automatické řazení sloupce podle hodnoty pomocí VBA


Automatické řazení sloupce podle hodnoty pomocí VBA

Toto makro VBA automaticky seřadí všechna data v konkrétním sloupci, jakmile zadáte nová data nebo změníte hodnotu ve sloupci v aplikaci Excel.

1. Klikněte pravým tlačítkem na název aktuálního listu v Lišta Tabulátor, a potom klepněte na tlačítko Zobrazit kód z nabídky pravého tlačítka myši.

2. V úvodním dialogovém okně Microsoft Visual Basic pro aplikaci vložte do úvodního okna následující kód makra VBA.

VBA: Sloupec automatického řazení v aplikaci 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

Poznámka:
1) Ve výše uvedeném kódu vba B: B znamená, že automaticky seřadí sloupec B, B1 je první buňka ve sloupci B, B2 je druhá buňka ve sloupci B a můžete je změnit podle svých potřeb.
2) Úryvek Záhlaví:=xlYes v 5. řádku sděluje Excelu, že rozsah, který budete třídit, má záhlaví, takže první řádek rozsahu nebude při řazení zahrnut. Pokud záhlaví neexistuje, změňte jej na Záhlaví:=xlNo; a změnit Key1:=Range("B2") ve 4. řadě do Key1:=Range("B1").

3. Poté se vraťte zpět do listu, když ve sloupci Cena zadáte nové číslo nebo upravíte stávající ceny, sloupec Cena se automaticky seřadí vzestupně.

Poznámka: Když zadáte nové číslo do sloupce Cena, musíte číslo zadat do první prázdné buňky pod původními čísly. Pokud jsou mezi nově zadaným číslem a původními čísly prázdné buňky a také prázdné buňky mezi původními čísly, nebude tento sloupec setříděn automaticky.


Ukázka: Automatické řazení sloupce podle hodnoty pomocí VBA v aplikaci Excel


Kutools pro Excel obsahuje více než 300 užitečných nástrojů pro Excel, můžete si je vyzkoušet bez omezení do 30 dnů. Stáhněte si a vyzkoušejte zdarma hned!

Snadno seřaďte podle frekvence výskytu v aplikaci Excel

Kutools pro Excel Rozšířené řazení nástroj podporuje rychlé třídění dat podle délky textu, příjmení, absolutní hodnoty, frekvence atd. v aplikaci Excel. Plná verze zkušební verze zdarma 30 dní!
třídění reklam podle frekvence 2


Nejlepší kancelářské nástroje produktivity

Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než 300 výkonných funkcí. Podporuje Office / Excel 2007-2019 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Kompletní funkce 30denní bezplatná zkušební verze. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50% a omezuje stovky kliknutí myší každý den!
officetab dno
Komentáře (36)
Hodnocení 5 z 5 · 1 hodnocení:
Tento komentář byl moderátorem webu minimalizován
Nádhera, nádhera, moc děkuji. Sám bych na to nikdy nepřišel a opravdu si vážím toho, že to sdílíte!!!
Tento komentář byl moderátorem webu minimalizován
Hledám stejné automatické řazení při zadávání dat pro můj excelový graf. Je těžké porozumět podrobnostem toho, co jste zde zadali jako příklad. Opravdu bych ocenil, kdyby mi někdo, kdo provedl výše uvedený příklad, mohl pomoci roztřídit můj list, aby to udělal totéž. Mám tabulku F1, která ukazuje vítěze a body, a chtěl bych, aby při zadání bodů vedle jména jezdců pro konkrétní závod byl celkový součet na pravé straně tabulky v číselném pořadí, BEZ MÍCHÁNÍ VÝSLEDKU s ostatními řidiči. Zdá se, že k této zprávě nemohu umístit přílohu mého grafu, takže pokud jste schopni můj graf upravit, aby se tak stalo, rád bych vás slyšel. Můžu vám to poslat e-mailem. Pokud s tím můžete pomoci, napište mi prosím e-mail na adresu lordmarshall2013@gmail.com a do řádku PŘEDMĚT napište nápovědu k Excelu F1 a odpovíte s přiloženým grafem. Předem děkujeme za jakoukoli pomoc, kterou můžete poskytnout.
Tento komentář byl moderátorem webu minimalizován
To je skvělé. To byla velká pomoc.
Tento komentář byl moderátorem webu minimalizován
Řekněme, že potřebuji automaticky třídit sloupec "C" a sloupec "D". Jak bych upravil kód, aby seřadil oba sloupce?
Tento komentář byl moderátorem webu minimalizován
Ahoj. Skvělý trik, moc děkuji. V mém souboru mám důležité informace, které potřebuji vidět v buňkách A1 a A2. Proto jsem stabilizoval všechny buňky a moje hodnoty začínají od A3 do A500. Když spustím tento vba, moje informace v buňce A2 přejdou do buňky 501. Jak mohu zajistit, aby se začaly pohybovat od buňky A3? Děkuji předem!
Tento komentář byl moderátorem webu minimalizován
První řádek je vyloučen pro třídění
Tento komentář byl moderátorem webu minimalizován
Měl jsem stejný problém a zjistil jsem proč. Přejděte na řádek 5 (Pořadí1:=xlVzestupně, Záhlaví:=xlAno, _). Skript říká Excelu, že první buňka je záhlaví, a proto ji bude při řazení ignorovat. Pokud chcete zahrnout první řádek, změňte jej na následující řádek:


Order1:=xlAscending, Header:=xlNo, _
Tento komentář byl moderátorem webu minimalizován
Zkopíroval jsem kód přesně do mého listu ve VBA. Ale nic se neděje, chybí mi něco? Udělal přesně to, co jsi udělal.
Tento komentář byl moderátorem webu minimalizován
DĚKUJI!!!
Tento komentář byl moderátorem webu minimalizován
Díky za kód a logiku. Výše uvedená logika nefunguje, když se díváme na větší rozsah buněk, jako je Intersect(Target, Range("B:B,C:C,D:D")). Chci, aby došlo ke změně v jakékoli buňce ve sloupci (B, C nebo D), je třeba provést uchýlení.
Tento komentář byl moderátorem webu minimalizován
Někdo ví, jak nastavit automatické sériové číslo. pro excelový pracovní list. Číslo by nemělo zahrnovat všechny nadpisy a podnadpisy a mělo by se po přidání nebo odstranění řádku automaticky uspořádat.
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Kutools pro Excel poskytuje funkci Vložit pořadové číslo, která dokáže vložit jedinečné a po sobě jdoucí hodnoty bez ohledu na to, kolikrát vložíte.
Například při prvním vložení 1,2,3,4;
Podruhé tato funkce vloží 5,6,7,8,9,10
Potřetí tato funkce vloží 11,12,…
Tento komentář byl moderátorem webu minimalizován
I když je to fantastický kód, rád bych věděl, jestli by mi někdo mohl pomoci dostat to ze vzestupu na sestup? Jinými slovy, hledám, aby to bylo největší číslo nahoře a nejnižší číslo dole
Tento komentář byl moderátorem webu minimalizován
Změnit (Pořadí1:=xlVzestupně, Záhlaví:=xlYes, ) Na (Pořadí1:=xlSestupně, Záhlaví:=xlAno, )
Tento komentář byl moderátorem webu minimalizován
Dobrý den, jsem středně pokročilý uživatel Excelu. Zajímalo by mě, jestli by mi někdo mohl pomoci nasměrovat mě k tomu, čeho se snažím dosáhnout. Zde je to, o co se snažím: Automatické řazení s vlastním pořadím.

Něco málo o mých tabulkách: Mám jeden list (pojmenovaný: List1), který obsahuje 16 sloupců (A až P) a aktuálně 19 řádků (tento počet se bude zvyšovat, jak zadáte více dat). V posledním sloupci (sloupec P) mají všechny buňky rozevírací nabídku možností (umístěnou a vytaženou z listu XNUMX (s názvem „BackEnd“). Rozbalovací seznamy jsou barevně odlišeny (pomocí pravidel podmíněného formátování).

V co doufám: Když uživatel zadá data do nového řádku, jakmile dokončí výběr možnosti z rozbalovací nabídky ve sloupci P, Excel automaticky seřadí nový řádek podle konkrétního pořadí. Podařilo se mi vytvořit kód VBA pro automatické řazení ve vzestupném a sestupném pořadí, ale nepodařilo se mi vytvořit kód pro automatické řazení dat v určitém pořadí. Pořadí, do kterého bych chtěl data roztřídit, je:

Nereaguje
Nemám zájem
Zájemce
Předběžná kontrola bez kvalifikace:
Předběžná kontrola kvalifikovaná
Aplikace čeká na vyřízení
Aplikace Schválena
Počáteční hodnocení:
Rozsah práce:
Probíhají domácí opravy
Pozastaveno:
Kompletní
Ostatní:

Je to možné? Jakákoli pomoc je oceňována! Děkuji!
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

Jak mohu spustit toto makro poté, co vyplním všechna data do konkrétního sloupce?
Chci, aby se makro výpisu začalo po vyplnění prázdných polí. Protože když to použiji, náhle to změní místo.
Potřebuji spustit toto makro poté, co vyplním poslední údaje tohoto sloupce (přesně 20 údajů)
Tento komentář byl moderátorem webu minimalizován
Mohu se zeptat, zda existuje způsob, jak použít tento kód VBA, pokud je ve sloupci vzorec, který chcete být hlavním řazením.

tj. pokud A2 = součet f2 + g2 + h2 a sloupec A je třeba seřadit podle celkového součtu? (Nemohu zprovoznit VBA, pokud je vzorec v buňkách)

Jakákoli pomoc by byla laskavě oceněna jako naděje, že ji využijete pro závody s hodnocením, když vítězem je ten, kdo má celkem tři závody.

Děkujeme
Tento komentář byl moderátorem webu minimalizován
Také chci znát řešení problému Paula. prosím sdílej
Tento komentář byl moderátorem webu minimalizován
Mně se osvědčilo změnit tento řádek
If Not Intersect(Target, Range("B:B")) is Nothing Then
Myslím, že klíčem je nastavit Cílový rozsah na pole, která se mění, a zachovat řazení na datech se sečtenými výsledky.
Tento komentář byl moderátorem webu minimalizován
Funguje to pro mě, když je v buňce vzorec:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B1").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:= xlTopToBottom
End Sub
Tento komentář byl moderátorem webu minimalizován
To bylo opravdu užitečné, ale mám 2 řádky záhlaví (řádky 1 a 2) a když spustím VBA, vezme druhý řádek na konec dat
jak to zastavím?
Tento komentář byl moderátorem webu minimalizován
ahoj kerry,

Existuje VBA, které automaticky seřadí buňky ve sloupci s prvními dvěma buňkami záhlaví.

Soukromá dílčí tabulka_Změna (ByVal Target As Range)
Dim xIntRC jako celé číslo
Dim xURg jako rozsah
On Error Resume Next
If Not Intersect(Target, Range("B:B")) is Nothing Then
If Not Intersect(Target, Range("B1:B2")) Is Nothing Then Exit Sub
Nastavit xURg = ActiveSheet.UsedRange
xIntRC = xURg.Rows.count
Rozsah("B2:B" & xIntRC). Klíč řazení1:=Rozsah("B3"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientace:=xlTopToBottom
End If
End Sub
Tento komentář byl moderátorem webu minimalizován
Dobrý den, nemám štěstí s kódem přímo výše z "kellytte" pro řazení buněk ve sloupci ignorováním prvních dvou buněk záhlaví. může mi někdo pomoci? Dík.
Tento komentář byl moderátorem webu minimalizován
Hithis kód vyřešil můj problém. ale potřebuji seřadit sloupec B a tímto stačí změnit sloupec A, ne všechny. pomozte plz
Tento komentář byl moderátorem webu minimalizován
Ahoj, uspořádá to celý řádek, ale mám nějaký odkaz na buňky do konkrétní složky, která zůstane po třídění.
Tento komentář byl moderátorem webu minimalizován
Zdá se tedy, že to funguje, když jsou data zadána ručně, ale nefunguje, když se jedná o tabulku, která se znovu naplní z jiného souboru.... existuje nějaký způsob, jak to udělat?
Tento komentář byl moderátorem webu minimalizován
Úžasné díky!!!
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
To je velmi užitečné.
Existuje způsob, jak rozšířit vzorec tak, aby pokryl více sloupců? Chcete-li například třídit data na základě hodnot nejprve ve sloupci B a poté ve sloupci C? Opravdu bych ocenil jakékoli řešení!
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
To je velmi užitečné.
Existuje způsob, jak rozšířit vzorec tak, aby pokryl více sloupců? Chcete-li například seřadit data na základě hodnot nejprve ve sloupci B a poté ve sloupci C?
Opravdu bych ocenil jakékoli řešení!
Zatím zde nejsou žádné komentáře
Načíst další
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění