blanka Δημοσ. 24 Ιουνίου 2022 Δημοσ. 24 Ιουνίου 2022 (επεξεργασμένο) Καλησπέρα. Θέλω να φτιάξω 2 στήλες με τιμές, οι οποίες θα τροφοδοτούνται απο πίνακες που εχουν διάφορες τιμές. Ο κανόνας με τον οποίο θέλω να δημιουργηθούν οι στήλες, φαίνεται στο screenshot που παραθέτω με βελάκια Σκέφτομαι την INDEX λογικά απλά πρέπει κάπως να αγνοεί τα κενά, και να κάνει την σωστή αντιστοίχιση από τους 2 πίνακες. Η αντιστοίχιση θα γίνεται ανά σειρά σε κάθε πίνακα, αλλά το πρόβλημα είναι τί γίνεται όταν στην ίδια σειρά θα υπάρχουν 2 ή 3 τιμές που πρέπει να αντιστοιχισθούν και να τοποθετηθούν στις 2 στήλες που θέλω. PLEASE HELP Επεξ/σία 24 Ιουνίου 2022 από blanka 1
Billator Δημοσ. 25 Ιουνίου 2022 Δημοσ. 25 Ιουνίου 2022 (επεξεργασμένο) Υπάρχουν δεκάδες τρόποι όπου θα μπορούσες να το διαχειριστείς. Αν τα κενά είναι πάντα ίδια και στους πίνακες στις αντίστοιχες θέλεις, μιας και το βασικό σου πρόβλημα είναι οι αρχικοί σου πίνακες, εγώ θα δούλευα με FILTER / LEN function (σε google sheet format που λειτουργώ η μορφή είναι αυτή γιατί excel έχω χρόνια να πιάσω, κάνε την αναγωγή): =IFERROR(filter(Sheet1!$D$2:$D,len(Sheet1!$D$2:$D)),"") και ακριβώς από δίπλα: =IFERROR(filter(Sheet2!$J$2:$J,len(Sheet2!$J$2:$J)),"") Και τα συνδυάζεις με ARRAYFORMULA σε vertical possition όπου θα βάλεις και στις δύο περιπτώσεις όλες τις στήλες των πινάκων (στο πρώτο arrayformula τις στήλες του πρώτου πίνακα. και στο δεύτερο arrayformula τις στήλες του δεύτερου πίνακα) Οπότε στο σημείο που θες να συγκεντρώσεις τα δεδομένα στο ένα κελί γράφεις: =ARRAYFORMULA({IFERROR(filter(Sheet1!$A$2:$A,len(Sheet1!$A$2:$A)),"");IFERROR(filter(Sheet1!$B$2:$B,len(Sheet1!$B$2:$B)),"");IFERROR(filter(Sheet1!$C$2:$C,len(Sheet1!$C$2:$C)),"");IFERROR(filter(Sheet1!$D$2:$D,len(Sheet1!$D$2:$D)),"") ;IFERROR(filter(Sheet1!$E$2:$E,len(Sheet1!$E$2:$E)),"") }) Και στο ακριβώς δίπλα το ίδιο απλά με τις στήλες του άλλου πίνακα. Στα παραπάνω θεωρώ ότι οι 2 κεντρικοί πίνακες είναι σε διαφορετικά Sheets και για αυτό στο γράφω έτσι. Σίγουρα υπάρχουν άπειρες ακόμα λύσεις για αυτό που θες, το παραπάνω μου φαίνεται το πιο εύκολο για δυναμικά αποτελέσματα και εφόσον η αντιστοίχιση των δεδομένων στους πίνακες είναι ακριβώς στις ίδιες θέσεις. Επεξ/σία 25 Ιουνίου 2022 από Billator
blanka Δημοσ. 27 Ιουνίου 2022 Μέλος Δημοσ. 27 Ιουνίου 2022 (επεξεργασμένο) Καλημέρα, Όχι οι πίνακες δεν εχουν σταθερά κενά κελιά. Τα κελιά είναι random το που θα έχουν νουμερα. Οι 2 πίνακες δεν είναι σε διαφορετικά Sheets είναι στο ίδιο. Απλά η λίστα που θα φτιαχτεί είναι σε διαφορετικό Sheet. H αντιστοιχηση είναι όντως ΠΑΝΤΑ ίδια. Επεξ/σία 27 Ιουνίου 2022 από blanka
Billator Δημοσ. 27 Ιουνίου 2022 Δημοσ. 27 Ιουνίου 2022 (επεξεργασμένο) 10 ώρες πριν, blanka είπε H αντιστοιχηση είναι όντως ΠΑΝΤΑ ίδια. Αυτή είναι η μόνο προϋπόθεση η θέση της αντιστοίχισης να είναι ακριβώς η ίδια και στους 2 πίνακες. πχ A[5,1]=B[5,1] κλπ αλλιώς το παραπάνω που σου έγραψα δεν λειτουργεί. Αυτό που σου έγραψα κάνει ακριβώς αυτή την αντιστοίχιση ανάμεσα στους 2 αυτούς πίνακες. Οτιδήποτε και αν περιέχουν οι πίνακες δεν χρειάζεται να είναι σταθερό, κάθε φορά που θα αλλάζει αυτόματα όλα θα αλλάζουν ακόμα και όλα κενά να είναι απλά δεν θα σου βγάλει καμία αντιστοίχιση. Δοκίμασε το και θα δεις. Αν το κάνεις copy paste σε google sheet μπορεις να το δοκιμάσεις εκεί και μετά να κάνεις την αναγωγή σε excel. Γίνεται εύκολα και με INDEX / MATCH αλλά δεν νομίζω να γίνεται με 1 in cell fuction όπως το παραπάνω που σου γράφω, το αρνητικό είναι ότι αν οι πίνακες σου έχουν δυναμικό μέγεθος με INDEX / MATCH θα πρέπει να κάνεις βασική πρόβλεψη μέγιστου μεγέθους πινάκων για να μην βγάλουν ποτέ error. 10 ώρες πριν, blanka είπε Οι 2 πίνακες δεν είναι σε διαφορετικά Sheets είναι στο ίδιο. Απλά η λίστα που θα φτιαχτεί είναι σε διαφορετικό Sheet. Οπότε σε αυτό απλά θα αλλάξεις τις θέσεις των στηλών, και τα 2 θα γράφουν Sheet1 και θα το προσθέσεις σε διαφορετικό Sheet πχ Sheet2. Οπότε πχ στο Sheet2 στο πρώτο κελί θα γράψεις αυτό: =ARRAYFORMULA({IFERROR(filter(Sheet1!$A$2:$A,len(Sheet1!$A$2:$A)),"");IFERROR(filter(Sheet1!$B$2:$B,len(Sheet1!$B$2:$B)),"");IFERROR(filter(Sheet1!$C$2:$C,len(Sheet1!$C$2:$C)),"");IFERROR(filter(Sheet1!$D$2:$D,len(Sheet1!$D$2:$D)),"") ;IFERROR(filter(Sheet1!$E$2:$E,len(Sheet1!$E$2:$E)),"") }) και στο διπλανό κελί πχ αυτό: =ARRAYFORMULA({IFERROR(filter(Sheet1!$G$2:$G,len(Sheet1!$G$2:$G)),"");IFERROR(filter(Sheet1!$H$2:$H,len(Sheet1!$H$2:$H)),"");IFERROR(filter(Sheet1!$I$2:$I,len(Sheet1!$I$2:$I)),"");IFERROR(filter(Sheet1!$J$2:$J,len(Sheet1!$J$2:$J)),"") ;IFERROR(filter(Sheet1!$K$2:$K,len(Sheet1!$K$2:$K)),"") }) Και με την φόρμουλα αυτή στα 2 μόνο πρώτα κελιά κάνεις δυναμικά όλη την αντιστοίχιση που ζήτας στο αρχικό σου μήνυμα. Επεξ/σία 27 Ιουνίου 2022 από Billator 1
blanka Δημοσ. 29 Ιουνίου 2022 Μέλος Δημοσ. 29 Ιουνίου 2022 Στις 27/6/2022 στις 6:37 ΜΜ, Billator είπε Αυτή είναι η μόνο προϋπόθεση η θέση της αντιστοίχισης να είναι ακριβώς η ίδια και στους 2 πίνακες. πχ A[5,1]=B[5,1] κλπ αλλιώς το παραπάνω που σου έγραψα δεν λειτουργεί. Αυτό που σου έγραψα κάνει ακριβώς αυτή την αντιστοίχιση ανάμεσα στους 2 αυτούς πίνακες. Οτιδήποτε και αν περιέχουν οι πίνακες δεν χρειάζεται να είναι σταθερό, κάθε φορά που θα αλλάζει αυτόματα όλα θα αλλάζουν ακόμα και όλα κενά να είναι απλά δεν θα σου βγάλει καμία αντιστοίχιση. Δοκίμασε το και θα δεις. Αν το κάνεις copy paste σε google sheet μπορεις να το δοκιμάσεις εκεί και μετά να κάνεις την αναγωγή σε excel. Γίνεται εύκολα και με INDEX / MATCH αλλά δεν νομίζω να γίνεται με 1 in cell fuction όπως το παραπάνω που σου γράφω, το αρνητικό είναι ότι αν οι πίνακες σου έχουν δυναμικό μέγεθος με INDEX / MATCH θα πρέπει να κάνεις βασική πρόβλεψη μέγιστου μεγέθους πινάκων για να μην βγάλουν ποτέ error. Οπότε σε αυτό απλά θα αλλάξεις τις θέσεις των στηλών, και τα 2 θα γράφουν Sheet1 και θα το προσθέσεις σε διαφορετικό Sheet πχ Sheet2. Οπότε πχ στο Sheet2 στο πρώτο κελί θα γράψεις αυτό: =ARRAYFORMULA({IFERROR(filter(Sheet1!$A$2:$A,len(Sheet1!$A$2:$A)),"");IFERROR(filter(Sheet1!$B$2:$B,len(Sheet1!$B$2:$B)),"");IFERROR(filter(Sheet1!$C$2:$C,len(Sheet1!$C$2:$C)),"");IFERROR(filter(Sheet1!$D$2:$D,len(Sheet1!$D$2:$D)),"") ;IFERROR(filter(Sheet1!$E$2:$E,len(Sheet1!$E$2:$E)),"") }) και στο διπλανό κελί πχ αυτό: =ARRAYFORMULA({IFERROR(filter(Sheet1!$G$2:$G,len(Sheet1!$G$2:$G)),"");IFERROR(filter(Sheet1!$H$2:$H,len(Sheet1!$H$2:$H)),"");IFERROR(filter(Sheet1!$I$2:$I,len(Sheet1!$I$2:$I)),"");IFERROR(filter(Sheet1!$J$2:$J,len(Sheet1!$J$2:$J)),"") ;IFERROR(filter(Sheet1!$K$2:$K,len(Sheet1!$K$2:$K)),"") }) Και με την φόρμουλα αυτή στα 2 μόνο πρώτα κελιά κάνεις δυναμικά όλη την αντιστοίχιση που ζήτας στο αρχικό σου μήνυμα. Εισαι θεος του κώδικα το ξέρεις ; Φαντάζομαι θα σου το έχουν πει κι άλλοι! Σε ευχαριστώ 1
Billator Δημοσ. 30 Ιουνίου 2022 Δημοσ. 30 Ιουνίου 2022 Στις 29/6/2022 στις 1:16 ΜΜ, blanka είπε Εισαι θεος του κώδικα το ξέρεις ; Φαντάζομαι θα σου το έχουν πει κι άλλοι! Σε ευχαριστώ Τίποτα Αν χρειαστείς κάτι άλλο με EXCEL / Google Sheet formulas κάνε με tag. 1
blanka Δημοσ. 1 Ιουλίου 2022 Μέλος Δημοσ. 1 Ιουλίου 2022 Να ξέρεις ειναι σημαντικό και σπάνιο κάποιος να ξοδέψει τον χρόνο του οχι απλά για να απαντήσει σε κάτι που ξέρει σε κάποιον , αλλά να ΣΚΕΦΤΕΙ κώδικα για έναν ξένο. Και πάλι ευχαριστώ.
DrLo Δημοσ. 15 Ιουλίου 2022 Δημοσ. 15 Ιουλίου 2022 (επεξεργασμένο) Στις 24/6/2022 στις 12:09 ΜΜ, blanka είπε Καλησπέρα. Θέλω να φτιάξω 2 στήλες με τιμές, οι οποίες θα τροφοδοτούνται απο πίνακες που εχουν διάφορες τιμές. Ο κανόνας με τον οποίο θέλω να δημιουργηθούν οι στήλες, φαίνεται στο screenshot που παραθέτω με βελάκια Σκέφτομαι την INDEX λογικά απλά πρέπει κάπως να αγνοεί τα κενά, και να κάνει την σωστή αντιστοίχιση από τους 2 πίνακες. Η αντιστοίχιση θα γίνεται ανά σειρά σε κάθε πίνακα, αλλά το πρόβλημα είναι τί γίνεται όταν στην ίδια σειρά θα υπάρχουν 2 ή 3 τιμές που πρέπει να αντιστοιχισθούν και να τοποθετηθούν στις 2 στήλες που θέλω. PLEASE HELP Οι τιμές στα πορτοκαλί κελιά είναι μοναδικές ? Δηλαδή εμφανίζονται μόνο μία φορά μέσα στα πορτοκαλί? αν ναι, τότε Ναι γίνετε με index πολύ απλούστερα από το παράνω νομίζω (είμαι σε αεροδρόμιο και δε μπορώ να το τσεκάρω 100%) . ΥΓ Τις πορτοκαλί τιμές στις 2 νέες στήλες θες να σου εμφανίζονται αυτόματα ή θα τις βάζεις "χεράτα"? Επεξ/σία 15 Ιουλίου 2022 από DrLo
blanka Δημοσ. 18 Ιουλίου 2022 Μέλος Δημοσ. 18 Ιουλίου 2022 Στις 15/7/2022 στις 6:40 ΜΜ, DrLo είπε Οι τιμές στα πορτοκαλί κελιά είναι μοναδικές ? Δηλαδή εμφανίζονται μόνο μία φορά μέσα στα πορτοκαλί? αν ναι, τότε Ναι γίνετε με index πολύ απλούστερα από το παράνω νομίζω (είμαι σε αεροδρόμιο και δε μπορώ να το τσεκάρω 100%) . ΥΓ Τις πορτοκαλί τιμές στις 2 νέες στήλες θες να σου εμφανίζονται αυτόματα ή θα τις βάζεις "χεράτα"? Δεν παίζει ρόλο το χρώμα. δεν βάζω τίποτα χεράτα.
DrLo Δημοσ. 18 Ιουλίου 2022 Δημοσ. 18 Ιουλίου 2022 (επεξεργασμένο) 4 ώρες πριν, blanka είπε Δεν παίζει ρόλο το χρώμα. δεν βάζω τίποτα χεράτα. Θα το τσεκαρω και θα σου πω. Οι τιμές στα πορτοκάλι κελιά είναι μοναδικές? Δηλαδή πχ το 8600293 υπάρχει μια και μόνο φορά στα αριστερά/πορτοκάλι κελιά? ΥΓ: υπάρχει κάποιος λόγος που θες να το κάνεις χωρίς χρήση μιας πολύ απλής ρουτίνας σε VBA? (πχ να μην επιτρέπεται η εκτέλεση VBA στον ΗΥ) Επεξ/σία 18 Ιουλίου 2022 από DrLo
blanka Δημοσ. 19 Ιουλίου 2022 Μέλος Δημοσ. 19 Ιουλίου 2022 15 ώρες πριν, DrLo είπε Θα το τσεκαρω και θα σου πω. Οι τιμές στα πορτοκάλι κελιά είναι μοναδικές? Δηλαδή πχ το 8600293 υπάρχει μια και μόνο φορά στα αριστερά/πορτοκάλι κελιά? ΥΓ: υπάρχει κάποιος λόγος που θες να το κάνεις χωρίς χρήση μιας πολύ απλής ρουτίνας σε VBA? (πχ να μην επιτρέπεται η εκτέλεση VBA στον ΗΥ) Nαι οι τιμές στα πορτοκαλι κελιά είναι μοναδικές Δεν ξέρω τι είναι το VBA που λες
Billator Δημοσ. 19 Ιουλίου 2022 Δημοσ. 19 Ιουλίου 2022 (επεξεργασμένο) Στις 15/7/2022 στις 6:40 ΜΜ, DrLo είπε Οι τιμές στα πορτοκαλί κελιά είναι μοναδικές ? Δηλαδή εμφανίζονται μόνο μία φορά μέσα στα πορτοκαλί? αν ναι, τότε Ναι γίνετε με index πολύ απλούστερα από το παράνω νομίζω (είμαι σε αεροδρόμιο και δε μπορώ να το τσεκάρω 100%) . ΥΓ Τις πορτοκαλί τιμές στις 2 νέες στήλες θες να σου εμφανίζονται αυτόματα ή θα τις βάζεις "χεράτα"? Δεν μπορεί να γίνει με INDEX γιατί πρέπει να γίνει φιλτράρισμα των κενών κελιών. Για να γίνει αυτό θα χρειαστείς ενδιάμεσο function το οποίο δεν μπορεί να μπει στο ίδιο κελί επεξεργασίας του INDEX γιατί θα είναι array function output ενώ το INDEX είναι cell function output, μετά σε δεύτερο στάδιο πρέπει να φιλτράρεις τα κενά κελιά του πίνακα που δημιουργείται. Το INDEX κάνει καταχώρηση αποτελέσματος cell όχι array (σίγουρα θα υπάρχει υλοποίηση Index με επιστροφή array αλλά θα γίνεται αρκετά πιο πολύπλοκο). Οπότε θα μιλάμε για μια υλοποίηση που θα είναι 2-3 σταδίων (στην καλύτερη). Θα είναι βέβαια πιο εύκολα κατανοήσιμη από κάποιον 3ο Από την στιγμή που γνωρίζουμε τις θέσεις κάθε πίνακα ότι είναι ταυτόσημες το INDEX χάνει την πραγματική του δυναμική και στην ουσία χρειάζεσαι απλά μία έξυπνη ταξινόμηση. Τώρα στην πράξη το VBA θα είναι αρκετά πιο πολύπλοκο σε σχέση με την φόρμουλα που έγραψα πάνω, ειδικά για κάποιον που δεν ξέρει κώδικα. Γενικά ο συνδυασμός FILTER + LEN είναι ένας έξυπνος συνδυασμός μαζικής αφαίρεσης κενών κελιών, όπου στο παραπάνω πίνακα αυτό είναι και το κύριο του πρόβλημα, τα κενά κελιά. Επεξ/σία 19 Ιουλίου 2022 από Billator
DrLo Δημοσ. 19 Ιουλίου 2022 Δημοσ. 19 Ιουλίου 2022 (επεξεργασμένο) 56 λεπτά πριν, Billator είπε Δεν μπορεί να γίνει με INDEX γιατί πρέπει να γίνει φιλτράρισμα των κενών κελιών. Για να γίνει αυτό θα χρειαστείς ενδιάμεσο function το οποίο δεν μπορεί να μπει στο ίδιο κελί επεξεργασίας του INDEX γιατί θα είναι array function output ενώ το INDEX είναι cell function output, μετά σε δεύτερο στάδιο πρέπει να φιλτράρεις τα κενά κελιά του πίνακα που δημιουργείται. Το INDEX κάνει καταχώρηση αποτελέσματος cell όχι array (σίγουρα θα υπάρχει υλοποίηση Index με επιστροφή array αλλά θα γίνεται αρκετά πιο πολύπλοκο). Οπότε θα μιλάμε για μια υλοποίηση που θα είναι 2-3 σταδίων (στην καλύτερη). Θα είναι βέβαια πιο εύκολα κατανοήσιμη από κάποιον 3ο Από την στιγμή που γνωρίζουμε τις θέσεις κάθε πίνακα ότι είναι ταυτόσημες το INDEX χάνει την πραγματική του δυναμική και στην ουσία χρειάζεσαι απλά μία έξυπνη ταξινόμηση. Τώρα στην πράξη το VBA θα είναι αρκετά πιο πολύπλοκο σε σχέση με την φόρμουλα που έγραψα πάνω, ειδικά για κάποιον που δεν ξέρει κώδικα. Γενικά ο συνδυασμός FILTER + LEN είναι ένας έξυπνος συνδυασμός μαζικής αφαίρεσης κενών κελιών, όπου στο παραπάνω πίνακα αυτό είναι και το κύριο του πρόβλημα, τα κενά κελιά. Καλά δε λέω μόνο με index. Δεν είχα χρόνο να ασχοληθώ αλλά μου έχει έξαψει τη περιέργεια. Θα το δω όταν βρω χρόνο. Δε μπορεί να μη γίνεται "πιο απλά" από το παραπάνω (αν και με VBA θα ήταν το απλούστερο νομίζω) Επεξ/σία 19 Ιουλίου 2022 από DrLo 1
Billator Δημοσ. 19 Ιουλίου 2022 Δημοσ. 19 Ιουλίου 2022 34 λεπτά πριν, DrLo είπε Δε μπορεί να μη γίνεται "πιο απλά" από το παραπάνω (αν και με VBA θα ήταν το απλούστερο νομίζω) To παραπάνω πρόβλημα επειδή στην ουσία είναι ταύτιση τιμών 2 πινάκων στις ίδιες θέσεις νομίζω ότι υπάρχουν "άπειροι" τρόποι προσέγγισης και περιορισμός είναι μόνο η φαντασία κάποιου (και τα εργαλεία τα οποία είναι οικείος να χρησιμοποιεί). Σίγουρα υπάρχουν πολύ πιο απλές λύσεις (για να μπορεί ο άλλος να καταλαβαίνει και τι κάνει ακριβώς), αλλά για One cell function solution θα είναι "μακρινάρια" και εκείνες. Αν μπορείς κάνε μία υλοποίηση και εσύ (εφόσον έχεις χρόνο) μπορεί να πάρω και εγώ καμία ιδέα με τον τρόπο / λογική που το λύνεις εσύ και να βοηθήσεις και τον TS με μια εναλλακτική.
DrLo Δημοσ. 19 Ιουλίου 2022 Δημοσ. 19 Ιουλίου 2022 Συμφωνώ. Θα το ψάξω σίγουρα Εχω μπλέξει τώρα με κάτι της δουλειάς και δεν έχω βρει το χρόνο αλλά κάτι έχω στο μυαλό μου. Θα επανέλθω. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα