![]() |
Αρχείο xml 1 Συνημμένο(α) Κύριοι καλησπέρα σας, Θα ήθελα την βοήθειά με το αρχείο xml που σας επισυνάπτω. Θα σας πω όμως αρχικά ότι το αρχείο xml το ανεβάζω στο "πρότυπο" που έχω, με από την καρτέλα "δεδομένα" και την "Λήψη εξωτερικών δεδομένων". Την εισαγωγή την κάνω πάντα στο κελί a1. Τα δεδομένα του αρχείου xml (όσα απ' αυτά χρειάζομαι) τα συνδέω με τις αντίστοιχες συναρτήσεις στο φύλλο "ΥΦΙΣΤΑΜΕΝΗ". Το ζητούμενο είναι αν μπορούν τα δεδομένα στο φύλλο "ΥΦΙΣΤΑΜΕΝΗ" να αρχίζουν πάντα από την γραμμή 5 και αν είναι δυνατόν ταξινομημένα ως προς την στήλη "Α/Α" με αύξουσα αρίθμηση. Να σας αναφέρω επιπλέον ότι κατά την εισαγωγή του αρχείου xml μου βγάζει μήνυμα ότι κάποιες στήλες δεν χωρούν και δεν φορτόνονται, αλλά αυτό που έχω παρατηρήσει, είναι 'ότι τα δεδομένα που λείπουν δεν μου είναι χρήσιμα και δεν έχω κάνει κάποια προσπάθεια επίλυσης αυτού, αν και δεν ξέρω αν υπάρχει λύση. Ευχαριστώ για την φιλοξενία |
Κάποιες διευκρινήσεις στο αρχικό μου ερώτημα. Τα δεδομένα που αναζητώ στο αρχείο xml δεν αρχίζουν πάντα από την δεύτερη γραμμή. Οι γραμμές μπορούν να είναι και περισσότερες από 50 και τα ζητούμενα μου να αρχίζουν π.χ. από την 15η γραμμή. Στις συναρτήσεις μου ζητώ από το φύλλο XMLi π.χ τα δεδομένα της στήλης "neoxartoypob" που ξεκινούν από την γραμμή 8. Έτσι λοιπόν δεν θα ήθελα στο φύλλο "Υφιστάμενη" να έχω 8 κενές γραμμές. Επειδή κάθε φορά για διαφορετικό πελάτη ανεβάζω και ένα διαφορετικό XML, ανάλογα των πληροφοριών που περιέχει, έχω παρατηρήσει ότι π.χ. η στήλη "neoxartoypob" σε ένα άλλο XML εμφανίζεται ως "neoxartoypob20", έτσι λοιπόν πηγαίνω και αλλάζω το όνομα αυτό στην συνάρτησή μου και έχω την σωστή πληροφορία. Αυτό δεν μπορώ να το γνωρίζω από πριν και δεν νομίζω ότι μπορεί να αντιμετωπιστεί, εκτός αν υπάρχει κάτι που δεν έχω σκεφτεί. |
1 Συνημμένο(α) Καλημέρα Δες κάποιες προτάσεις στο συνημμένο. |
1 Συνημμένο(α) Ευχαριστώ πολύ για την βοήθειά σου kapetang Με βοήθησε πολύ η πρότασή σου, όμως έχω ένα ερώτημα όπου αναλυτικά φαίνεται μέσα στο αρχείο DEMO που επισυνάπτω και έχει να κάνει με έναν μόνο υπολογισμό από διπλές εγγραφές σε ποσοστό της έκτασης. |
1 Συνημμένο(α) Καλημέρα Τάσο δεν ξέρω τι ακριβώς ισχύει. Δες κάποιες σκέψεις στο συνημμένο. |
Γιώργο καλησπέρα και σε ευχαριστώ πολύ για την απάντησή σου. Ο τύπος στην στήλη "συντελεστής δέντρων" ήταν αυτό ακριβώς που ήθελα. Η στήλη "Δέντρα/στρέμμα" με βοηθά στο γεγονός ότι με μορφοποίηση (χρώματος), γνωρίζω σε ποια γραμμή η πυκνότητα δέντρων είναι μικρότερη από 80. Η σκέψη του συστήματος είναι η εξής: Τα νεαρά δένδρα συμμετέχουν αναλογικά στην έκταση, έτσι λοιπόν η αναλογούσα έκταση των νεαρών δένδρων πολλαπλασιάζεται με συντελεστή 0,5. Οπότε ο τύπος που έδωσες κάνει αυτόν ακριβώς τον υπολογισμό. Αυτό που συμβαίνει στα αρχεία XML είναι ότι πολλές φορές έχουμε μία λίστα με 50 εγγραφές και τα διπλότυπα στην στήλη Β μπορεί να είναι αρκετά. Το σύνθετο φίλτρο με τις μοναδικές εγγραφές δίνει την απάντηση. Αν όμως για λόγους που θα πρέπει να έχω εικόνα σε κάθε τεμάχιο τι συμβαίνει και δεν θέλω την λύση του φίλτρου (πχ επειδή ένα τεμάχιο έχει αναλογία στην ιδιοκτησία), τότε υπάρχει άλλος τρόπος; |
Τάσο δε μπορώ να σκεφτώ κάτι άλλο. Επειδή ο αριθμός 80 δέντρα ανά στρέμμα φαίνεται μεγάλος δες μήπως η επιφάνεια δε μετριέται σε στρέμματα |
Γιώργο καλησπέρα Από το XML η έκταση έρχεται σε εκτάρια (1 ha = 10 στρέμματα), οπότε όλοι οι υπολογισμοί γίνονται σε ha. Έχοντα λοιπόν, από το σύστημα τις εγγραφές σε XML, και ένα Excel με τους δείκτες ανά Περιφέρεια (με 12 φύλλα, με 21 στήλες και 5500 γραμμές έκαστο φύλλο), έκανα αυτό το φύλλο εισαγωγής "ΥΦΙΣΤΑΜΕΝΗ" αντλώντας με τις συναρτήσεις που είδες στο DEMO XML από όλα τα φύλλα δεδομένα και έλυσα σε μεγάλο βαθμό το πρόβλημα.Βέβαια δεν έχω ξανα-δουλέψει με αρχεία XML, όμως μπόρεσα και άντλησα όλα αυτά που ζητούσα. Ίσως υπάρχουν άλλα προγράμματα για κάτι καλύτερο, όμως οι γνώσεις μου φτάνουν μέχρι εκεί. Ολόκληρο το αρχείο μου είναι αρκετά "βαρύ" και αργεί λίγο να φορτώσει (15-20 sec). Πάντως σε ευχαριστώ ακόμα μια φορά για την βοήθειά σου. |
Να είσαι καλά Τάσο και καλή συνέχεια. |
Γιώργο καλησπέρα, Επειδή όπως ανέφερα και προηγούμενα, το αρχείο είναι πολύ "βαρύ" και ο χρόνος που χρειάζεται να ανοίξει είναι πλέον περισσότερο από 40 sec. και αποφάσισα να φτιάξω ένα νέο αρχείο excel (πχ. demo xml), όπου υπάρχει μόνο το φύλλο XMLi, ΥΦΙΣΤΑΜΕΝΗ και φύλλο2. Το XML αρχείο το ανεβάζω κάθε φορά στο φύλλο XMLi με αρχή το κελί A1. Σε ξεχωριστό αρχείο (πχ ΤΑ6.1.xlsx) υπάρχουν οι πίνακες των Περιφερειών. Στο αρχείο αυτό υπάρχουν 14 φύλλα με δεδομένα σε 21 στήλες και 5500 γραμμές. Στην 3η σειρά αυτού του αρχείου υπάρχουν επικεφαλίδες, που είναι οι ίδιες σε όλα τα φύλλα. Τα ονόματα των φύλλων είναι αυτά που υπάρχουν στο κελί L2 του αρχείου DEMO XML. Για να αντλήσω τα δεδομένα από το κλειστό αρχείο ΤΑ6.1.xlsx έχω γράψει την συνάρτηση, στο φύλλο ΥΦΙΣΤΑΜΕΝΗ στο κελί Η5 έως Η100, Στο κελί Ι5 έως Ι100 έχω γράψει την ίδια συνάρτηση αλλά για την στήλη G:G και συνεχίζω αντίστοιχα με άλλες στήλες. (=IFERROR( VLOOKUP($I5;CHOOSE({1;2};'G:\Το Drive μου\ΜΕΤΡΟ 6.1 ΝΕΟΙ ΑΓΡΟΤΕΣ\[TA6.1.XLSΧ]ΠΕΛΟΠΟΝΝΗΣΟΣ'!$D$3:$D$5500;'G:\Το Drive μου\ΜΕΤΡΟ 6.1 ΝΕΟΙ ΑΓΡΟΤΕΣ\[TA6.1.XLSΧ]ΠΕΛΟΠΟΝΝΗΣΟΣ'!$F$3:$F$5500);2;FALSE);" ") Πλέον όλοι οι υπολογισμοί γίνονται στο φύλλο ΥΦΙΣΤΑΜΕΝΗ και το αρχείο DEMO XML.xlsx έχει γίνει πολύ "ελαφρύ" - ανοίγει αμέσως. Τα ερωτήματα μου πλέον έγιναν δύο (2). 1ον. Επιλέγοντας από την λίστα του κελιού L2 την περιφέρεια πως μπορεί να αλλάζει στην σύνδεση, το ΠΕΛΟΠΟΝΝΗΣΟΣ σε άλλο φύλλο πχ ΑΤΤΙΚΗΣ και να αντλούνται έτσι δεδομένα από το βιβλίο ΤΑ6.1 και το φύλλο ΑΤΤΙΚΗΣ; Αυτό που συγκρίνω είναι πάντα την στήλη D:D του αρχείου ΤΑ6.1 με το κελί Ι5 και αναζητώ το αποτέλεσμα στην στήλη 6 (F:F) ή 9(I:I) ή ότι άλλο θέλω 2ον. Πως μπορώ στο κελί W4, X4,Y4, Z4 του φύλλου ΥΦΙΣΤΑΜΕΝΗ,να έρχονται τα δεδομένα από τα κελιά της των στηλών 14, 15, 16, 17 της 3ης γραμμής του αρχείου ΤΑ6.1 (από το επιλεγμένο φύλλο βέβαια); Δεν ξέρω αν είναι άλλο θέμα και πρέπει να κάνω νέα ερώτηση με άλλο θέμα, αλλά το αφήνω στην ευχέρεια του διαχειριστή. |
1) Δε μπορώ να καταλάβω γιατί χρησιμοποιείς αυτόν τον περίεργο τύπο. Στον τύπο: =IFERROR( VLOOKUP(I5;'G:\Το Drive μου\ΜΕΤΡΟ 6.1 ΝΕΟΙ ΑΓΡΟΤΕΣ\[TA6.1.XLSΧ]ΠΕΛΟΠΟΝΝΗΣΟΣ'!$D$3:$X$5500;2;FALSE);"" ) αναζητείται η τιμή I5 στη στήλη D (1η στήλη της περιοχής) και επιστρέφεται μία τιμή από τη δεύτερη στήλη της περιοχής $D$3:$X$5500 (στήλη E). Η παραπάνω αναφορά (σύνδεσμος) είναι στατική. Μπορεί να γίνει δυναμική με η βοήθεια της συνάρτησης INDIRECT() και να πάρει τη μορφή: =IFERROR( VLOOKUP(I5; INDIRECT( "'G:\Το Drive μου\ΜΕΤΡΟ 6.1 ΝΕΟΙ ΑΓΡΟΤΕΣ\[TA6.1.XLSΧ]" & L2 & "'!$D$3:$X$5500");2;FALSE);""). 2) Στο κελί W4 βάζουμε τον τύπο: = INDIRECT( "'G:\Το Drive μου\ΜΕΤΡΟ 6.1 ΝΕΟΙ ΑΓΡΟΤΕΣ\[TA6.1.XLSΧ]" & L2 & "'!$Ν$3") Στα άλλα κελιά ο τύπος είναι παρόμοιος. Για να λειτουργήσουν οι τύποι θα πρέπει να είναι ανοιχτά και τα δύο αρχεία. |
Kapetang (Γιώργο) καλησπέρα, Τον τύπο τον δανείστηκα από κάπου (στην αναζήτηση μου) και δουλεύει, φέρνει τα αποτελέσματα που θέλω. Όπως ανέφερα και προηγούμενα έχω ένα βιβλίο (DEMO XML.xlsx) με πολλά φύλλα και πολλές γραμμές. Σε αυτό λοιπόν για τους υπολογισμούς μου στο φύλλο ΥΦΙΣΤΑΜΕΝΗ, χρησιμοποιώ συναρτήσεις όπως οι παρακάτω: =IF(I6=0;"";INDEX(INDIRECT("'"&$L$2&"'!$a$1:$w5500 ");MATCH(I6;INDIRECT("'"&$L$2&"'!$d$1:$d5500");0); 6)) =IF($L2>0;INDEX(INDIRECT("'"&$L$2&"'!$a$1:$w$5500" );1;16);0) Τις συναρτήσεις αυτές τις έχω βάλει σε αρκετές στήλες και μερικά μεμονωμένα κελιά και λειτουργούν (δηλαδή έχω το αποτέλεσμα που θέλω) Το πρόβλημα είναι ότι αυτό το αρχείο αργεί πολύ να ανοίξει (40 - 50 sec). Σκέφτηκα λοιπόν να σπάσω το αρχείο στα δύο. Επειδή από την υπηρεσία έχω λάβει ένα αρχείο [ΤΑ6.1.xlsx] που περιέχει 14 φύλλα και το κάθε φύλλο έχει 21 στήλες και 5500 γραμμές, λέω γιατί να τα ενοποιήσω; Το αρχείο αυτό από την αρχή που προσπαθούσα να το ανοίξω αργούσε και τώρα έγιναν τα πράγματα χειρότερα. Ενοποιημένο το αρχείο ως DEMO XML.xlsx με 19 φύλλα πλέον και με την χρήση των παραπάνω συναρτήσεων, δουλεύει και λαμβάνω τα δεδομένα που ζητώ αλλά αργεί. Θέλοντας όμως να αποφύγω την αναμονή για το άνοιγμα και φτιάχνοντας ένα νέο αρχείο με 4 φύλλα [demo1.xlsx], άρχισα να κάνω τις συνδέσεις μου και το γράψιμο συναρτήσεων. Ανοίγει πολύ γρήγορα και τα αποτελέσματα είναι και αυτά πολύ γρήγορα. Η συνάρτηση λοιπόν που σου έγραψα πριν [=IFERROR( VLOOKUP($I7;CHOOSE({1;2};'G:\Το Drive μου\ΜΕΤΡΟ 6.1 ΝΕΟΙ ΑΓΡΟΤΕΣ\[TA6.1.XLSΧ]ΠΕΛΟΠΟΝΝΗΣΟΣ'!$D$3:$D$5500;'G:\Το Drive μου\ΜΕΤΡΟ 6.1 ΝΕΟΙ ΑΓΡΟΤΕΣ\[TA6.1.XLSΧ]ΠΕΛΟΠΟΝΝΗΣΟΣ'!$F$3:$F$5500);2;FALSE);" ")] δουλεύει. Πράγματι μου φέρνει τα δεδομένα, αλλά μόνο γα το φύλλο ΠΕΛΟΠΟΝΝΗΣΟΣ, διότι όπως μου έμαθες είναι στατική. Όμως η χρήση της συνάρτησης INDIRECT δεν μπόρεσε να με βοηθήσει. Την χρησιμοποιώ για τα φύλλα εντός του αρχείου και λειτουργεί, για την σύνδεση όμως με το δεύτερο αρχείο ΟΧΙ το αποτέλεσμα είναι (#ΑΝΑΦ!) Και βέβαια είναι ανοικτά και τα δύο αρχεία όταν κάνω τις δοκιμές και βρίσκονται στον ίδιο φάκελο. Δοκίμασα την = INDIRECT( "'G:\Το Drive μου\ΜΕΤΡΟ 6.1 ΝΕΟΙ ΑΓΡΟΤΕΣ\[TA6.1.XLSΧ]" & L2 & "'!$Ν$3" και το αποτέλεσμα ήταν ΟΧΙ (#ΑΝΑΦ!) Δοκίμασα = INDIRECT("'G:\Το Drive μου\ΜΕΤΡΟ 6.1 ΝΕΟΙ ΑΓΡΟΤΕΣ\[TA6.1.XLSΧ]ΠΕΛΟΠΟΝΝΗΣΟΣ'!$Ν$3") και πάλι ΟΧΙ Δοκίμασα = INDIRECT([ΤΑ6.1.xlsx]ΠΕΛΟΠΟΝΝΗΣΟΣ!$J$2) και πάλι ΟΧΙ - Αυτό το έκανα με επιλογή του κελιού από το δεύτερο αρχείο Έχω κολλήσει και δεν μπορώ να βρώ μια λύση. Δουλεύω με Excel 2007. |
Καλημέρα Κάποιο λάθος υπάρχει. 1) Ανοίγεις στο Excel και τα δύο αρχεία (TA6.1.XLSΧ και demo1.xlsx) 2) Ο τύπος = INDIRECT( "'G:\Το Drive μου\ΜΕΤΡΟ 6.1 ΝΕΟΙ ΑΓΡΟΤΕΣ\[TA6.1.XLSΧ]" & L2 & "'!$Ν$3" είναι λάθος επειδή δε κλείνει με παρένθεση. 3) Το κελί L2 πρέπει να παίρνει έγκυρες τιμές. Έγκυρη είναι η τιμή που ταυτίζεται με το όνομα κάποιου φύλλου του TA6.1.XLSΧ. 4) Ο γενική σύνταξη της συνάρτησης INDIRECT είναι: INDIRECT(ΔΕ_ΜΕ_Διαδρομή_\[ΌνομαΑρχείου]_ΔΕ_ & L2 & _ ΔΕ_ΜΕ_!_ΠεριοχήΚελιων_ΔΕ) Στον τύπο ΔΕ=Διπλά Εισαγωγικά, ΜΕ= Μονό Εισαγωγικό και το διαχωριστικό _ παραλείπεται Αν τα παραπάνω δεν πετύχουν: 1) στο κελί W4 γράψε = πήγαινε στο βιβλίο TA6.1.XLSΧ και κάνε κλικ στο κελί N3. 2) Αποθήκευσε τα 2 βιβλία και αφού τα κλείσεις άνοιξε και τα 2 πάλι. 3) Τροποποίησε τον τύπο στο κελί W4 ώστε να γίνει δυναμικός χρησιμοποιώντας, σύμφωνα με τα παραπάνω, τη συνάρτηση INDIRECT. Αυτό θα σε καθοδηγήσει στη διαμόρφωση και των υπόλοιπων τύπων |
Γιώργο καλησπέρα, Σε ευχαριστώ για τις συμβουλές σου. Πράγματι η συνάρτηση INDIRECT δούλεψε. Η σκέψη που έκανα να έχω δύο αρχεία, demo1.xlsx ανοικτό και TA6.1.xlsx κλειστό δεν μπορεί να δουλέψει, Το δεύτερο αρχείο είναι μεγάλο και "βαρύ" Με την CHOOSE και την VLOOKUP μπορώ και παίρνω τα δεδομένα από το κλειστό αρχείο αλλά όχι στατικά κελιά. Αντίθετα με την INDIRECT μπορώ και παίρνω ότι θέλω, αλλά πρέπει το αρχείο να είναι ανοικτό ή να βρίσκονται όλα τα φύλλα στο ίδιο αρχείο. Σκέπτομαι λοιπόν 1ον. Να έχω το αρχείο με τα 4 φύλλα που χρειάζομαι ως πρότυπο και να κάνω αντιγραφή ή επικόλληση του φύλλου (αυτό που ορίζει το κελί L2 του φύλλου ΥΦΙΣΤΑΜΕΝΗ) που χρειάζομαι από το αρχείο ΤΑ6.1.xlsx. Ίσως εδώ λίγος κώδικας θα με βοηθούσε. 2ον. Να έχω το αρχείο demo1.xlsx με τα 4 φύλλα μόνο και να χρησιμοποιήσω κώδικα. Αυτό είναι πολύ δύσκολο για μένα. δεν ξέρω - διαβάζω διάφορα άρθρα , αλλά δεν έχω βρεί κάτι που να με εξυπηρετεί. Σε ευχαριστώ .... |
| Η ώρα είναι 09:31. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.