![]() |
Merge Cells 1 Συνημμένο(α) Καλησπέρα σε όλη την κοινότητα, ψάχνω να βρω μια λύση για να συγχωνεύονται κελιά με την ίδια τιμή. Τα κελιά που θέλω να συγχωνεύσω είναι σε μια στήλη (όχι σε όλες) πχ στο συνημμένο αρχείο είναι η στήλη B Επισυνάπτω αρχείο για να δείτε. Οι πρώτες στήλες (Α,Β,C) είναι οι αρχικές και οι στήλες G,H,I είναι το αποτέλεσμα που θα ήθελα. Σας ευχαριστώ!! |
Άποψή μου, την οποία υποστηρίζω πολλά χρόνια τώρα, είναι: VBA και συγχωνευμένα δεν πάνε μαζί... Βρές άλλο τρόπο. Σημείωση: Οι αρχικές στήλες, είναι ότι καλύτερο, για την εμφάνιση των δεδομένων... |
Σπύρο έχεις απόλυτο δίκιο, αλλά αυτό που ζητάω είναι για παρουσίαση πικάκων και όχι για επεξεργασία δεδομένων. |
1 Συνημμένο(α) Υπάρχει καλύτερη παρουσίαση από αυτό; |
Είναι συγκεκριμένη η δομή του πίνακα που θα πρέπει να παρουσιάσω. Αν ήταν στην ευκαιρία μου θα το έδινα περίπου σαν τον πίνακα που παρουσιάζεις. |
1 Συνημμένο(α) Στο βιβλίο που ακολουθεί, υπάρχει λύση με VBA, όπου συμβαίνουν τα εξής: 1 Τρέχουμε τον κώδικα, από το κουμπί του φύλλου. 2 Ανοίγει Inputbox, στο οποίο, ορίζουμε την περιοχή, που θέλουμε (πχ b2:b20) 3 Πιέζουμε, Ok Αποτέλεσμα: Όλα τα συνεχόμενα κελιά, της περιοχής που επιλέξαμε, θα συγχωνευθούν, εφ' όσον περιέχουν την ίδια τιμή. Για τον κώδικα, το κενό κελί, θεωρείται τιμή. Οπότε αν υπάρχουν δύο συνεχόμενα κενά θα συγχωνευθούν. Σημείωση: Ο κώδικας, μας επιτρέπει να επιλέξουμε, μια ή και περισσότερες στήλες, που για το συγκεκριμένο παράδειγμα, σημαίνει, ότι αν επιλέξουμε, τις b, c στήλες θα συγχωνεύσει, την b, ως προς ονόματα και την c, ως προς Yes/No... |
Σ' ευχαριστώ πολύ Σπύρο... όπως και όλη την κοινότητα!!! |
Καλησπέρα ...Σπύρο, σε κάποιο σημείο δηλώνεις "SelectedRng.Parent", χρησιμοποιείς δηλαδή την ιδιότητα Parent του αντικειμένου Range. μ' αυτόν τον τρόπο επικαλείσαι το "ανώτερο" σε ιεραρχία αντικείμενο, το Worksheet, έτσι δεν είναι; Τι κερδίζουμε, πέρα απ' την κομψότητα του κώδικα, μ' αυτόν τον τρόπο; διότι ο κώδικας τρέχει και χωρίς αυτό! |
Καλησπέρα Δεν θα ήθελα, να αναφερθώ σε θέματα, «κατασκευής» του κώδικα... Επειδή όμως αναφέρεις, ότι δουλεύει και χωρίς αυτό, δοκίμασε το εξής: Αυτή είναι η γραμμή. Κώδικας: SelectedRng.Parent.Range(c.Cells(i, 1), c.Cells(k - 1, 1)).MergeΚώδικας: SelectedRng.Range(c.Cells(i, 1), c.Cells(k - 1, 1)).MergeΔουλεύει, σωστά...; *Δεν υπάρχουν, κομψοί και άκομψοι κώδικες... |
...όχι....όχι...δεν αναφέρω ότι δουλεύει και χωρίς αυτό....προσπαθώ να καταλάβω....έκανα 1 μοναδική δοκιμή....και για κακή μου τύχη δούλεψε μια χαρά....και αποφάσισα να συζητήσω μαζί σου.......δεν είχα αντιληφθεί ότι δεν συζητιούνται θέματα κώδικα στο Forum..... όλα καλά.... Πάντως αναφερόμουν στην περίπτωση που γραφτεί έτσι: Range(c.Cells(i, 1), c.Cells(k - 1, 1)).Merge που δουλεύει... |
Αναφέρεις ... «Τι κερδίζουμε, πέρα απ' την κομψότητα του κώδικα, μ' αυτόν τον τρόπο; διότι ο κώδικας τρέχει και χωρίς αυτό!» Μην πανικοβάλλεσαι, όλα καλά ... Συζητάμε τα πάντα, αλλά, σε ... «επιτρεπτό βάθος» κατά την κρίση μου... κάποιος άλλος, μπορεί να απαντήσει...σε ότι θέλει... |
Όλα καλά...κανένα πρόβλημα...έχω ήδη αντιληφθεί πλεονεκτήματα του τρόπου που το έγραψες εσύ... |
Καλησπέρα στην παρέα Στο χώρο των προγραμματιστών, κομψός θεωρείται ο λιτός κώδικας. Και οι δύο γραμμές κώδικα: 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); Φιλικά/Γιώργος |
Θα συμφωνήσω, ως προς το πρώτο κομμάτι της παρατήρησης σου, Γιώργο... Αν και ο «λιτός» θα πρέπει να είναι και πλήρης... Τώρα το δεύτερο κομμάτι, όπως λες κι εσύ είναι υποκειμενικό... Το γιατί «γράφτηκε» έτσι, είναι άλλου παπά ευαγγέλιο... |
| Η ώρα είναι 01:08. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.