Excel - Μια μακροεντολή για την ταξινόμηση πολλών φύλλων

Θέμα

Έχω 11 φύλλα σε excel. 10 φύλλα πρέπει να τραβήξουν πληροφορίες από το φύλλο1.

Αυτό είναι για τους σεφ σε μια υπηρεσία τροφοδοσίας.

Έχω μια λέξη-κλειδί στη στήλη Α για να διαφοροποιήσω κάθε γραμμή πληροφοριών.

Αυτό που χρειάζομαι είναι ...

  • Φύλλα 2 & 3 για να τραβήξετε την πλήρη γραμμή από το φύλλο1 αν η λέξη στη στήλη A είναι "Hot".
  • Φύλλα 4 & 5 για να τραβήξετε την πλήρη γραμμή από το φύλλο 1 αν η λέξη στη στήλη A είναι "Ψυχρή".
  • Φύλλο 6 για να τραβήξετε την πλήρη γραμμή από το φύλλο 1 εάν η λέξη στη στήλη Α είναι "Μαζική".
  • Φύλλα 8 & 9 για να τραβήξετε την πλήρη γραμμή από το φύλλο 1 αν η λέξη στη στήλη Α είναι "Ζαχαροπλαστική".
  • Φύλλο 10 για να τραβήξετε την πλήρη γραμμή από το φύλλο 1 αν η λέξη στη στήλη A είναι "Pres".

Τα άλλα φύλλα καλύπτονται ήδη.

Δημιούργησα μια μακροεντολή για να ταξινομήσω τα φύλλα με βάση τρεις στήλες. Θα ήταν ωραίο αν αυτή η μακροεντολή τρέξει αυτόματα κάθε φορά που προστέθηκαν πληροφορίες στο φύλλο. Όχι σε μια συγκεκριμένη γραμμή αλλά σε οποιαδήποτε περιοχή του φύλλου για να διατηρήσετε τις πληροφορίες σωστές.

Λύση

Δοκιμάστε τη μακροεντολή:

 (8) Αν Target.Column = 8 Στη συνέχεια 'Αν ναι, προσδιορίστε εάν cell = Hot Εάν Target.Value = "H" Στη συνέχεια 'Εάν Ναι, βρείτε την επόμενη κενή γραμμή στο Φύλλο 2 nxtRow = Φύλλα (2) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1' Αντιγραφή αλλαγμένης σειράς και επικόλληση σε Φύλλο 2 Target.EntireRow .Copy _ Destination: = Φύλλα (2) .Range ("A" & nxtRow) Αν ναι βρείτε την επόμενη κενή γραμμή στο Φύλλο 3 nxtRow = Φύλλα (3) .Range ("G" & Rows.Count) xlUp) .Row + 1 'Αντιγραφή αλλαγμένης σειράς και επικόλληση σε Φύλλο 3 Target.EntireRow.Copy _ Προορισμός: = Φύλλα (3) .Range ("A" & nxtRow) End If End If' 8) Εάν Target.Column = 8 Στη συνέχεια 'Αν ναι, προσδιορίστε εάν cell = Cold Αν Target.Value = "C" Στη συνέχεια' Εάν Ναι, βρείτε την επόμενη κενή γραμμή στο Φύλλο 4 nxtRow = Φύλλα (4) .Range (" & Rows.Count) .End (xlUp) .Row + 1 'Αντιγραφή αλλαγμένης σειράς και επικόλληση σε Φύλλο 4 Target.EntireRow.Copy _ Προορισμός: = Φύλλα (4) .Range ("A" & nxtRow) επόμενη κενή γραμμή στο φύλλο 5 nxtRow = φύλλα (5) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1 'Αντιγραφή αλλαγμένης σειράς και επικόλληση στο φύλλο 3 Target.EntireRow.Copy _ Προορισμός: = Φύλλα (5) .Range ("A" & nxtRow) Τέλος Αν τελειώσει Αν καθορίσετε εάν η αλλαγή ήταν σε στήλη H (8) Αν Target.Column = 8 Στη συνέχεια 'Αν ναι, P "Στη συνέχεια 'Αν ναι, βρείτε την επόμενη κενή γραμμή στο Φύλλο 8 nxtRow = Φύλλα (8) .Range (" G "& Rows.Count) .End (xlUp) .Row + 1' Αντιγραφή αλλαγμένης σειράς και επικόλληση σε Φύλλο 8 Στόχος .EntireRow.Copy _ Προορισμός: = Φύλλα (8) .Range ("A" & nxtRow) Τέλος Αν τέλος Αν «Προσδιορίστε αν η αλλαγή ήταν στη στήλη H (8) Αν Target.Column = = Ζαχαροπλαστική Εάν Target.Value = "PY" Στη συνέχεια 'Εάν Ναι, βρείτε την επόμενη κενή γραμμή στο Φύλλο 10 nxtRow = Φύλλα (10) .Range ("G" & Rows.Count) .End (xlUp). (10) .Range ("A" & nxtRow) 'Αν ναι, βρείτε την επόμενη κενή γραμμή στο Φύλλο 12 nxtRow = Φύλλα (11) .Range (" G & & Rows.Count) (xlUp) .Row + 1 'Αντιγραφή αλλαγμένης σειράς και επικόλληση σε φύλλο 12 Target.EntireRow.Copy _ Προορισμός: = Φύλλα (11) .Range ("A" & nxtRow) End If End If' (8) Εάν το Target.Column = 8 Στη συνέχεια 'Αν ναι, προσδιορίστε εάν cell = Bulk Αν Target.Value = "B" Στη συνέχεια' Αν ναι, βρείτε την επόμενη κενή γραμμή στο Sheet 6 nxtRow = Sheets "& Rows.Count) .End (xlUp) .Row + 1 'Αντιγραφή αλλαγμένης σειράς και επικόλληση σε Φύλλο 6 Target.EntireRow.Copy _ Προορισμός: = Φύλλα (6) .Range (" A "& nxtRow) End Sub 

Χάρη στο Jlee1978 για αυτή την συμβουλή.

Προηγούμενο Άρθρο Επόμενο Άρθρο

Οι Καλύτερες Συμβουλές