Ανανέωση ιστοσελίδας

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 15-10-14, 12:31
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 24-03-2012
Περιοχή: Θεσσαλονίκη
Μηνύματα: 70
Προεπιλογή Formula To Comment

Καλημέρα στην παρέα του φόρουμ.

Τον παρακάτω κώδικα για μεταφορά των τύπων από το κελί στο σχόλιο του κελιού (και αντίστοιχα ο επόμενος κώδικας για μεταφορά των τύπων από το σχόλιο στο κελί) τον εφαρμόζω σε ένα φύλλο εργασίας όπου το UsedRange είναι περίπου 70 στήλες και 1700 γραμμές. Από τις 70 στήλες οι μισές περιέχουν τύπους όπου με Match / Index γεμίζουν με στοιχεία από δύο – τρία βοηθητικά φύλλα. Ο χρόνος εκτέλεσης είναι γύρω στα 7 λεπτά. Υπάρχει τρόπος με διαφορετική σύνταξη του κώδικα να βελτιωθεί ο χρόνος εκτέλεσης;

Sub FormulaToComment()
Dim c As Range
Dim WorkRng As Range
Set WorkRng = WS_OS.UsedRange
With Application
.Calculation = xlCalculationManual
.Cursor = xlWait
.ScreenUpdating = False
.DisplayStatusBar = False
.EnableEvents = False
End With
For Each c In WorkRng
If c.HasFormula = True Then
c.AddComment c.Formula
c.Value = c.Value
Else
End If
Next
With Application
.Calculation = xlCalculationAutomatic
.Cursor = xlDefault
.ScreenUpdating = True
.DisplayStatusBar = True
.EnableEvents = True
End With
End Sub
'--------------------------------------------------------------------------------------------
Sub CommentToFormula()
Dim c As Range
Dim WorkRng As Range
Dim cComment As String
Set WorkRng = WS_OS.UsedRange
With Application
.Calculation = xlCalculationManual
.Cursor = xlWait
.ScreenUpdating = False
.DisplayStatusBar = False
.EnableEvents = False
End With
For Each c In WorkRng
If Not c.Comment Is Nothing Then
cComment = c.Comment.Text
c.Formula = cComment
c.ClearComments
Else
End If
Next
With Application
.Calculation = xlCalculationAutomatic
.Cursor = xlDefault
.ScreenUpdating = True
.DisplayStatusBar = True
.EnableEvents = True
End With
End Sub

Φιλικά
Δημήτρης
Απάντηση με παράθεση
  #2  
Παλιά 15-10-14, 13:58
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλησπέρα
Στην Excel 2013 υπάρχει η =FORMULATEXT(a1) ενσωματωμένη που αποδίδει τύπο σε μορφή text
Μήπως θα ήταν πιο εξυπηρετικό αυτό από comments, VBA κλπ;
Απάντηση με παράθεση
  #3  
Παλιά 15-10-14, 15:07
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 24-03-2012
Περιοχή: Θεσσαλονίκη
Μηνύματα: 70
Προεπιλογή

Καλησπέρα Σπύρο και ευχαριστώ για την άμεση απάντηση.
Το συγκεκριμένο τέχνασμα (μεταφορά τύπου σε σχόλιο και αντίστροφα) το κάνω σαν πειραματισμό στο προαναφερθέν αρχείο μήπως και μπορέσω να βελτιώσω τις επιδόσεις τόσο κατά το άνοιγμα του αρχείου όσο και κατά την επεξεργασία του. Λόγω του πλήθους των συναρτήσεων είναι ευνόητο ότι το αρχείο αυτό (περίπου στα 7ΜΒ) αργεί τόσο στο να ανοίξει όσο και κατά την επεξεργασία όπως π.χ. εισαγωγή νέας γραμμής. Επειδή ακόμα και με τη ρύθμιση του «Μη αυτόματου υπολογισμού» υπάρχει ένα μικρό κόλλημα κατά την εισαγωγή γραμμών, σκέφτηκα πως εάν «παγώσω» τους τύπους μεταφέροντας τους στα σχόλια θα γίνεται πιο γρήγορα η επεξεργασία του αρχείου (που όντως και γίνεται) και όταν θα πρέπει να υπολογίσει τότε να τους μεταφέρω ξανά στο κελί κ.ο.κ., αλλά τελικά διαπιστώνω ότι αυτό το σκεπτικό μου δεν μπορεί να περπατήσει όχι μόνο λόγω του μεγάλου χρόνου μεταφοράς τύπων σε σχόλια και το αντίστροφο, αλλά και επειδή εάν εισαχθεί μία γραμμή (όσο οι τύποι είναι στα σχόλια) έστω με αντιγραφή της ακριβώς από επάνω γραμμής τότε ο τύπος της νέας γραμμής όταν θα μεταφερθεί στο κελί θα έχει λάθος αναφορά. Θα κοιτάζει το κωδικό του item της προηγούμενης γραμμής για να φέρει περιγραφές και όλα τα υπόλοιπα των υπολογιζόμενων στηλών.
Οπότε και με τη συνάρτηση FORMULATEXT δεν νομίζω ότι μπορώ να επιτύχω κάτι για τον παραπάνω στόχο. Παρεμπιπτόντως δεν γνώριζα ότι υπήρχε η συγκεκριμένη συνάρτηση.
Ευχαριστώ πάντως για την ανταπόκριση. Δεν ξέρω εάν έχεις κάτι να προτείνεις στην κατεύθυνση μεγάλα αρχεία, βελτιστοποίηση ταχύτητας κλπ.

