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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 07-04-20, 18:46
Όνομα: ΣΤΑΥΡΟΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 03-04-2020
Μηνύματα: 4
Προεπιλογή πολλαπλή αναζήτηση σε πινάκα???

καλησπερίζω την ομάδα που τυχαία ανακάλυψα και ήδη με βοήθησε να βρω μια σημαντική λύση για ενα απ τα προβλήματα μου που αφορούν το excel..

ελπιζω να βρεθεί λυση και σε αυτο το πρόβλημα..

λυπών!

εχω ενα excel με το οποιο στο πρώτο φυλλο ανεβάζω ενα αρχείο προϊόντων xml. στο δευτερο φυλλο τραβαω οσα δεδομενα χρειαζομαι για το καθε προιον που θελω μεσω αναζήτησης με τον κωδικο του προιοντος και με τη συνάρτηση vlookup και ύστερα το μετατρέπω σε csv για να ανεβεί στο σαιτ..
το πρόβλημα μου ειναι το εξης:
το αρχειο xml οταν ανεβαίνει σε excel εχει μια μορφη γραμμές και στήλες (κλασικα), όμως, το καθε προιον το κανει 3-4-5 γραμμές ανάλογα με τα δεδομένα του.. δηλαδή.. το ποιοιν με κωδικο 12345 πχ στην πρωτη γραμμή εκτός των αλλων δεδομένων εμφανιζει και το λινκ τις πρώτης φωτο.. στην δεύτερη γραμμη το λινκ τις δεύτερης φωτο, στην τρίτη γραμμή το λινκ τις 3ης φωτο και παει λέγοντας.. το ιδιο ισχύει και με τα δεδομένα των φίλτρων του καθε προϊόντος..
ετσι, μπορει το ενα προϊών να ειναι και 5 και 6 γραμμές.. ο κωδικός εμφανίζετε σε ολες τις γραμμές.

εγω τωρα, αν κανω αναζήτηση με τον κωδικό με την vlookup μου φέρνει μονο τα δεδομένα τις πρωτης γραμμής που βρισκει.. τι θα κανω για να μπορέσω να παρω και τα υπόλοιπα δεδομένα και απο τις αλλες γραμμές??????????

ειναι πολυ σημαντικό να το φτιάξω διοτι μου γλυτώνει άπειρες ωρες εργασίας που μπορουν να γινουν σε 1 λεπτο μετο πάτημα ενος κουμπιού!!

υγ. εχω φαει απειρες ωρες ψάχνοντας για το excel και εχω καταφέρει να κανω πολλα πράγματα που με βοηθάνε στη δουλειά μου αλλα αυτο δεν το βρίσκω

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

Καλησπέρα Σταύρο και καλωσόρισες στο φόρουμ!

Δώσε μας ένα μικρό παραδειγματικό αρχείο για να δούμε ακριβώς το ζητούμενο και να σε βοηθήσουμε.

Με εκτίμηση

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #3  
Παλιά 07-04-20, 21:40
Όνομα: ΣΤΑΥΡΟΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 03-04-2020
Μηνύματα: 4
Προεπιλογή

Καλησπερα Τασο.

ανεβαζω το αρχειο που χρησιμοποιώ με 2-3 κωδικους για να το δειτε..

θα δειτε οτι ο καθε κωδικος ειναι σε περισσοτερες απο μια γραμμες και το λινκ τις καθε 2ης-3ης φώτο (πεδιο "image10") ειναι σε ξεχωριστη γραμμη, οπως και τα φιλτρα (στηλη V μεχρι AD).

