Excel - makro do sortowania wielu arkuszy

Kwestia

Mam 11 arkuszy w Excelu. 10 arkuszy wymaga wyciągnięcia informacji z arkusza1.

To jest dla kucharzy w gastronomii.

Mam słowo kluczowe w kolumnie A, aby odróżnić każdą linię informacji.

Potrzebuję ...

  • Arkusz 2 i 3, aby wyciągnąć cały wiersz z arkusza1, jeśli słowo w kolumnie A jest „gorące”.
  • Arkusz 4 i 5, aby wyciągnąć cały wiersz z arkusza 1, jeśli słowo w kolumnie A to „Zimno”.
  • Arkusz 6, aby wyciągnąć cały wiersz z arkusza 1, jeśli słowo w kolumnie A to „Luzem”.
  • Arkusz 8 i 9, aby wyciągnąć cały wiersz z arkusza 1, jeśli słowo w kolumnie A to „Ciasto”.
  • Arkusz 10, aby pobrać całą linię z arkusza 1, jeśli słowo w kolumnie A to „Pres”.

Pozostałe arkusze są już pokryte.

Stworzyłem makro do sortowania arkuszy na podstawie trzech kolumn. Byłoby dobrze, gdyby to makro automatycznie uruchamiało się za każdym razem, gdy informacje były dodawane do arkusza. Nie do określonej linii, ale do dowolnego obszaru arkusza, aby zachować informacje w porządku.

Rozwiązanie

Wypróbuj to makro:

 Opcja Jawna prywatna Subkolumna_Zmiana (cel ByVal jako zakres) Dim nxtRow As integer 'Ustal, czy zmiana była na kolumnę H (8) Jeśli Target.Column = 8 Następnie' Jeśli Tak, określ, czy komórka = Gorąco Jeśli Target.Value = "H" Następnie „Jeśli tak, znajdź następny pusty wiersz w arkuszu 2 nxtRow = arkusze (2). Zakres („ G ”i wiersze .ount). Koniec (xlUp) .Row + 1” Skopiuj zmieniony wiersz i wklej do arkusza docelowego 2. .Copy _ Destination: = Sheets (2) .Range ("A" & nxtRow) 'Jeśli Tak, znajdź następny pusty wiersz w Arkuszu 3 nxtRow = Arkusze (3) .Range ("G" i Rows.Count). Koniec ( xlUp) .Row + 1 'Kopiuj zmieniony wiersz i wklej do Arkusza 3 Target.EntireRow.Copy _ Destination: = Arkusze (3) .Range („A” i nxtRow) Koniec jeśli Koniec Jeśli „Określ, czy zmiana dotyczy Kolumny H ( 8) If Target.Column = 8 Then 'Jeśli Yes, określ, czy komórka = Cold If Target.Value = "C" Then' Jeśli Yes, znajdź następny pusty wiersz w Sheet 4 nxtRow = Sheets (4) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1 'Skopiuj zmieniony wiersz i wklej do Arkusza 4 Target.EntireRow.Copy _ Destination: = Arkusze (4) .Range („A” & nxtRow) ”Jeśli Tak, znajdź następny pusty wiersz w Arkuszu 5 nxtRow = Arkusze (5) .Range ("G" i Rows.Count) .End (xlUp) .Row + 1 'Kopiuj zmieniony wiersz i wklej do Arkusza 3 Target.EntireRow.Copy _ Miejsce docelowe: = Arkusze (5) .Range („A” i nxtRow) Koniec jeśli koniec Jeśli „Ustal, czy zmiana była na kolumnę H (8) Jeśli Target.Column = 8 Potem” Jeśli tak, określ, czy komórka = Prezentacja Jeśli Target.Value = ” P „Then” Jeśli Tak, znajdź następny pusty wiersz w Arkuszu 8 nxtRow = Arkusze (8) .Range („G” i Rows.Count) .End (xlUp) .Row + 1 ”Skopiuj zmieniony wiersz i wklej do Arkusza 8 Arkusza .EntireRow.Copy _ Destination: = Sheets (8) .Range ("A" i nxtRow) End If End Jeśli 'Ustal, czy zmiana była na kolumnę H (8) Jeśli Target.Column = 8 Then' Jeśli Tak, określ, czy komórka = Pastry If Target.Value = "PY" Then 'Jeśli Tak, znajdź następny pusty wiersz w Arkuszu 10 nxtRow = Arkusze (10) .Range ("G" i Rows.Count) .End (xlUp) .Row + 1 "Kopiuj zmienił wiersz i wkleił do Arkusza 10 Target.EntireRow.Copy _ Destination: = Arkusze (10) .Range ("A" & nxtRow) 'Jeśli Tak, znajdź następny pusty wiersz w Arkuszu 12 nxtRow = Arkusze (11) .Range (" G "& Rows.Count). Koniec (xlUp) .Row + 1 'Kopiuj zmieniony wiersz i wklej do arkusza 12 Target.EntireRow.Copy _ Destination: = Arkusze (11) .Range („A” i nxtRow) Koniec jeśli koniec Jeśli „Określ, czy zmiana dotyczy kolumny H (8) Jeśli Target.Column = 8 Then 'Jeśli Tak, określ, czy komórka = Bulk Jeśli Target.Value = "B" Następnie "Jeśli Tak, znajdź następny pusty wiersz w Arkuszu 6 nxtRow = Arkusze (6) .Range (" G "& Rows.Count) .End (xlUp) .Row + 1" Kopiuj zmieniony wiersz i wklej do arkusza 6 Target.EntireRow.Copy _ Destination: = Arkusze (6) .Range ("A" i nxtRow) Koniec jeśli koniec Jeśli Napis końcowy 

Dzięki Jlee1978 za tę wskazówkę.

Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki