Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Συναρτήσεις] Σύνθετη μετατροπή από γραμμές σε στήλες (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/3075-sintheti-metatropi-apo-grammes-se-stiles.html)

Nasia 22-03-14 21:04

Σύνθετη μετατροπή από γραμμές σε στήλες
 
1 Συνημμένο(α)
Καλησπέρα σε όλους!!!

Ψάχνοντας στο φόρουμ δεν βρήκα κάτι παρόμοιο με το πρόβλημά που έχω, οπότε και σας το αναφέρω.
Έχω ένα αρχείο Excel με 2 στήλες. Στην 1η στήλη έχω τον κωδικό πελάτη και στην 2η στήλη κάποιους κωδικούς εξετάσεων (χωρίζονται με κενό) οι οποίοι κωδικοί αντιστοιχούν στον συγκεκριμένο πελάτη της κάθε γραμμής. Θα μπορούσα με κάποια συνάρτηση ή οτιδήποτε άλλο οι κωδικοί των εξετάσεων να εμφανίζονται ένας-ένας ανά γραμμή και δίπλα ο αντίστοιχος πελάτης;
Σας επισυνάπτω και ένα αρχείο-παράδειγμα πως είναι τώρα και πως θα ήθελα να το μετατρέψω ώστε να γίνω και πιο κατανοητή.

Ευχαριστώ πολύ!

Νάσια

Tasos 25-03-14 09:19

1 Συνημμένο(α)
Καλημέρα!

Νάσια, δες ένα παράδειγμα με χρήση VBA στο συνημμένο.

Καλή συνέχεια!

Τάσος

Nasia 25-03-14 23:49

Καλησπέρα Τάσο!

Το δούλεψα με το αρχείο μου, το οποίο είναι πολύ μεγάλο και δούλεψε μία χαρά!!!!
Σ' ευχαριστώ παααααάρα πολύ!!!!

Νάσια

xristos 27-03-14 19:30

Φίλοι του φόρουμ Καλησπέρα.
Φίλε Τάσο γεια σου
Επειδή θα ήθελα να το χρησιμοποιήσω και εγώ
αλλά με διαφορετικό τρόπο
μπορεί να γίνει να ξεχωρίζει τις τιμές με κόμμα;;
δηλ εγώ θέλω στην 1η στήλη να υπάρχει ένας αριθμός π.χ 120/12-11-2014
και στην 2η στήλη ονόματα π.χ Παπαγάλος Χρήστος, Αετός Παναγιώτης
και να γίνεται
120/12-11-2014 Παπαγάλος Χρήστος
120/12-11-2014 Αετός Παναγιώτης

Tasos 27-03-14 19:50

Καλησπέρα!

Χρήστο, αν κατάλαβα καλά,αυτό που ζητάς είναι η συνένωση 2 κελιών σε ένα δηλαδή : =A2 & " " & B2

Με τα κόματα δεν το πολυκατάλαβα.


Τάσος

Spirosgr 27-03-14 23:39

Καλημέρα
Συγνώμη για την παρέμβαση αλλά μου κάνει εντύπωση Χρίστο
(και πολλοί άλλοι φίλοι που τα χρησιμοποιούν) πως ένα τέτοιο κελί
"120/12-11-2014 Παπαγάλος Χρήστος"
θα μπορούσε να χρησιμοποιηθεί για να πάρω πληροφορίες πχ όνομα, ημερομηνία κλπ
με φίλτρο ή τύπο
Γιατί πρέπει να κάνω την ζωή μου δύσκολη...
Υπάρχουν χιλιάδες στήλες και γραμμές διαθέσιμες
Γιατί τα στριμωχτούν όλα αυτά σε ένα κελί με κόμματα, κάθετες κλπ ;
Απλά αναρωτιέμαι...

xristos 28-03-14 10:45

Φίλοι του φόρουμ Καλημέρα
Ίσως δεν σας έδωσα να καταλάβετε σωστά τι θέλω και συγνώμη γι' αυτό.
Αυτό που θέλω είναι στην στήλη Α2 να γράφω ένα αριθμός π.χ 120/12-11-2014
και στην στήλη Β2 να γράφω ονόματα π.χ Παπαγάλος Χρήστος, Αετός Παναγιώτης κλπ
και μετά όπως είναι το πρόγραμμα πατώντας το κουμπί Διάσπαση-Αντιμετάθεση να γίνεται
Στις στήλες D......120/12-11-2014
120/12-11-2014
και στις στήλες E..... Παπαγάλος Χρήστος
Αετός Παναγιώτης
δηλ. όπως είναι το πρόγραμμα απλά η διάσπαση-αντιμετάθεση να γίνεται όπου υπάρχει (,) στην στήλη Β2
και αυτό το θέλω για αλφαβητικό ευρετήριο δηλ. σε κάθε όνομα να υπάρχει ο διπλανός αριθμός.
Πιστεύω τώρα να έγινα κατανοητός.
Σας ευχαριστώ για τον χρόνο σας.

Tasos 28-03-14 11:26

Καλημέρα!

Φίλε Χρήστο,
όταν θέλεις να διαχειρίζεσαι δεδομένα χωρίς να καταφεύγεις σε ακραίες λύσεις, θα πρέπει να φροντίζεις να είναι "καθαρά" ευθύς εξαρχής.
Θα έπρεπε όταν συνένωνες τους αριθμούς αυτούς να λάβεις υπόψη σου και την παιρετέρω επεξεργασία τους;

Λύση: Υπό την προϋπόθεση ότι τα ονόματα είναι χωρισμένα με κόμμα (Παπαγάλος Χρήστος, Αετός Παναγιώτης)

Άλλαξε στον κώδικα τη γραμμή: ArrExams = Split(WorksheetFunction.Trim(c.Offset(, 1).Value))
με τη γραμμή: ArrExams = Split(WorksheetFunction.Trim(c.Offset(, 1).Value), ",")

Συμπληρωματικά:

Όλος ο κώδικας με δυνατότητα αφαίρεσης κενών στην αρχή και στο τέλος του ονόματος:

Κώδικας:

Sub TranansposeRecordDetails()
    Dim rng As Range, c As Range, ArrExams As Variant, i As Integer, LastRow As Long
    Set rng = Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp))
    For Each c In rng
        If Trim(c.Offset(, 1).Value) = vbNullString Then
            c.Offset(LastRow, 3).Value = "'" & c.Value
        Else
            ArrExams = Split(WorksheetFunction.Trim(c.Offset(, 1).Value), ",")
            For i = 0 To UBound(ArrExams)
                c.Offset(LastRow + i, 3).Value = "'" & Trim(c.Value)
                c.Offset(LastRow + i, 4).Value = "'" & Trim(ArrExams(i))
            Next
            LastRow = LastRow + i - 1
        End If
    Next
End Sub



Φιλικά

Τάσος

xristos 29-03-14 21:51

Φίλοι του φόρουμ Καλησπέρα σας.
Φίλε Τάσο για μία ακόμα φορά σε ευχαριστώ
είναι αυτό που ήθελα.
Όπως προανέφερα το θέλω έτσι γιατί έτσι
είναι τα υπάρχοντα αλφαβητικά βιβλία
Σε ευχαριστώ για πολλοστή φορά
Νάσε καλά να μας βοηθάς και εσύ και οι άλλοι φίλοι.


Η ώρα είναι 12:58.

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


Search Engine Optimization by vBSEO 3.3.2