Excel - makró több lap rendezéséhez
Probléma
11 lap van excellel. 10 lapnak kell az 1-es lapról húzni az információkat.
Ez a szakácsok részére egy vendéglátó-ipari szolgálat.
Van egy kulcsszó az A oszlopban, hogy megkülönböztessem az egyes információs sorokat.
Amire szükségem van ...
- 2-es és 3-as lap, hogy a teljes sort az 1-es lapból húzza, ha az A oszlopban szereplő szó "Hot".
- 4. és 5. lap, hogy a teljes sort az 1. lapból húzza ki, ha az A oszlopban lévő szó "hideg".
- A 6. lap az 1-es lapról a teljes sort húzza, ha az A oszlopban szereplő szó "Bulk".
- A 8. és 9. lap, hogy a teljes sort az 1. lapból húzza ki, ha az A oszlopban szereplő szó "Péksütemény".
- A 10. lap az 1-es lapról a teljes sort húzza, ha az A oszlopban szereplő szó "Pres".
A többi lap már lefedett.
Hoztam létre egy makrót a lapok rendezésére három oszlop alapján. Jó lenne, ha ez a makró automatikusan futna minden alkalommal, amikor az adatokat hozzáadták a laphoz. Nem egy bizonyos sorhoz, hanem a lap bármely területéhez, hogy az információkat rendben tartsák.
Megoldás
Próbálja ki ezt a makrót:
Opció Kifejezetten privát Sub Worksheet_Change (ByVal Target As Range) Dim nxtRow As Integer 'Határozza meg, hogy a változás a H (8) oszlopban van-e Ha a Target.Column = 8 Ezután' Ha igen, határozza meg, hogy cell = Hot Ha a Target.Value = "H" Majd 'Ha igen, keresse meg a következő üres sort a 2-es lapon nxtRow = Lapok (2) .Range ("G" és sorok. Szám) .End (xlUp) .Row + 1' Másolás sora és beillesztése a 2-es lapra. Target.EntireRow .Copy _ Úticél: = Lapok (2) .Range ("A" & nxtRow) Ha igen, keresse meg a következő üres sort a 3-as lapon nxtRow = Lapok (3) .Range ("G" és sorok.Count). xlUp) .Row + 1 'Másolt sor másolása és beillesztése a 3. lapba Target.EntireRow.Copy _ Úticél: = Lapok (3) .Rang ("A" & nxtRow) Vége Ha vége Ha' Határozza meg, hogy a változás H oszlopra változik-e. 8) Ha Target.Column = 8 Ezután 'Ha igen, határozza meg, hogy cell = hideg Ha Target.Value = "C" Ezután Ha igen, keresse meg a következő üres sort a 4-es lapon nxtRow = Lapok (4) .Range ("G" & Sorok.Count) .End (xlUp) .Row + 1 'Másolt sor másolása és beillesztése a 4. lapba Target.EntireRow.Copy _ Úticél: = Lapok (4) .Range ("A" & nxtRow) "Ha igen, keresse meg következő üres sor az 5-ös lapon nxtRow = Lapok (5) .Range ("G" és sorok. Szám) .End (xlUp) .Row + 1 'Másolt sor átmásolása és beillesztése a 3. lapba Target.EntireRow.Copy _ Cél: = Lapok (5) .Rangolás ("A" & nxtRow) Vége Ha vége Ha "Meghatározza, hogy a változás H oszlopban van-e (8) Ha Target.Column = 8 Ezután" Ha igen, akkor határozza meg, hogy cell = prezentáció Ha Target.Value = " P "Ezután" Ha igen, keresse meg a következő üres sort a 8-as lapon nxtRow = Lapok (8) .Range ("G" és sorok. Szám) .End (xlUp). .EntireRow.Copy _ Úticél: = Lapok (8) .Range ("A" & nxtRow) Vége Ha befejeződik Ha 'Meghatározza, hogy a változás H oszlophoz tartozik-e (8) Ha Target.Column = 8 Ezután' Ha igen, határozza meg, hogy a cellát = Péksütemények Ha Target.Value = "PY" Ezután "Ha igen, keresse meg a következő üres sort a 10 - es lapon nxtRow = Lapok (10) .Range (" G "és sorok. Szám) .End (xlUp). megváltoztatta a sort és illessze be a 10-es lapra. Target.EntireRow.Copy _ Úticél: = Lapok (10) .Range ("A" & nxtRow) Ha igen, keresse meg a következő üres sort a 12-es lapon nxtRow = Lapok (11). G "& Sorok. Számla) (xlUp) .Row + 1 'Másolt sor másolása és beillesztése a 12-es lapra Target.EntireRow.Copy _ Úticél: = Lapok (11) .Rang ("A" & nxtRow) Vége Ha vége Ha "Meghatározza, hogy a változás a H oszlophoz tartozik (8) Ha Target.Column = 8 Ezután 'Ha igen, akkor határozza meg, hogy cell = Bulk Ha Target.Value = "B" Ezután Ha igen, keresse meg a következő üres sort a 6-os lapon nxtRow = Lapok (6) .Range ("G "& Rows.Count) .End (xlUp) .Row + 1 'Másolt sor másolása és beillesztése a 6-os lapra Target.EntireRow.Copy _ Cél: = Lapok (6) .Rang (" A "& nxtRow) vége Ha vége Ha Vége vége
Köszönet Jlee1978-nak a tippért.