Φιλικά
Δημήτρης
Απάντηση με παράθεση
  #4  
Παλιά 15-10-14, 15:21
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Για να καταλάβω Δημήτρη το σκεπτικό ...
Κάθε φορά που ανοίγει το αρχείο ή σε κάθε υπολογισμό (λόγω όγκου όπως λες)
«αδειάζεις» τα κελιά με τύπους μεταφέροντάς τα σε σχόλια και
μετά τα «ξαναφορτώνεις» από τα σχόλια στα κελιά;
Απάντηση με παράθεση
  #5  
Παλιά 15-10-14, 15:56
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 24-03-2012
Περιοχή: Θεσσαλονίκη
Μηνύματα: 70
Προεπιλογή

Ναι περίπου έτσι σκεπτόμουν να το εφαρμόσω.
Όταν το ανοίγω το αρχείο οι τύποι βρίσκονται στα σχόλια από την τελευταία επεξεργασία του αρχείου. Το ανοίγω λοιπόν όπου παντού έχω ουσιαστικά μόνο κείμενο. Το επεξεργάζομαι όπως π.χ. σε κάποια κελιά που είναι manual καταχωρίσεις κάνω τις καταχωρίσεις μου, εάν χρειαστεί να προσθέσω νέα γραμμή την προσθέτω τότε βάζω τον κώδικα να μεταφέρει τους τύπους από τα σχόλια στα κελιά …..κάνει τους υπολογισμούς του και πριν κλείσω το αρχείο ξανά μεταφέρω τους τύπους στα σχόλια και αποθηκεύω.
Αυτό τουλάχιστον ήταν στη σκέψη μου να πραγματώσω, αλλά διαπιστώνω ότι δεν μπορεί να περπατήσει έστω και εάν η μεταφορά των τύπων στα σχόλια και αντίστροφα γινόταν σε χρόνο dt.
Επίσης για να γίνω περισσότερο κατανοητός φαντάσου σε ένα φύλλο να έχεις λίστα μιας ολόκληρης γκάμας προϊόντων ομαδοποιημένα κατά ομάδες ομοιογενών προϊόντων η οποία εκτείνεται σε 70 στήλες και 1700 γραμμές.
Οι μισές στήλες είναι στοιχεία που έρχονται από την επίσημη βάση δεδομένων η οποία δυστυχώς δεν καλύπτει όλες τις απαραίτητες πληροφορίες και γι' αυτό κάποιες συντηρούνται στο Excel.

Ομάδα Α (π.χ. κονσέρβες)
Κωδικός / Περιγραφή / Κωδ. Intrastat / Βάρος κιβωτίου / Διαστάσεις κιβ. / Κιβ. Ανά παλέτα
Manual / Formula / Formula / Formula / Manual / Formula

Ομάδα B (π.χ. κρασιά)
Κωδικός / Περιγραφή / Κωδ. Intrastat / Βάρος κιβωτίου / Διαστάσεις κιβ. / Κιβ. Ανά παλέτα
Manual / Formula / Formula / Formula / Manual / Formula
Απάντηση με παράθεση
  #6  
Παλιά 15-10-14, 16:04
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Ναι κατάλαβα
Λύση θα ήταν νέο πρόγραμμα, μηδέν τύποι, μόνο VBA τα πάντα «έρχονται» ως τιμές και μόνο.
Απάντηση με παράθεση
  #7  
Παλιά 15-10-14, 16:17
Όνομα: Δημήτρης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 24-03-2012
Περιοχή: Θεσσαλονίκη
Μηνύματα: 70
Προεπιλογή

Σπύρο έχεις απόλυτο δίκιο! Η λύση είναι να έρχονται τα πάντα ως τιμές και μόνο.
Σε ευχαριστώ για την αντοπόκριση.
Να είσαι καλά.

Φιλικά
Δημήτρης
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Εισαγωγή formula σε κελί μέσω VBA... ChryssaV Access - Ερωτήσεις / Απαντήσεις 4 09-10-09 10:05


Η ώρα είναι 12:51.