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

Cum se sortează automat coloana după valoare în Excel?

De exemplu, aveți un tabel de achiziții, așa cum se arată mai jos. Acum doriți ca coloana Preț să fie sortată automat când introduceți numere/prețuri noi în această coloană, cum ați putea să o rezolvați? Aici introduc o macrocomandă VBA pentru a vă ajuta să sortați automat o anumită coloană după valoare în Excel.

Sortați automat coloana după valoare cu VBA


Sortați automat coloana după valoare cu VBA

Această macrocomandă VBA va sorta automat toate datele dintr-o coloană specifică imediat ce introduceți date noi sau modificați valoarea în coloană în Excel.

1. Faceți clic dreapta pe numele curent al foii în Bara de file Foaie, apoi faceți clic pe Afișați codul din meniul cu clic dreapta.

2. În caseta de dialog Microsoft Visual Basic pentru aplicație, lipiți următorul cod macro VBA în fereastra de deschidere.

VBA: Coloana de sortare automată în 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

notițe:
1) În codul vba de mai sus, B: B înseamnă că va sorta automat coloana B, B1 este prima celulă din coloana B, B2 este a doua celulă din coloana B și le puteți modifica în funcție de nevoile dvs.
2) Fragmentul Antet:=xlDa în al 5-lea rând îi spune Excel că intervalul pe care îl veți sorta are un antet, astfel încât primul rând al intervalului nu va fi inclus la sortare. Dacă nu există antet, schimbați-l în Antet:=xlNr; și schimbare Key1:=Range ("B2") în al 4-lea rând la Key1:=Range ("B1").

3. Apoi reveniți la foaia de lucru, când introduceți un număr nou în coloana Preț sau modificați orice prețuri existente, coloana Preț va fi sortată automat în ordine crescătoare.

notițe: Când introduceți un număr nou în coloana Preț, trebuie să introduceți numărul în prima celulă goală de sub numerele originale. Dacă există celule goale între noul număr introdus și numerele originale, precum și celule goale între numerele originale, această coloană nu va fi sortată automat.


Demo: Sortează automat coloana după valoare cu VBA în Excel


Kutools pentru Excel include mai mult de 300 de instrumente la îndemână pentru Excel, gratuite pentru a încerca fără limitări în 30 de zile. Descărcați și încercați gratuit acum!

Sortează cu ușurință după frecvența aparițiilor în Excel

Kutools pentru Excel Sortare avansată utilitarul acceptă sortarea rapidă a datelor după lungimea textului, numele de familie, valoarea absolută, frecvența etc. în Excel.


sortarea anunțurilor după frecvența 2


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (37)
Evaluat 5 din 5 · evaluări 1
Acest comentariu a fost redus la minimum de moderatorul de pe site
Frumos, frumos, frumos, mulțumesc mult. Nu aș fi putut niciodată să-mi dau seama de asta și apreciez foarte mult că ai împărtășit asta!!!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Caut aceeași sortare automată atunci când introduc date pentru diagrama mea Excel. Îți este greu să înțelegi detaliile a ceea ce ai introdus aici ca exemplu. Aș aprecia foarte mult dacă cineva de aici care a făcut exemplul de mai sus m-ar ajuta să-mi aranjez foaia, astfel încât să facă la fel. Am un grafic de F1 care arată câștigătorii și punctele și mi-ar plăcea ca atunci când punctele sunt introduse lângă numele piloților pentru o anumită cursă, ca totalul din partea dreaptă a foii să fie în ordine numerică, FĂRĂ AMESTAREA REZULTATULUI cu alți șoferi. Se pare că nu pot plasa pe acest mesaj un atașament al diagramei mele, așa că dacă poți să-mi modifici diagrama pentru mine, astfel încât acest lucru să se întâmple, aș dori să aud de la tine. Îți pot trimite prin e-mail. Dacă puteți ajuta cu acest lucru, vă rugăm să-mi trimiteți un e-mail la lordmarshall2013@gmail.com, iar în linia SUBJECT vă rugăm să scrieți ajutorul F1 Excel și vă vom răspunde cu diagrama atașată. Vă mulțumim anticipat pentru orice ajutor pe care îl puteți oferi.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Asta e super. Acest lucru a fost de mare ajutor.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Să spunem că trebuie să sortez automat coloana „C” și coloana „D”. Cum aș modifica codul pentru a sorta ambele coloane?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Weet niet of dit je inmiddels gelukt was, maar voor diegene die het ook nog zouden willen...
În de Sub kun je gewoon meerdere keren het IF statement plaatsen, en dan komt het er als volgt uit te zien.
Dit kun je uiteraard net zo ver uitbreiden als je wilt. Als je dit los van elkaar wilt doen met bepaalde waardes omdat je bijvoorbeeld met gegevensvalidatie werkt, dan moet je meerdere tabellen doen, omdat die waardes anders met elkaar mee verspringen. (Ik had het nodig voor mijn losse gegevensvalidaties, ik heb een extra tabblad aangemaakt waar alle gegevensvalidatielijsten staan)



Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
La data de eroare CV următoare

