Excel - makro mitme lehe sortimiseks

Probleem

Mul on 11 plaati Excelis. 10 lehte tuleb tõmmata lehelt1.

See on toitlustusteenuse kokkadele.

Mul on veerus A võtmesõna, et eristada iga rida teavet.

Mida ma vajan ...

  • Lehekülg 2 ja 3, et tõmmata terve rida lehest 1, kui veerus A olev sõna on "Hot".
  • Lehekülg 4 ja 5, et tõmmata terve rida lehest 1, kui veerus A olev sõna on "külm".
  • Lehekülg 6, et tõmmata terve rida lehelt 1, kui veerus A olev sõna on "Bulk".
  • Lehekülg 8 ja 9, et tõmmata terve rea joonest 1, kui veerus A olev sõna on "Kondiitritooted".
  • Lehekülg 10, et tõmmata kogu rida lehest 1, kui veerus A olev sõna on "Pres".

Teised lehed on juba kaetud.

Ma lõin makro, et sorteerida lehed kolme veeru alusel. Oleks tore, kui see makro jooksis igal ajal automaatselt lehele. Teabe järjekorras hoidmiseks mitte kindlasse rea, vaid lehe mis tahes ala.

Lahendus

Proovige seda makrot:

 Võimalus Selgesõnaline Private Sub Worksheet_Change (ByVal Target As Range) Dim nxtRow as Integer 'Määrake, kas muutus oli veerus H (8) Kui Target.Column = 8 Siis' Kui Yes, määrake, kas lahtr = Hot Kui Target.Value = "H" Siis „Kui jah, leidke järgmine tühi rida lehel 2 nxtRow = lehed (2) .Range (" G "ja read.Count) .End (xlUp) .Rida + 1 'Kopeeri muudetud rida ja kleebi lehele 2 Target.EntireRow .Copy _ Sihtkoht: = lehed (2) .Range ("A" & nxtRow) "Kui jah, leidke järgmine tühi rida lehel 3 nxtRow = lehed (3) .Range (" G "ja read.Count). xlUp) .Row + 1 'Kopeeri muudetud rida ja kleebi lehele 3 Target.EntireRow.Copy _ Sihtkoht: = Lehed (3) .Reageering ("A" & nxtRow) Lõpeta lõpus Kui "Määrake, kas muutus oli veerus H ( 8) Kui Target.Column = 8 Siis 'Kui Yes, määrake, kas lahtr = Külm Kui Target.Value = "C" Siis "Kui jah, leidke järgmine tühi rida lehel 4 nxtRow = Lehed (4) .Range (" G " & Rows.Count) .End (xlUp) .Row + 1 'Kopeeri muudetud rida ja kleebi lehele 4 Target.EntireRow.Copy _ Sihtkoht: = Lehed (4) .Rida ("A" & nxtRow) "Kui jah, leidke järgmine tühi rida lehel 5 nxtRow = Lehed (5) .Range ("G" ja "Ridid") .End (xlUp) .Rida + 1 'Kopeeri muudetud rida ja kleebi lehele 3 Target.EntireRow.Copy _ Sihtkoht: = Lehed (5) .Range ("A" & nxtRow) Lõpeta lõppu Kui "Määrake, kas muutus oli veerus H (8) Kui Target.Column = 8 Siis" Kui jah, määrake, kas lahtr = Esitus Kui Target.Value = " P "Siis" Kui jah, leidke järgmine tühi rida lehelt 8 nxtRow = Lehed (8) .Range ("G" ja read.Count) .End (xlUp) .Rida + 1 'Kopeeri muudetud rida ja kleebi lehele 8 Sihtmärk .EntireRow.Copy _ Sihtkoht: = lehed (8) .Reageerimine ("A" & nxtRow) Lõpeta lõpus Kui "Määrake, kas muutus oli veerus H (8) Kui Target.Column = 8 Seejärel" Kui jah, määrake, kas lahtr = Maiustused Kui Target.Value = "PY" Seejärel "Kui jah, leidke järgmine tühi rida lehel 10 nxtRow = Lehed (10) .Range (" G "ja read.Count) .End (xlUp). muutis rida ja kleebi lehele 10 Target.EntireRow.Copy _ Sihtkoht: = Lehed (10) .Range ("A" & nxtRow) "Kui jah, leidke järgmine tühi rida lehelt 12 nxtRow = Lehed (11) .Range (" G "& read.Count) (xlUp) .Row + 1 'Kopeeri muudetud rida ja kleebi lehele 12 Target.EntireRow.Copy _ Sihtkoht: = lehed (11) .Reageerige ("A" & nxtRow) lõpp, kui lõpp, kui "Määrake, kas muutus oli veerus H (8) Kui Target.Column = 8 Siis "Kui Yes, määrake, kas lahtr = Bulk Kui Target.Value =" B "Siis Kui jah, leidke järgmine tühi rida lehel 6 nxtRow = Lehed (6) .Range (" G "& Rows.Count) .End (xlUp) .Row + 1 'Kopeeri muudetud rida ja kleebi lehele 6 Target.EntireRow.Copy _ Sihtkoht: = lehed (6) .Rida (" A "& nxtRow) lõpp, kui lõpp, kui Lõpeta alam 

Tänu Jlee1978-le selle näpunäite eest.

Eelmine Artikkel Järgmine Artikkel

Top Näpunäited