Excel - makro, lai kārtotu vairākas lapas

Izdevums

Man ir 11 lapas Excel. 10 lapām ir jāvelk informācija no 1. lapas.

Tas paredzēts šefpavāriem ēdināšanas pakalpojumos.

A slejā ir atslēgas vārds, lai atšķirtu katru informācijas līniju.

Kas man ir nepieciešams ...

  • 2. un 3. lapa, lai izvilktu pilnu rindu no 1. lapas, ja A slejas vārds ir "Hot".
  • 4. un 5. lapa, lai izvilktu pilnu rindu no 1. lapas, ja A slejas vārds ir "Auksts".
  • 6. lappuse, lai izvilktu pilnu rindu no 1. lapas, ja A slejas vārds ir "Bulk".
  • 8. un 9. loksne, lai izvilktu pilnu rindu no 1. lapas, ja A slejas vārds ir "Mīklas izstrādājumi".
  • 10. lapa, lai izvilktu pilnu rindu no 1. lapas, ja A slejas vārds ir "Pres".

Pārējās lapas jau ir ietvertas.

Es izveidoju makro, lai kārtotu lapas, pamatojoties uz trim slejām. Būtu jauki, ja šis makro automātiski darbotos ikreiz, kad lapa tika pievienota. Ne tikai noteiktā rindā, bet jebkurā lapas daļā, lai saglabātu informāciju kārtībā.

Risinājums

Izmēģiniet šo makro:

 Iespēja Skaidrs Privāts Sub Worksheet_Change (ByVal Target As Range) Dim nxtRow Kā Integer 'Nosakiet, vai izmaiņas bija H (8) slejā Ja Target.Column = 8 Tad' Ja jā, nosakiet, vai šūna = Hot Ja Target.Value = "H" Tad "Ja jā, atrodiet nākamo tukšo rindu 2. Lapā nxtRow = Loksnes (2) .Range (" G "un rindas.Skaitlis) .No (xlUp) .Row + 1 'Kopēt mainīta rinda un ielīmējiet 2. lapā Target.EntireRow .Copy _ Galamērķis: = Loksnes (2) .Raide ("A" & nxtRow) Ja jā, atrodiet nākamo tukšo rindu 3. lapā nxtRow = Lapas (3) .Rangs ("G" un rindas.Skaitlis). xlUp) .Row + 1 'Kopēt mainīta rinda un ielīmējiet 3. lapā Target.EntireRow.Copy _ Galamērķis: = Loksnes (3) .Rinds ("A" & nxtRow) Beigas beigas Ja "Nosakiet, vai izmaiņas bija H slejā ( 8) Ja Target.Column = 8 Tad 'Ja Jā, Nosakiet, vai šūna = Auksts Ja Target.Value = "C" Tad "Ja Jā, atrodiet nākamo tukšo rindu 4. Lapā nxtRow = Lapas (4) .Range (" G " & Rows.Count) .End (xlUp) .Row + 1 'Kopēt mainīta rinda un ielīmējiet 4. lapā Target.EntireRow.Copy _ Galamērķis: = Loksnes (4) .Izveidot ("A" & nxtRow) "Ja jā, atrodiet nākamā tukšā rinda 5. lapā nxtRow = Loksnes (5) .Rangs ("G" un rindas.Skaitlis) .No (xlUp). Rāda + 1 'Kopēt mainīto rindu un ielīmējiet 3. lapā Target.EntireRow.Copy _ Galamērķis: = Lapas (5) .Reģions ("A" & nxtRow) Beigas beigas Ja "Nosakiet, vai izmaiņas bija H slejā (8) Ja Target.Column = 8 Tad" Ja jā, Nosakiet, vai šūna = Prezentācija Ja Target.Value = " P "Tad" Ja jā, atrodiet nākamo tukšo rindu 8. Lapā nxtRow = Loksnes (8) .Rangs ("G" un rindas.Skaitlis) .Ind (xlUp). Rāda + 1 'Kopēt mainīta rinda un ielīmējiet 8. .EntireRow.Copy _ Galamērķis: = Loksnes (8) .Reģistrēties ("A" & nxtRow) Beigas beigas Ja "Nosakiet, vai izmaiņas bija H slejā (8) Ja Target.Column = 8 Tad" Ja jā, nosakiet, vai šūna = Konditoreja Ja Target.Value = "PY" Tad "Ja jā, atrodiet nākamo tukšo rindu 10. Lappusē nxtRow = Loksnes (10) .Range (" G "un rindas.Skaitlis) .Pēc (xlUp). mainīja rindu un ielīmējiet 10. lapā Target.EntireRow.Copy _ Galamērķis: = Loksnes (10) .Reģistrēties ("A" & nxtRow) "Ja jā, atrodiet nākamo tukšo rindu lapā 12 nxtRow = Lapas (11) .Range (" G "& Rows.Count") (xlUp) .Row + 1 'Kopēt mainīto rindu un ielīmējiet 12. lapā Target.EntireRow.Copy _ Galamērķis: = Lapas (11) .Reģistrācija ("A" & nxtRow) Beigas beigas Ja "Nosakiet, vai izmaiņas bija H slejā (8) Ja Target.Column = 8 Tad "Ja jā, nosakiet, vai šūna = Bulk Ja Target.Value =" B "Tad" Ja jā, atrodiet nākamo tukšo rindu 6. Lapā nxtRow = Loksnes (6). "& Rows.Count" .End (xlUp) .Row + 1 'Kopēt mainīto rindu un ielīmējiet 6. lapā Target.EntireRow.Copy _ Galamērķis: = Loksnes (6). Atkārtot ("A" & nxtRow) beigas, ja beigas Ja Beigt Sub 

Pateicoties Jlee1978 par šo padomu.

Iepriekšējais Raksts Nākamais Raksts

Top Padomi