Εμφάνιση ενός μόνο μηνύματος
  #1  
Παλιά 25-09-21, 08:04
kapetang Ο χρήστης kapetang δεν είναι συνδεδεμένος
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή Διαγραφή των γραμμών της περιοχής Α, που περιέχονται στην περιοχή Β

Δημιουργός: Γιώργος Καπετανόπουλος, Σεπτέμβριος 2021

Έχουμε δύο περιοχές κελιών, με ίσο αριθμό στηλών, Α και Β και θέλουμε να διαγράψουμε τις γραμμές της περιοχής Α, που περιέχονται στην περιοχή Β.

Ο εντοπισμός των προς διαγραφή γραμμών, μπορεί να γίνει με δύο τρόπους:

Χωρίς κώδικα

1) Συνενώνουμε στην επόμενη στήλη (βοηθητική στήλη) των περιοχών Α και Β τις τιμές των κελιών κάθε γραμμής, παρεμβάλλοντας και ένα χαρακτήρα (πχ ~), που δεν υπάρχει στα δεδομένα μας.

2) Στην επόμενη στήλη (COUNTIF) στην περιοχή Α, με τη βοήθεια της συνάρτησης COUNTIF(), βρίσκουμε πόσες φορές, κάθε τιμή της βοηθητικής στήλης στην περιοχή Α, περιέχεται στη βοηθητική στήλη της περιοχής Β.

Με κώδικα (VBA)

Δημιούργησα τη συνάρτηση χρήστη ContainLine(rngLine As Range, rngTo As Range), η οποία έχει δύο ορίσματα.

Το όρισμα rngLine είναι μία γραμμή κελιών. Είναι η γραμμή της περιοχής Α για την οποία θα εξετάσουμε, αν ανήκει στην περιοχή Β.

Το όρισμα rngTo είναι η περιοχή Β.

Η συνάρτηση επιστέφει TRUE, αν η γραμμή κελιών (rngLine) υπάρχει στην περιοχή (rngTo) και FALSE, όταν δεν υπάρχει.

1) Στην επόμενη στήλη (VBA) της περιοχής Α, χρησιμοποιούμε τη συνάρτηση ContainLine και προσδιορίζουμε αν, η αντίστοιχη γραμμή, περιέχεται στην περιοχή Β.

2) Επιλέγουμε τις γραμμές στις οποίες το αποτέλεσμα της ContainLine είναι TRUE και τις διαγράφουμε.

Περισσότερα στο συνημμένο αρχείο.

Στο βιβλίο τα φύλλα A_NoVBA και A_VBA περιέχουν την περιοχή Α, για κάθε μία από τις δύο περιπτώσεις, και το φύλλο Β περιέχει την περιοχή Β.
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm diffSet.xlsm (45,6 KB, 35 εμφανίσεις)
Απάντηση με παράθεση