Άνοιγμα βιβλίων εργασίας με μακροεντολές (.xlsm) Πως θα ξεπλοκάρω ένα βιβλίο εργασίας του Excel με κατάληξη .xlsm που σημαίνει ότι περιέχει μακροεντολές δηλαδή κώδικα σε VBA Σε αυτό το άρθρο, θα δούμε πώς μπορείτε να ξεμπλοκάρετε αρχεία .xlsm, Πρόβλημα: Τα περισσότερα αρχεία .xlsm που κατεβάζετε είναι αποκλεισμένα από προεπιλογή. Λύση: Βεβαιωθείτε ότι το αρχείο έχει αποθηκευτεί στον σκληρό σας δίσκο. Ακολουθήστε τα παρακάτω βήματα για να το ξεμπλοκάρετε: Κάντε δεξί κλικ στο αρχείο. Επιλέξτε Ιδιότητες – Properties Στην καρτέλα Γενικά – General, τσεκάρετε το κουτί Ξεμπλοκάρισμα (Unblock). Περισσότερες πληροφορίες ανατρέξτε στον σύνδεσμο: https://docs.microsoft.com/en-us/deployoffice/security/internet-macros-blocked Σημείωση!: Αυτά τα βήματα ισχύουν μόνο για αρχεία που έχετε εμπιστοσύνη ότι είναι ασφαλή.
Cell Reference με VBA
Αναφορά σε κελί με VBA Η VBA παρέχει πολλούς τρόπους για να αναφέρεστε σε δεδομένα στο Excel. Αυτοί οι τρόποι περιλαμβάνουν τα αντικείμενα Range, Selection, και ActiveCell, την ιδιότητα Cells, και την ιδιότητα Offset. Επιπλέον, μπορείτε να χρησιμοποιήσετε τις ιδιότητες Columns και Rows για πιο εξειδικευμένες αναφορές. Ας δούμε μερικά παραδείγματα για κάθε περίπτωση: Αναφορές με το Αντικείμενο Range: Αναφορά σε ένα συγκεκριμένο κελί: Range(“D22”) → Αναφέρεται στο κελί D22. Αναφορά σε μια περιοχή: Range(“A1:B17”) → Αναφέρεται στην περιοχή από το κελί A1 έως το κελί B17. Αναφορά σε μια ονοματισμένη περιοχή: Range(“TAX”) → Αναφέρεται στην ονοματισμένη περιοχή με όνομα “TAX”. Αναφορά σε ολόκληρη στήλη: Range(“D:D”) → Αναφέρεται σε ολόκληρη τη στήλη D. Αναφορά σε ολόκληρη γραμμή: Range (“3:3”) → Αναφέρεται σε ολόκληρη τη γραμμή 3. Αναφορά σε συγκεκριμένο κελί μέσα σε περιοχή: Range(“A1:B17”).Cells(2, 2) → Αναφέρεται στο κελί της 2ης γραμμής και 2ης στήλης της περιοχής A1:B17, δηλαδή στο κελί B2. Εναλλακτικός τρόπος αναφοράς σε συγκεκριμένο κελί: Range(“A1:B17”).Range(“B2”) → Αναφέρεται επίσης στο ίδιο κελί B2. Αναφορα με Ιδιότητες Χρήση της Ιδιότητας Offset: Μετατόπιση κατά γραμμές και στήλες: Range(“D2”).Offset(2, 1) → Αναφέρεται στο κελί που βρίσκεται 2 γραμμές κάτω και 1 στήλη δεξιά από το κελί D2. Συνδυασμός με ενεργό κελί: ActiveCell.Offset(-1, 1) → Αναφέρεται στο κελί που είναι 1 γραμμή πάνω και 1 στήλη δεξιά από το ενεργό κελί. Ενεργοποίηση κελιού μέσω Offset: ActiveCell.Offset(-1, 1). Activate → Ενεργοποιεί το κελί που είναι 1 γραμμή πάνω και 1 στήλη δεξιά από το ενεργό κελί. Χρήση της Ιδιότητας Cells: Αναφορά σε συγκεκριμένο κελί με χρήση γραμμής και στήλης: Cells(4, 5) → Αναφέρεται στο κελί που βρίσκεται στη 4η γραμμή και 5η στήλη, δηλαδή στο κελί E4. Αναφορές σε Στήλες και Γραμμές: Columns(“D:F”) → Αναφέρεται στις στήλες D, E, και F. Columns(2) → Αναφέρεται στη στήλη B. Rows(2) → Αναφέρεται στη γραμμή 2. Rows(“2:3”) → Αναφέρεται στις γραμμές 2 και 3. Αναφορα με Ενεργό κελί Selection και Ενεργό Κελί: Αναφορά σε κελί μέσα από την τρέχουσα επιλογή: Selection.Cells(3, 4) → Αναφέρεται στο κελί που βρίσκεται στη 3η γραμμή και 4η στήλη της τρέχουσας επιλογής. Αναφορά στο ενεργό κελί: ActiveCell → Αναφέρεται στο κελί που είναι αυτή τη στιγμή ενεργό. Σημαντική Σημείωση: Αποφύγετε τη χρήση των .Select και .Activate, εκτός εάν είναι απολύτως απαραίτητο. Υπάρχουν πιο αποδοτικοί τρόποι για να εισάγετε δεδομένα ή να τροποποιήσετε κελιά χωρίς να χρειάζεται πρώτα να τα επιλέξετε ή να τα ενεργοποιήσετε. Για παράδειγμα, αντί για: Range(“A1”).Select Selection.Value = “Hello” Μπορείτε να χρησιμοποιήσετε απευθείας: Range(“A1”).Value = “Hello” Αυτός ο τρόπος είναι πιο αποδοτικός και καθιστά τον κώδικα πιο καθαρό και γρήγορο.
Δυναμικά αναπτυσσόμενες DrpDown Λίστες. Χωρίς Κενά
Αναπτυσόμενη Λίστα χωρίς κενά από Korina Katsani
DROPDOWNLIST_HYPERLING
Answer your questions Αυτά τα χρόνια που ανεβάζω βίντεο στα Excelakia, έχω λάβει αμέτρητα μηνύματα από εσάς – γεμάτα ευχές, σχόλια και ερωτήσεις για το Excel. Ξέρετε όλοι σας ότι έχω προσπαθήσει να απαντήσω σε κάθε απορία σας όσο πιο αναλυτικά μπορούσα. Τώρα πιστεύω πως ήρθε η στιγμή να μοιραστούμε αυτή τη γνώση και να δημιουργήσουμε έναν χώρο ανοιχτής συζήτησης και συνεργασίας. Σε αυτή την ενότητα, θα ανεβάζω τις πιο συχνές ή ενδιαφέρουσες ερωτήσεις που μου στέλνετε, μαζί με τις λύσεις τους. Σας προσκαλώ να συμμετέχετε ενεργά: σχολιάστε, προτείνετε τη δική σας λύση ή προσθέστε τις παρατηρήσεις σας. Ας δημιουργήσουμε μια κοινότητα όπου μπορούμε να μαθαίνουμε ο ένας από τον άλλον και να εξελισσόμαστε μαζί! Παρακολούθησε το Video για τις DropDown List στο Excel. Η Ερώτηση αφορά το παραπάνω video και η απάντηση είναι μία συνέχεια του Παρακολούθησε εδώ Ερωτηση Θα ήθελα να σας ρωτήσω για την εξαρτημένη αναπτυσσόμενη λίστα, υπάρχει τρόπος να λειτουργήσει για κελιά που περιέχουν συνδέσμους (links); Κατά την εκτέλεση της offset εμφανίζεται μόνο το κείμενο (text to display) χωρίς την ιδιότητα του συνδέσμου. Απαντηση Η εξαρτημένη αναπτυσσόμενη λίστα στο Excel μπορεί να λειτουργήσει μόνο με κανονικά κείμενα. Στις αναπτυσσόμενες λίστες, το Excel μπορεί να εμφανίσει μόνο το κείμενο και όχι το hyperlink (δηλαδή, δεν διατηρεί τη σύνδεση). Αυτό συμβαίνει επειδή ένας υπερσύνδεσμος στο Excel αποτελείται από δύο βασικά χαρακτηριστικά: το URL και το friendly_name (δηλαδή το εμφανιζόμενο κείμενο). Ο τύπος HYPERLINK έχει τη μορφή HYPERLINK(url, [friendly_name]), Το Excel να απαιτεί το URL για να δημιουργήσει έναν έγκυρο υπερσύνδεσμο. Παρακάτω θα βρείτε μερικές λύσεις για να αντιμετωπίσετε αυτόν τον περιορισμό. Τι μπορείς να κάνεις όμως για να το αντιμετωπίσεις ; Λύση 1: Δημιουργία Πίνακα με Χρήση του VLOOKUP και της Συνάρτησης HYPERLINK Βήματα Δημιουργήστε έναν πίνακα με δύο στήλες, όπου η πρώτη στήλη περιέχει το friendly_name και η δεύτερη το URL. Στην στήλη όπου θέλετε να δημιουργηθεί ο υπερσύνδεσμος, χρησιμοποιήστε τον εξής τύπο: =IFNA(HYPERLINK(VLOOKUP(B2;H8:I18;2;0);B2);””)) B2: Το κελί με την αναπτυσσόμενη λίστα. H8:I18 : Ο πίνακας που περιέχει το friendly_name και τα URL. Με αυτόν τον τρόπο, κάθε φορά που επιλέγετε μια τιμή από την αναπτυσσόμενη λίστα στο κελί B2, η διπλανή στήλη θα εμφανίζει τον υπερσύνδεσμο. Λύση 2: Χρήση VBA για Αυτόματη Δημιουργία Υπερσυνδέσμων Για να κάνετε τα πράγματα πιο δυναμικά, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα VBA, ώστε να δημιουργούνται αυτόματα υπερσύνδεσμοι κάθε φορά που επιλέγετε μια τιμή από την αναπτυσόμενη λίστα. Βήματα Κάντε δεξί κλικ στην καρτέλα του φύλλου όπου βρίσκεται η αναπτυσσόμενη λίστα και επιλέξτε View Code. Επικολλήστε τον παρακάτω κώδικα στο παράθυρο VBA που εμφανίζεται: Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range Dim linkAddress As String Dim lookupRange As Range Dim foundCell As Range ‘ Ορισμός του εύρους που περιέχει τον πίνακα (friendly_name και URL) Set lookupRange = Me.Range(“G9:H18”) ‘ Έλεγχος αν η αλλαγή έγινε στα κελιά B2:B99 If Not Intersect(Target, Me.Range(“B2:B99”)) Is Nothing Then ‘ Επανάληψη για κάθε κελί που αλλάχθηκε στην περιοχή For Each cell In Target ‘ Έλεγχος αν το κελί δεν είναι κενό If Not IsEmpty(cell.Value) Then ‘ Αναζήτηση του friendly_name στο lookupRange Set foundCell = lookupRange.Columns(1).Find(cell.Value, LookIn:=xlValues, LookAt:=xlWhole) ‘ Αν βρεθεί το friendly_name, τότε πάρε τη διεύθυνση URL από τη διπλανή στήλη If Not foundCell Is Nothing Then linkAddress = foundCell.Offset(0, 1).Value Else linkAddress = “” End If ‘ Διαγραφή υπάρχοντος υπερσυνδέσμου στο συγκεκριμένο κελί If cell.Hyperlinks.Count > 0 Then cell.Hyperlinks.Delete End If ‘ Δημιουργία υπερσυνδέσμου αν υπάρχει έγκυρο linkAddress If linkAddress <> “” Then Me.Hyperlinks.Add Anchor:=cell, Address:=linkAddress, TextToDisplay:=cell.Value End If End If Next cell End If End Sub Κλείστε το παράθυρο VBA και αποθηκεύστε το αρχείο ως .xlsm (Excel Macro-Enabled Workbook) για να διατηρήσετε την ενεργοποίηση του κώδικα. Με αυτόν τον κώδικα, κάθε φορά που εισάγετε ή επιλέγετε ένα friendly_name (π.χ., “Diesel Discovery”) στην περιοχή B2 από την αναπτυσσόμενη λίστα, δημιουργείται αυτόματα ένας υπερσύνδεσμος βασισμένος στην αντίστοιχη URL από τον πίνακα G9:H18 Κατεβάστε το αρχείο με την παραπάνω λύση από εδώ Πατήστε εδώ Συχνές Ερωτήσεις Εδώ είναι τρεις συχνές ερωτήσεις για τις αναπτυσσόμενες λίστες (dropdown lists) στο Excel, μαζί με σύντομες απαντήσεις: Πώς μπορώ να δημιουργήσω μια αναπτυσσόμενη λίστα στο Excel; Για να δημιουργήσετε μια αναπτυσσόμενη λίστα στο Excel: Επιλέξτε το κελί ή τα κελιά όπου θέλετε να εμφανίζεται η λίστα. Μεταβείτε στην καρτέλα Data (Δεδομένα) και επιλέξτε Data Validation (Επικύρωση Δεδομένων). Στο παράθυρο Data Validation, στην επιλογή Allow (Να επιτρέπεται), επιλέξτε List (Λίστα). Στο πεδίο Source (Προέλευση), εισάγετε τις τιμές που θέλετε να εμφανίζονται στη λίστα, χωρισμένες με κόμμα, ή επιλέξτε ένα εύρος κελιών που περιέχει τις τιμές. Πατήστε OK για να ολοκληρώσεΠερισσότερες λεπτομέριες στο video μου στα excelakia “Drop-down list Αναπτυσσόμενες λίστες στο Excel“ Πώς μπορώ να δημιουργήσω εξαρτημένες αναπτυσσόμενες λίστες (dependent dropdown lists); Οι εξαρτημένες αναπτυσσόμενες λίστες εμφανίζουν διαφορετικές επιλογές, ανάλογα με την τιμή που επιλέγεται σε μια άλλη λίστα: Δημιουργήστε τις κύριες επιλογές σας (π.χ., Κατηγορίες) σε μια στήλη και τις υποκατηγορίες σε άλλες στήλες, ομαδοποιημένες με βάση τις κατηγορίες. Ονομάστε το κάθε εύρος τιμών των υποκατηγοριών με βάση την αντίστοιχη τιμή της κύριας λίστας (π.χ., ονομάστε το εύρος των τιμών για την κατηγορία “Φρούτα” ως “Φρούτα”). Στη δευτερεύουσα λίστα, χρησιμοποιήστε τη συνάρτηση INDIRECT στο πεδίο Source στην Data Validation για να ανατρέξει στη δευτερεύουσα λίστα. Για παράδειγμα, αν το κύριο κελί είναι B2, στο πεδίο Source εισάγετε =INDIRECT(B2). Περισσότερες λεπτομέριες στο σχετικό video στα excelakia “Πως να δημιουργήσετε εξαρτημένη Αναπτυσσόμενη λίστα στο Excel“ Πώς μπορώ να δημιουργήσω αναπτυσσόμενες λίστες με δυναμικές τιμές που ενημερώνονται αυτόματα; Για να δημιουργήσετε μια αναπτυσσόμενη λίστα που ενημερώνεται αυτόματα όταν προστίθενται νέες τιμές: Δημιουργήστε μια δυναμική περιοχή (dynamic range) χρησιμοποιώντας πίνακες του Excel . Επιλέξτε το εύρος των τιμών και μεταβείτε στην καρτέλα Insert > Table για να το μετατρέψετε σε πίνακα (ctrl+T). Οι πίνακες του Excel επεκτείνονται αυτόματα όταν προσθέτετε νέες τιμές. Στη συνέχεια, χρησιμοποιήστε το όνομα του πίνακα ή της στήλης στον πίνακα ως Source (Προέλευση) στην Data Validation. Για παράδειγμα, αν ονομάσετε την περιοχή ως “list_items”, στο πεδίο Source εισάγετε =list_items.
Στρογγυλοποίηση στο Excel (Round)
Μάθε πώς να χρησιμοποιείς τις λειτουργίες στρογγυλοποίησης στο Excel. Παραδείγματα και συμβουλές για τις συναρτήσεις ROUND, ROUNDUP, ROUNDDOWN, MROUND, CEILING, FLOOR, TRUNC και INT.