Dacă nu se intersectează (țintă, interval ("A:A")) nu este nimic, atunci
Interval ("A1"). Sort Key1:=Range ("A2"), _
Order1:=xlAscending, Header:=xlDa, _
OrderCustom:=1, MatchCase:=False, _
Orientare:=xlTopToBottom
Final, dacă

Dacă nu se intersectează (țintă, interval ("B:B")) nu este nimic, atunci
Interval ("B1"). Sort Key1:=Range ("B2"), _
Order1:=xlAscending, Header:=xlDa, _
OrderCustom:=1, MatchCase:=False, _
Orientare:=xlTopToBottom
Final, dacă

Dacă nu se intersectează (țintă, interval ("C:C")) nu este nimic, atunci
Range ("C1"). Sort Key1:=Range ("C2"), _
Order1:=xlAscending, Header:=xlDa, _
OrderCustom:=1, MatchCase:=False, _
Orientare:=xlTopToBottom
Final, dacă

Dacă nu se intersectează (țintă, interval ("D:D")) nu este nimic, atunci
Interval ("D1"). Sort Key1:=Range ("D2"), _
Order1:=xlAscending, Header:=xlDa, _
OrderCustom:=1, MatchCase:=False, _
Orientare:=xlTopToBottom
Final, dacă

End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna ziua. Excelent truc, mulțumesc mult. În fișierul meu, am informații importante pe care trebuie să le văd în celulele A1 și A2. Prin urmare, am stabilizat toate celulele și valorile mele încep de la A3 la A500. Când execut acest vba, informațiile mele din celula A2 merg în celula 501. Cum pot să o fac să înceapă să varieze din celula A3? Vă mulțumesc anticipat!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Primul rând este exclus pentru sortare
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am avut aceeasi problema si am aflat de ce. Mergeți la rândul 5, (Order1:=xlAscending, Header:=xlYes, _). Scriptul îi spune lui Excel că prima celulă este un antet și, prin urmare, o va ignora atunci când are loc sortarea. Dacă doriți să includeți primul rând, schimbați-l la următoarea linie:


Order1:=xlAscending, Header:=xlNu, _
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am copiat codul exact în foaia mea în VBA. Dar nu se întâmplă nimic, îmi scapă ceva? A făcut exact ce ai făcut.
Acest comentariu a fost redus la minimum de moderatorul de pe site
MULȚUMESC!!!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc pentru cod și logică. Logica de mai sus nu funcționează atunci când ne uităm la o gamă mai mare de celule, cum ar fi Intersect(Target, Range ("B:B,C:C,D:D")). Vreau, dacă există o schimbare în orice celulă din coloană (B, C sau D), trebuie făcută recurgerea.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Oricine știe cum să seteze un număr de serie automat. pentru o fișă de lucru excel. Numărul ar trebui să excludă toate titlurile și subtitlurile și ar trebui să se rearanjeze automat după adăugarea sau ștergerea unui rând.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Kutools pentru Excel oferă o caracteristică Inserare un număr de secvență, care poate insera valori unice și consecutive, indiferent de câte ori ați inserat.
De exemplu, prima dată când introduceți 1,2,3,4;
A doua oară, această caracteristică va introduce 5,6,7,8,9,10
A treia oară această caracteristică va insera 11,12,...
Acest comentariu a fost redus la minimum de moderatorul de pe site
Deși acesta este un cod fantastic, aș dori să știu dacă cineva m-ar putea ajuta să trec de la ascendent la descendent? Cu alte cuvinte, caut să fie cel mai mare număr în partea de sus, cu cel mai mic număr în partea de jos
Acest comentariu a fost redus la minimum de moderatorul de pe site
Modificare (Order1:=xlAscending, Header:=xlYes, ) În (Order1:=xlDescending, Header:=xlYes, )
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, sunt un utilizator Excel intermediar. Mă întreb dacă cineva m-ar putea ajuta să mă îndrume spre ceea ce încerc să realizez. Iată ce încerc să fac: Sortare automată cu comandă personalizată.