εγω θελω αυτα τα δεδομενα (λινκ φωτο'ς και φιλτρα) να τα παω στο διπλα φυλλο στο αντιστοιχο πεδιο
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm xml se excel test.xlsm (38,3 KB, 16 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη Tasos : 10-04-20 στις 10:09.
Απάντηση με παράθεση
  #4  
Παλιά 08-04-20, 10:22
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα σε όλους!

Σταύρο απ΄ ότι κατάλαβα θέλεις έναν πίνακα που να περιέχει τα προϊόντα μοναδικά αλλά με τις όλες τις αντιστοιχισμένες εικόνες τους.

Στο παράδειγμα που επισυνάπτω και στο φύλλο "Results" υπάρχει μια λίστα που με τύπους εμφανίζει τα μοναδικά ονόματα προϊόντων.

Οι στήλες ΑΝ και ΑΟ χρησιμοποιούν την παρακάτω συνάρτηση:
Κώδικας:
Function GetFeautureFromProduct(ProductStartRow As Long, _
                                ProductEntRow As Long, _
                                FeautureColumn As Range, _
                                Optional StringSeparator As String = vbLf) As String
    Dim i As Integer
    Dim tmp As String

    For i = ProductStartRow To ProductEntRow
        If FeautureColumn(i) <> vbNullString Then
            tmp = tmp & FeautureColumn(i) & StringSeparator
        End If
    Next
    If InStr(1, tmp, StringSeparator) Then
        GetFeautureFromProduct = Mid(tmp, 1, Len(tmp) - 1)
    End If

End Function
που επιστρέφει τις τιμές των κελιών στο φύλλο xml που αντιστοιχούν στο προιόν.

Η σύνταξη της συνάρτησης είναι:

Κώδικας:
=GetFeautureFromProduct(αρχική_γραμμή;τελική_γραμμή;
στήλη_προς_αναζήτηση;προαιρετικός_διαχωριστικός_χαρακτήρας_πχ Char(10)_ή_";")

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



Φιλικά
Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm xml se excel test.xlsm (49,5 KB, 29 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 08-04-20 στις 17:35.
Απάντηση με παράθεση
  #5  
Παλιά 08-04-20, 17:36
Όνομα: ΣΤΑΥΡΟΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 03-04-2020
Μηνύματα: 4
Προεπιλογή

Σ ευχαριστω για τον χρόνο σου, το ειδα αυτο που εφτιαξες αλλα δεν μπορω να κανω δουλεια ετσι δύστυχος.

αυτο που θελω ειναι το εξεις:
στο φυλλο "excel to csv" και στο κελι aq2 πχ, θελω μια συνάρτηση η οποια να βλεπει τον κωδικο στο κελι be2 και να αναζητα απ το φυλλο "xml" τον αντίστοιχο κωδικο και να μου φερνει πισω τα λινκ των φωτο που υπαρχουν για αυτον τον κωδικο απο τις στηλες q και an, διαχωρισμένα με κόμμα "," ετσι: ww.test.gr/image1,ww.test.gr/image2,ww.test.gr/image3

λογικα τον ιδιο τυπο θα χρησιμοποιησω για να κανω το ιδιο και με τα φιλτρα που θελω να φερω στο κελι af του φυλλου "excel to csv" με την διαφορά οτι τα φιλτρα ειναι στις στηλες ab και ad παλι στο φυλλο "xml"...
τα φιλτρα στο κελι af πρεπει να ειναι στην ακολουθη μορφη: φιλτρο1:τιμη φιλτρου1,φιλτρο2:τιμη φιλτρου2,φιλτρο3:τιμη φιλτρου3

μαλλον δεν το εξηγησα καλα στην αρχη, ελπιζω τωρα να εγινε ποιο κατανοητό και ελπίζω να μην κουρασα...πολυ.


επισεις στο φυλλο xml του αρχειου δεν μπορω να κανω καμια αλλαγη γιατι ανανεωνετε καθημερινα και ειναι καπου 100χλ. γραμμες!

Τελευταία επεξεργασία από το χρήστη Tasos : 10-04-20 στις 10:08.
Απάντηση με παράθεση
  #6  
Παλιά 08-04-20, 20:23
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Γεια σου Σταύρο!

Eπικόλλησε την παρακάτω συνάρτηση στον VBE:

Κώδικας:
Function GetFeautureFromProduct(ProductCode As String, _
                                ProductColumn As Range, _
                                FeautureColumn As Range, _
                                StringSeparator As String) _
                                As String
    Dim iRow As Integer
    Dim FirstCellValue As String
    Dim tmp As String
    Dim foundCell As Range


    Set foundCell = ProductColumn.Find(ProductCode, LookIn:=xlValues, _
                                       LookAt:=xlWhole, SearchOrder:=xlByRows, _
                                       SearchDirection:=xlNext, _
                                       MatchCase:=False, SearchFormat:=False)

    If Not foundCell Is Nothing Then
        FirstCellValue = foundCell.Value
        Do
            iRow = foundCell.Row
            If FeautureColumn(iRow) <> vbNullString Then
                tmp = tmp & FeautureColumn(iRow) & StringSeparator
            End If
            Set foundCell = foundCell.Offset(1)
        Loop While foundCell.Value = FirstCellValue
    End If

    If Len(tmp) > 0 Then
        GetFeautureFromProduct = Mid(tmp, 1, Len(tmp) - Len(StringSeparator))
    End If

End Function
Για να λειτουργήσει σωστά η συνάρτηση θα πρέπει η στήλη που περιέχει τους κωδικούς προϊόντων να είναι ταξινομημένη ώστε οι όμοιοι κωδικοί να διατηρούνται μαζί ο ένας κάτω από τον άλλο.

Εάν δεν υπάρχει δυνατότητα ταξινόμησης τότε χρησιμοποίησε την παρακάτω συνάρτηση:

Κώδικας:
Function GetFeautureFromProduct(ProductCode As String, _
                                 ProductColumn As Range, _
                                 FeautureColumn As Range, _
                                 StringSeparator As String) _
                                 As String
    Dim iRow As Integer
    Dim firstAddress As String
    Dim tmp As String
    Dim foundCell As Range


    Set foundCell = ProductColumn.Find(ProductCode, LookIn:=xlValues, _
                                            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                            MatchCase:=False, SearchFormat:=False)

    If Not foundCell Is Nothing Then
        firstAddress = foundCell.Address
        Do
            iRow = foundCell.Row
            If FeautureColumn(iRow) <> vbNullString Then
                tmp = tmp & FeautureColumn(iRow) & StringSeparator
            End If

                Set foundCell = ProductColumn.Find(ProductCode, After:=foundCell, LookIn:=xlValues, _
                                            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                                            MatchCase:=False, SearchFormat:=False)
            If foundCell Is Nothing Then GoTo ContinueHere
        Loop While foundCell.Address <> firstAddress
    End If

ContinueHere:
    If Len(tmp) > 0 Then
        GetFeautureFromProduct = Mid(tmp, 1, Len(tmp) - Len(StringSeparator))
    End If

End Function
Κατόπιν σε ένα κελί - πχ. BF2- στο φύλλο "excel to csv" πέρασε τον τύπο:

=GetFeautureFromProduct($BE2;xml!$B:$B;xml!$AM:$AM ;",")

Έτσι, σύμφωνα πάντα με τη δομή του παραδείγματος σου, θα έχεις τις εικόνες που αντιστοιχούν σε κάθε κωδικό ενωμένες με διαχωριστικό το κόμμα (,).

Με τον ίδιο τρόπο μπορείς να ενώσεις και άλλες στήλες.του φύλλου "xml".

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

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

Τελευταία επεξεργασία από το χρήστη Tasos : 08-04-20 στις 21:29.
Απάντηση με παράθεση
  #7  
Παλιά 09-04-20, 18:54
Όνομα: ΣΤΑΥΡΟΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 03-04-2020
Μηνύματα: 4
Προεπιλογή

Φιλε τασο χιλια ευχαριστω, με αυτον τον κωδικα και με κατι μικρες τροποποιησεις απο το γαμπρο μου που σκαμπαζει λιγο απο κωδικα εκανα τη δουλεια μου οπως ακριβως ηθελα!

χιλια ευχαριστω και παλι!!

Τελευταία επεξεργασία από το χρήστη Tasos : 10-04-20 στις 10:08.
Απάντηση με παράθεση
  #8  
Παλιά 09-04-20, 21:47
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Να είσαι καλά Σταύρο!

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

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


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Γενικά] Πολλαπλη αναζητηση και αντιγραφη κελιων starcctv Excel - Ερωτήσεις / Απαντήσεις 9 24-06-19 16:08
[ Πίνακες ] Πολλαπλή αντιγραφή μιάς εγγραφής στον ίδιο πίνακα dimitrisp Access - Ερωτήσεις / Απαντήσεις 14 05-10-16 22:38
[Συναρτήσεις] Αναζήτηση σε πίνακα Γιώργος Κ. Excel - Ερωτήσεις / Απαντήσεις 8 09-11-15 23:40
[VBA] VBA - Πολλαπλή Αντιγραφή ΦΥΛΛΟΥ Excel ΕΛΕΝΙΤΣΑ Excel - Ερωτήσεις / Απαντήσεις 8 20-03-15 14:15
Αναζήτηση σε πίνακα με ερώτημα sakis Access - Ερωτήσεις / Απαντήσεις 2 09-10-14 12:20


Η ώρα είναι 20:49.