Εμφάνιση ενός μόνο μηνύματος
  #8  
Παλιά 28-03-14, 12:26
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλημέρα!

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

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

Άλλαξε στον κώδικα τη γραμμή: 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


Φιλικά

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

Τελευταία επεξεργασία από το χρήστη Tasos : 29-03-14 στις 10:11.
Απάντηση με παράθεση