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/2505-enosi-stoixeion-apo-epikolysi-sindesis.html)

xristos 30-04-13 18:40

Ένωση στοιχείων από επικόλυση σύνδεσης
 
1 Συνημμένο(α)
Φίλοι μου γειά σας.
Όπως θα δείτε και στο συνημμένο έχω το εξής πρόβλημα
Μετά από επικόλληση σύνδεσης (γι' αυτό υπάρχουν τα πολλά κόμματα)
έχω τα αποτελέσματα που φαίνονται στο συνημμένο.
Αυτό που θέλω είναι να προστεθούν τα αριθμητικά με την ίδια ημερομηνία (ίδιο χρώμα)
δηλ. από 2/15-2-13, 3/15-2-13, 1/15-2-13 να γίνει 6/15-2-13
Πιστεύω αν έγινα κατανοητός
Σας ευχαριστώ για τον χρόνο σας και ιδιαίτερα τέτοιες μέρες
Καλή Πρωτομαγιά....!!!!!!!!!!!!!!!!!!!!!

Tasos 01-05-13 14:32

1 Συνημμένο(α)
Καλημέρα σε όλους και καλό μήνα!

Χρήστο, δες μια λύση με χρήση VBA στο επισυναπτόμενο αρχείο.

Η συνάρτηση που χρησιμοποιείται στο κελί/κελιά που θα εμφανίζουν το αποτέλεσμα είναι η GroupValues(). Η χρήση της εξηγείται στο συνημμένο.

Κώδικας:

Option Explicit

Function GroupValues(ByVal strNumbers As String, _
                    Optional ByVal JoinValues As Boolean) As Variant
    Dim strReplaced As Variant, i As Integer, x As Integer
    Dim iPos As Integer, ItemCount As Integer, strTemp As String
    strReplaced = Split( _
                  Replace( _
                  Application.Trim( _
                  Replace(Replace( _
                          strNumbers, ";", vbNullString), ",", " ")), "/", ";"))
    If UBound(strReplaced) > -1 Then
        ReDim ValuesArray(0 To UBound(strReplaced), 0 To 1)
        For i = 0 To UBound(strReplaced)
            iPos = InStr(1, strReplaced(i), ";")
            If iPos Then
                ValuesArray(i, 0) = Left(strReplaced(i), iPos - 1)
                ValuesArray(i, 1) = Mid(strReplaced(i), iPos + 1)
            End If
        Next
        ItemCount = UBound(strReplaced)
        ReDim NewArray(0 To 1000) As String
        For i = 0 To ItemCount
            strTemp = GroupxValues(ValuesArray, ValuesArray(i, 1), ItemCount)
            If strTemp <> vbNullString Then
                NewArray(x) = strTemp
                x = x + 1
            End If
        Next
        If NewArray(0) <> vbNullString Then
            If JoinValues Then
                ReDim Preserve NewArray(x - 1)
                GroupValues = Join(NewArray, ",")
            Else
                GroupValues = NewArray
            End If
        Else
            GroupValues = vbNullString
        End If
    Else
        GroupValues = vbNullString
    End If
End Function

Function GroupxValues(ByRef ValuesArray As Variant, _
                      ByVal strItem As String, _
                      ByVal ItemCount As Integer) As String

    Dim i As Integer, SumValue As Integer
    If strItem = vbNullString Then Exit Function
    For i = 0 To ItemCount
        If ValuesArray(i, 1) = strItem Then
            SumValue = SumValue + ValuesArray(i, 0)
            ValuesArray(i, 1) = vbNullString
        End If
    Next
    If SumValue Then GroupxValues = SumValue & "/" & strItem
End Function

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

Με εκτίμηση

Τάσος

Spirosgr 02-05-13 02:24

Καλημέρα
Αγαπητέ Χρήστο
Παρά τις εξαιρετικές συναρτήσεις μέσω κώδικα του Τάσου εγώ θα σου πρότεινα χωρίς να γνωρίζω από που προέρχονται τα δεδομένα σου πριν την επικόλληση να πας στην "πηγή, αφετηρία"των δεδομένων και να τα φτιάξεις με κάποιο άλλο τρόπο απλά σε 2 στήλες με ημερομηνία και τιμή και με μία SUMIF(S) με κριτήριο ημερομηνία ή εύρος ημερομηνιών να πάρεις τα αποτελέσματα που θέλεις
Δεν είναι ότι καλύτερο σε ένα κελί με τιμές ημερομηνίες και πολλά!!! κόμματα να ψάχνεις να βρεις σύνολα
Και πάλι λέω δεν ξέρω την πηγή των δεδομένων σου και το στήσιμο τους (για να μην παρεξηγηθώ)
Καλή συνέχεια!

xristos 13-05-13 16:38

Φίλοι του φόρουμ ΧΡΟΝΙΑ ΠΟΛΛΑ & ΧΡΙΣΤΟΣ ΑΝΕΣΤΗ
Φίλοι μου Τάσσο & Σπύρο σας ευχαριστώ για την βοήθειά σας.
Άργησα να σας απαντήσω γιατί ήμουν στο εξωτερικό (μινι διακοπές)
και γύρισα χθες και σήμερα άνοιξα το email μου.
Σπύρο δεν μπορώ να κάνω αυτό που μου λες γιατί έρχονται από πολλές πηγές.
Τάσσο είναι ακριβώς αυτό που ζήταγα και σε υπερευχαριστώ.
Θέλω όμως μια εξυπηρέτηση.
Εμένα μου κάνει η μέθοδος Νο1
Θα ήθελα αν γίνεται εκεί που χωρίζονται τα νούμερα με (,) να έχει ένα διάστημα
για να μην είναι κολλητά.
Σας υπερευχαριστώ για την βοήθειά σας.:byebye:

xristos 15-05-13 19:16

Φίλοι μου γειά σας.
Όσο αφορά το πρόβλημά μου, βρήκα μια ¨λύση¨
έκανα ειδική επικόλληση και επέλεξα να επικολληθούν οι τιμές
έτσι επικολλήθηκαν οι τιμές και επάνω σε αυτές μπορώ να
βάλω διάστημα μεταξύ του (,) και της επόμενης τιμής.
Αν κάποιος φίλος μπορεί να το κάνει αυτόματα μέσα στην VBA
θα είναι τέλειο.
Σας ευχαριστώ για τον χρόνο σας.


Η ώρα είναι 18:59.

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


Search Engine Optimization by vBSEO 3.3.2