Excel - En makro til at sortere flere ark

Problem

Jeg har 11 ark i Excel. 10 ark skal trække oplysninger fra ark1.

Dette er for kokke på en catering service.

Jeg har et nøgleord i kolonne A for at differentiere hver informationslinje.

Hvad jeg har brug for er ...

  • Ark 2 & 3 for at trække hele linjen fra ark1, hvis ordet i kolonne A er "Hot".
  • Blad 4 & 5 for at trække hele linjen fra ark 1, hvis ordet i kolonne A er "Kold".
  • Blad 6 for at trække hele linjen fra ark 1, hvis ordet i kolonne A er "Bulk".
  • Blad 8 og 9 for at trække hele linjen fra ark 1, hvis ordet i kolonne A er "Pastry".
  • Ark 10 for at trække hele linjen fra ark 1, hvis ordet i kolonne A er "Pres".

De øvrige ark er allerede dækket.

Jeg oprettede en makro for at sortere arkene baseret på tre kolonner. Det ville være rart, hvis denne makro kørte automatisk hver gang information blev tilføjet til arket. Ikke til en bestemt linje, men til et hvilket som helst område af arket for at holde informationen i orden.

Opløsning

Prøv denne makro:

 Alternativ Eksplicit Privat Sub-arbejdsark_Change (ByVal Mål Som Område) Dim nxtRow Som Integer 'Bestem om ændring var til kolonne H (8) Hvis Target.Column = 8 Så' Hvis Ja, Bestem om celle = Hot Hvis Target.Value = "H" Så "Hvis ja, find næste tomme række i ark 2 nxtRow = Sheets (2) .Range (" G "& Rows.Count) .End (xlUp) .Row + 1 'Kopier ændret række og indsæt i Sheet 2 Target.EntireRow .Copy _ Destination: = Sheets (2) .Range ("A" & nxtRow) 'Hvis Ja, find næste næste række i ark 3 nxtRow = Sheets (3) .Range ("G" & Rows.Count) .End xlUp) .Row + 1 'Kopier ændret række og indsæt i ark 3 Target.EntireRow.Copy _ Destination: = Ark (3) .Range ("A" & nxtRow) Afslut hvis ende Hvis' Bestem om ændring var til kolonne H 8) Hvis Target.Column = 8 Så "Hvis Ja, Bestem om celle = Kold Hvis Target.Value =" C "Så 'Hvis Ja, find næste næste række i ark 4 nxtRow = Sheets (4) .Range (" G " & Rows.Count) .End (xlUp) .Row + 1 'Kopier ændret række og indsæt i ark 4 Target.EntireRow.Copy _ Destination: = Ark (4) .Range ("A" & nxtRow)' Hvis Ja, find næste tomme række i ark 5 nxtRow = Sheets (5) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1 'Kopier ændret række og indsæt i Sheet 3 Target.EntireRow.Copy _ Destination: = Ark (5) .Range ("A" & nxtRow) Slut Hvis ende Hvis 'Bestem om ændring var til kolonne H (8) Hvis Target.Column = 8 Så' Hvis Ja, Bestem om celle = Præsentation Hvis Target.Value = " P "Then" Hvis Ja, find næste næste række i ark 8 nxtRow = Sheets (8) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1 'Kopier ændret række og indsæt i Sheet 8 Target .EntireRow.Copy _ Destination: = Ark (8) .Range ("A" & nxtRow) Afslut hvis ende Hvis 'Bestem om ændring var til kolonne H (8) Hvis Target.Column = 8 Then' Hvis Ja, Bestem om celle = Pastry Hvis Target.Value = "PY" Then 'Hvis Ja, find næste næste række i ark 10 nxtRow = Sheets (10) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1' Copy ændret række og indsæt i ark 10 Target.EntireRow.Copy _ Destination: = Ark (10) .Range ("A" & nxtRow) 'Hvis Ja, find næste tomme række i ark 12 nxtRow = Sheets (11) .Range G "& Rows.Count). Og (xlUp) .Row + 1 'Kopier ændret række og indsæt i ark 12 Target.EntireRow.Copy _ Destination: = Ark (11) .Range ("A" & nxtRow) Afslut hvis ende Hvis' Bestem om ændring var til kolonne H (8) Hvis Target.Column = 8 Then 'Hvis Ja, Bestem om celle = Bulk Hvis Target.Value = "B" Then' Hvis Ja, find næste næste række i ark 6 nxtRow = Sheets (6) .Range "& Rows.Count) .End (xlUp) .Row + 1 'Kopier ændret række og indsæt i ark 6 Target.EntireRow.Copy _ Destination: = Ark (6) .Range (" A "& nxtRow) Slutdel 

Takket være Jlee1978 for dette tip.

Forrige Artikel Næste Artikel

Top Tips