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
που δουλεύει...


Η ώρα είναι 14:32.

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


Search Engine Optimization by vBSEO 3.3.2