Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [Συναρτήσεις] Διάσπαση περιεχομένου κελιού σε άλλα.

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 27-06-11, 10:05
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα σε όλους!
Η λύση με χρήση τύπων είναι αυτή που πρότεινε ο Μανώλης.

Επειδή όμως πρόκειται για αναδιπλωμένο κείμενο που περιέχει τον χαρακτήρα 10 (= line feed, στην Excel= Char(10) , στην VB = vbLF ή Chr(10) ) ,
θα είχαμε πιο ακριβή αποτελέσματα αν στο κελί B1 τροποποιούσαμε τον τύπο ως εξής:

=TRIM(SUBSTITUTE(SUBSTITUTE(A1;CHAR(10);" ");" ";" "))

Χρησιμοποιώντας τον παραπάνω τύπο και μετατρέποντας το αποτέλεσμα του σε τιμή (Αντιγραφή > Ειδική επικόλληση>Τιμές),
μπορούμε με τη μέθοδο "Κείμενο σε στήλες" και με τη βοήθεια του οδηγού να διασπάσουμε το
περιεχόμενο του κελιού σε περισσότερες στήλες.

Αυτό θα μπορούσε να γίνει και με VBA πχ:

Κώδικας:
Sub Text2Columns_1()
    Range("B1:B100").TextToColumns _
            Destination:=Range("C1"), _
            DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=True, _
            Tab:=False, _
            Semicolon:=False, _
            Comma:=False, _
            Space:=True, _
            Other:=False
End Sub
Εγώ προσωπικά θα χρησιμοποιούσα τον παρακάτω κώδικα που παίρνει δεδομένα κατευθείαν από τη στήλη A χωρίς τη διαδικασία με τύπους.
Κώδικας:
Sub Text2Columns_2()
    Dim x As Variant, c As Range
    For Each c In Range("A1:A100")
        If Not IsEmpty(c) Then
            With c
            x = Replace(Replace(.Value, vbLf, " "), "  ", " ")
                x = Split(x)
                .Offset(, 1).Resize(, UBound(x) + 1).Value = x
            End With
        End If
    Next
End Sub
Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 27-06-11 στις 10:23.
Απάντηση με παράθεση
  #2  
Παλιά 27-06-11, 11:28
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

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

Τάσο μου, επειδή ξέρω ότι δεν αφήνεις τίποτα στην τύχη σίγουρα θα έχεις κάποιο λόγο που χρησιμοποιείς τη συνάρτηση «SUBSTITUTE» δύο φορές.
Προσπάθησα να τον βρω, αλλά κόλλησα.
Δεν μπόρεσα να εξηγήσω τη χρησιμότητα της εξωτερικής «SUBSTITUTE» αφού το μόνο που κάνει είναι η αντικατάσταση των (δύο;) διαστημάτων, στο αποτέλεσμα που επιστρέφει η εσωτερική «SUBSTITUTE», με ένα διάστημα.
Αυτό όμως το κάνει η συνάρτηση TRIM που αφαιρεί τα αρχικά και τελικά διαστήματα και όλα τα επιπλέον ενδιάμεσα.
Θα μπορούσε δηλαδή, κατά τη γνώμη μου, να χρησιμοποιηθεί ο τύπος =TRIM(SUBSTITUTE(A1;CHAR(10);" "))

Φιλικά/Γιώργος
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Excel07] Εμφάνιση περιεχόμενου ενεργού κελιού σε άλλο φύλλο ggatzos Excel - Ερωτήσεις / Απαντήσεις 7 16-01-14 10:38
[Συναρτήσεις] Διάσπαση κειμένου σε αλλα κελιά Ρούλα Excel - Ερωτήσεις / Απαντήσεις 6 07-04-13 18:52
[VBA] Μετατροπή περιεχομένου κελιού σε hyperlink για άλλο κελί ΓιάννηςΔ Excel - Ερωτήσεις / Απαντήσεις 3 10-10-12 16:34


Η ώρα είναι 16:04.