Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Merge Cells (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/3888-merge-cells.html)

noname 23-10-15 20:58

Merge Cells
 
1 Συνημμένο(α)
Καλησπέρα σε όλη την κοινότητα,

ψάχνω να βρω μια λύση για να συγχωνεύονται κελιά με την ίδια τιμή. Τα κελιά που θέλω να συγχωνεύσω είναι σε μια στήλη (όχι σε όλες) πχ στο συνημμένο αρχείο είναι η στήλη B

Επισυνάπτω αρχείο για να δείτε. Οι πρώτες στήλες (Α,Β,C) είναι οι αρχικές και οι στήλες G,H,I είναι το αποτέλεσμα που θα ήθελα.

Σας ευχαριστώ!!

Spirosgr 23-10-15 21:40

Άποψή μου, την οποία υποστηρίζω πολλά χρόνια τώρα, είναι:
VBA και συγχωνευμένα δεν πάνε μαζί...
Βρές άλλο τρόπο.

Σημείωση:
Οι αρχικές στήλες, είναι ότι καλύτερο, για την εμφάνιση των δεδομένων...

noname 23-10-15 21:52

Σπύρο έχεις απόλυτο δίκιο,

αλλά αυτό που ζητάω είναι για παρουσίαση πικάκων και όχι για επεξεργασία δεδομένων.

Spirosgr 23-10-15 21:57

1 Συνημμένο(α)
Υπάρχει καλύτερη παρουσίαση από αυτό;

noname 23-10-15 22:15

Είναι συγκεκριμένη η δομή του πίνακα που θα πρέπει να παρουσιάσω.

Αν ήταν στην ευκαιρία μου θα το έδινα περίπου σαν τον πίνακα που παρουσιάζεις.

Spirosgr 23-10-15 23:36

1 Συνημμένο(α)
Στο βιβλίο που ακολουθεί, υπάρχει λύση με VBA, όπου συμβαίνουν τα εξής:
1
Τρέχουμε τον κώδικα, από το κουμπί του φύλλου.
2
Ανοίγει Inputbox, στο οποίο, ορίζουμε την περιοχή, που θέλουμε (πχ b2:b20)
3
Πιέζουμε, Ok

Αποτέλεσμα:
Όλα τα συνεχόμενα κελιά, της περιοχής που επιλέξαμε,
θα συγχωνευθούν, εφ' όσον περιέχουν την ίδια τιμή.
Για τον κώδικα, το κενό κελί, θεωρείται τιμή.
Οπότε αν υπάρχουν δύο συνεχόμενα κενά θα συγχωνευθούν.

Σημείωση:

Ο κώδικας, μας επιτρέπει να επιλέξουμε, μια ή και περισσότερες στήλες,
που για το συγκεκριμένο παράδειγμα, σημαίνει, ότι αν επιλέξουμε, τις b, c στήλες
θα συγχωνεύσει, την b, ως προς ονόματα και την c, ως προς Yes/No...

noname 24-10-15 00:57

Σ' ευχαριστώ πολύ Σπύρο... όπως και όλη την κοινότητα!!!

Χρήστος 24-10-15 18:01

Καλησπέρα
...Σπύρο, σε κάποιο σημείο δηλώνεις "SelectedRng.Parent", χρησιμοποιείς δηλαδή την ιδιότητα Parent του αντικειμένου Range.
μ' αυτόν τον τρόπο επικαλείσαι το "ανώτερο" σε ιεραρχία αντικείμενο, το Worksheet, έτσι δεν είναι;
Τι κερδίζουμε, πέρα απ' την κομψότητα του κώδικα, μ' αυτόν τον τρόπο; διότι ο κώδικας τρέχει και χωρίς αυτό!

Spirosgr 24-10-15 18:43

Καλησπέρα
Δεν θα ήθελα, να αναφερθώ σε θέματα, «κατασκευής» του κώδικα...

Επειδή όμως αναφέρεις, ότι δουλεύει και χωρίς αυτό, δοκίμασε το εξής:
Αυτή είναι η γραμμή.
Κώδικας:

SelectedRng.Parent.Range(c.Cells(i, 1), c.Cells(k - 1, 1)).Merge
και αυτή η γραμμή χωρίς το Parent
Κώδικας:

SelectedRng.Range(c.Cells(i, 1), c.Cells(k - 1, 1)).Merge
Επέλεξε την περιοχή b2:b20 και τρέξε τον κώδικα....
Δουλεύει, σωστά...;

*Δεν υπάρχουν, κομψοί και άκομψοι κώδικες...

Χρήστος 24-10-15 18:48

...όχι....όχι...δεν αναφέρω ότι δουλεύει και χωρίς αυτό....προσπαθώ να καταλάβω....έκανα 1 μοναδική δοκιμή....και για κακή μου τύχη δούλεψε μια χαρά....και αποφάσισα να συζητήσω μαζί σου.......δεν είχα αντιληφθεί ότι δεν συζητιούνται θέματα κώδικα στο Forum..... όλα καλά....

Πάντως αναφερόμουν στην περίπτωση που γραφτεί έτσι:
Range(c.Cells(i, 1), c.Cells(k - 1, 1)).Merge
που δουλεύει...

Spirosgr 24-10-15 18:56

Αναφέρεις ...
«Τι κερδίζουμε, πέρα απ' την κομψότητα του κώδικα, μ' αυτόν τον τρόπο; διότι ο κώδικας τρέχει και χωρίς αυτό

Μην πανικοβάλλεσαι, όλα καλά ...
Συζητάμε τα πάντα, αλλά, σε ... «επιτρεπτό βάθος» κατά την κρίση μου...
κάποιος άλλος, μπορεί να απαντήσει...σε ότι θέλει...

Χρήστος 24-10-15 19:02

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

kapetang 24-10-15 19:48

Καλησπέρα στην παρέα

Στο χώρο των προγραμματιστών, κομψός θεωρείται ο λιτός κώδικας.

Και οι δύο γραμμές κώδικα:

SelectedRng.Parent.Range(c.Cells(i, 1), c.Cells(k - 1, 1)).Merge

Range(c.Cells(i, 1), c.Cells(k - 1, 1)).Merge

Είναι σωστές.

Προσωπικά προτιμώ τη δεύτερη επειδή είναι συντομότερη και σαφέστερη.

Τα κελιά c.Cells(i, 1), c.Cells(k - 1, 1) ανήκουν σε συγκεκριμένο φύλλο (το φύλλο στο οποίο έγινε η επιλογή) και συνεπώς το πρόθεμα SelectedRng.Parent είναι περιττό.

Μάλιστα μπορεί να δημιουργήσει και το ερωτηματικό: Ταυτίζεται το φύλλο SelectedRng.Parent με το φύλλο των κελιών c.Cells(i, 1), c.Cells(k - 1, 1);

Φιλικά/Γιώργος

Spirosgr 24-10-15 20:04

Θα συμφωνήσω, ως προς το πρώτο κομμάτι της παρατήρησης σου, Γιώργο...
Αν και ο «λιτός» θα πρέπει να είναι και πλήρης...
Τώρα το δεύτερο κομμάτι, όπως λες κι εσύ είναι υποκειμενικό...
Το γιατί «γράφτηκε» έτσι, είναι άλλου παπά ευαγγέλιο...


Η ώρα είναι 01:08.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2