Câteva despre foile mele de calcul: am o foaie (numită: Sheet1) care listează 16 coloane (de la A la P) și în prezent 19 rânduri (acest număr va crește pe măsură ce se introduc mai multe date). În ultima coloană (coloana P) toate celulele au un meniu derulant de opțiuni (localizate și extrase din foaia a doua (numită „BackEnd”). Selecțiile drop-down sunt codificate în culori (folosind reguli de formatare condiționată).

Ce sper să fac: pe măsură ce un utilizator introduce date într-un rând nou, de îndată ce termină de selectat o opțiune din meniul derulant din coloana P, Excel va sorta automat noul rând într-o anumită ordine. Am reușit să creez un cod VBA pentru sortarea automată în ordine crescătoare și descrescătoare, dar nu am reușit să creez un cod pentru sortarea automată a datelor într-o anumită ordine. Ordinea în care aș dori să fie sortate datele este:

Nu răspunde
Nu sunt interesat
Interesat
Pre-screened Necalificat:
Calificat pre-screened
aplicație în așteptare
Aplicație aprobată
Evaluare initiala:
Scopul muncii:
Reparații la domiciliu în curs
In asteptare:
Completa
Alte:

Este posibil? Orice ajutor este apreciat! Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Cum pot începe această macrocomandă după ce completez toate datele în coloana specifică?
Vreau ca macrocomanda de listare să înceapă după ce umplu casetele goale. Pentru că atunci când folosesc asta, schimbă brusc locul.
Trebuie să pornesc această macrocomandă după ce am completat ultimele date din acea coloană (20 de date mai exact)
Acest comentariu a fost redus la minimum de moderatorul de pe site
Pot să întreb dacă există o modalitate de a utiliza acest cod VBA dacă există o formulă în coloana pe care doriți să fie sortarea principală.

adică dacă A2 = suma f2 + g2+ h2 și coloana A trebuie sortată pe suma totală? (Nu pot face ca VBA să funcționeze dacă formula în celule)

Orice asistență ar fi apreciată cu amabilitate, deoarece speranța de a o folosi pentru clasarea curselor atunci când câștigătorul este cel cu un total de trei evenimente de curse.

Va multumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
De asemenea, vreau să știu o soluție pentru problema Paulei. vă rog împărtășiți
Acest comentariu a fost redus la minimum de moderatorul de pe site
Pentru mine a funcționat să schimb această linie
Dacă nu se intersectează (țintă, interval ("B:B")) nu este nimic, atunci
Cred că cheia este să setați Intervalul țintă la câmpurile care se modifică și să păstrați sortarea datelor cu rezultatele însumate.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru funcționează pentru mine când există o formulă în celulă:
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
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru a fost foarte util, dar am 2 rânduri de anteturi (rândurile 1 și 2) și când rulez VBA, duc al doilea rând la partea de jos a datelor.
cum opresc asta?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut Kerry,

Există un VBA care va sorta automat celulele din coloană în cadrul primelor două celule antet.

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dim xIntRC ca întreg
Dim xURg As Range
La data de eroare CV următoare
Dacă nu se intersectează (țintă, interval ("B:B")) nu este nimic, atunci
Dacă nu se intersectează(țintă, interval("B1:B2")) nu este nimic, atunci ieșiți din sub
Setați xURg = ActiveSheet.UsedRange
xIntRC = xURg.Rows.count
Interval(„B2:B” și xIntRC).Sort Key1:=Range(„B3”), _
Order1:=xlAscending, Header:=xlDa, _
OrderCustom:=1, MatchCase:=False, _
Orientare:=xlTopToBottom
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut, nu am noroc cu codul direct de mai sus de la „kellytte” pentru sortarea celulelor din coloană ignorând primele două celule antet. Ma poate ajuta cineva? Mulțumiri.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest cod îmi rezolvă problema. dar trebuie să sortez coloana B și cu aceasta Schimbați doar coloana A, nu toate. ajutor te rog
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, aranjează întregul rând, dar am un link pe celule într-un folder specific care este lăsat în urmă după sortare.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Deci, acest lucru pare să funcționeze când datele sunt introduse manual, dar nu funcționează când este un tabel care se repopulează dintr-un alt fișier... există vreo modalitate de a face asta?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc uimitor!!!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Acest lucru este extrem de util.
Există o modalitate de a extinde formula pentru a acoperi mai multe coloane? De exemplu, pentru a sorta datele pe baza valorilor de pe coloana B și apoi pe coloana C? Aș aprecia cu adevărat orice soluție!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Acest lucru este extrem de util.
Există o modalitate de a extinde formula pentru a acoperi mai multe coloane? De exemplu, pentru a sorta datele pe baza valorilor de pe coloana B, apoi pe coloana C?
Chiar aș aprecia orice soluție!
Nu există comentarii postate aici încă
Încărcați mai
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL