Μικρά και ίσως χρήσιμα

(1) Η συνάρτηση UPPER για ελληνικούς χαρακτήρες.
Η συνάρτηση UPPER δεν επιδρά στα τονισμένα κεφαλαία ελληνικά γράμματα.Έτσι το κείμενο: « Ένα το χελιδόνι και η Άνοιξη ακριβή» θα το μετατρέψει σε « ΈΝΑ ΤΟ ΧΕΛΙΔΟΝΙ ΚΑΙ Η ΆΝΟΙΞΗ ΑΚΡΙΒΗ» με άλλα τονισμένα και άλλα άτονα φωνήεντα. Για να πάρετε όλα τα γράμματα σε κεφαλαία άτονα χρησιμοποιήστε τη UPPER μαζί με την LOWER. Η  =UPPER(LOWER(A1)) θα σας δώσει : «ΕΝΑ ΤΟ ΧΕΛΙΔΟΝΙ ΚΑΙ Η ΑΝΟΙΞΗ ΑΚΡΙΒΗ»
(2) Αντιγραφή ελληνικών.
Αν κατά την διαδικασία της αντιγραφής – επικόλλησης δεν γίνεται σωστά η αντιγραφή των ελληνικών χαρακτήρων (το πρόβλημα εμφανίζεται μερικές φορές, όταν αντιγραφούμε μεταξύ διαφορετικών εφαρμογών), τότε είναι πολύ πιθανό να λυθεί το πρόβλημα, αν πριν αρχίσετε την διαδικασία της αντιγραφής – επικόλλησης, γυρίσετε το πληκτρολόγιο σε ελληνικούς χαρακτήρες.
(3) Αρίθμηση μετά από φιλτράρισμα.
Έχετε μια λίστα (βάση) και  μια στήλη είναι αρίθμηση. Αν θέλετε η αρίθμηση να λειτουργεί και μετά από εφαρμογή φίλτρου στη λίστα σας, τότε χρησιμοποιήστε την συνάρτηση SUBTOTAL για να την δημιουργήσετε. Αν υποθέσουμε ότι η αρίθμηση ξεκινά από το κελί Α2, τότε στο κελί Α2 γράψτε την συνάρτηση:
 =--SUBTOTAL(3;$B$2:B2)
και αντιγράψτε τη  (σύρετε) έως το τέλος της λίστας. Το όρισμα 3 αντιπροσωπεύει την συνάρτηση COUNTA και μετρά τις εγγραφές στη στήλη Β, η οποία είναι και αυτή μια στήλη της  βάσης. Μπορείτε στον τύπο να χρησιμοποιήσετε, αντί για την Β, οποιαδήποτε στήλη της λίστας, διαλέξτε όμως, τη στήλη που δεν περιέχει κενές εγγραφές.
(4) Εικόνες σε σχόλια  (Μόνο για Excel 97-2003)
Με την παρακάτω σύντομη μακροεντολή μπορείτε να δημιουργήσετε ένα εικονογραφημένο σχόλιο.
Sub EikonaSeSxolio()
Dim eikona As String
On Error Resume Next
eikona = Application.GetOpenFilename
With ActiveCell
    .AddComment
    .Comment.Visible = True
    .Comment.Shape.Fill.UserPicture eikona
    .Comment.Shape.Fill.Transparency = 0#
End With
End Sub
Αν στο κελί που θα εισάγετε το σχόλιο με την εικόνα, προϋπάρχει ένα σχόλιο, δεν το σβήνει, αλλά βάζει την εικόνα σαν φόντο. Στην περίπτωση αυτή ίσως να θέλετε η εικόνα να εισαχθεί σαν διαφάνεια, έτσι αυξήστε την τιμή Transparency (παίρνει τιμές από 0.0 έως 1.0 ). Βέβαια, μπορείτε να εισάγετε μια εικόνα σε σχόλιο και χειριστικά: Μορφοποίηση σχολίου > Χρώματα και γραμμές > Γέμισμα, Χρώμα > Εφέ γεμίσματος > Εικόνα > Επιλογή εικόνας κλπ
(5) Ο τύπος της συνάρτησης σε σχόλιο.

Με την παρακάτω ρουτίνα μπορείτε να δημιουργήσετε αυτόματα σχόλια για τα κελιά που περιέχουν συναρτήσεις, και σε κάθε σχόλιο να εμφανίζεται ο τύπος της συνάρτησης. Επιλέξτε την περιοχή που σας ενδιαφέρει (από ένα κελί έως ένα ολόκληρο φύλλο) και τρέξτε την μακροεντολή. Όλα τα κελιά της περιοχής που περιέχουν συνάρτηση (και μόνο αυτά) θα αποκτήσουν εμφανές  σχόλιο με τον τύπο της συνάρτησης. Είναι ένας εναλλακτικός με πλεονεκτήματα τρόπος, να εντοπίσετε τις συναρτήσεις σε ένα φύλλο. Τυχόν προϋπάρχοντα σχόλια στα κελιά με τις συναρτήσεις , θα διαγραφούν.
Sub FormulaInComment()
Dim kelia As Range
Dim keli As Range
Set kelia = Nothing
On Error Resume Next
Set kelia = Intersect(Selection, Selection.SpecialCells(xlCellTypeFormulas, 23))
If kelia Is Nothing Then MsgBox "Δεν υπάρχουν συναρτήσεις στην επιλεγμένη περιοχή": GoTo telos
On Error GoTo 0
kelia.ClearComments
For Each keli In kelia
    keli.AddComment.Visible = True
    keli.Comment.text text:=keli.FormulaLocal
    If keli.HasArray Then keli.Comment.text text:="{" & keli.FormulaLocal & "}"
    keli.Comment.Shape.Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .AutoSize = True
        .Font.Name = "Tahoma"
        .Font.Size = 10
    End With
keli.Select
Next
telos:
End Sub
(6) Καταγραφή σχολίων σε φύλλο.
Με την μακροεντολή CommentsInSheet, όλα τα σχόλια της περιοχής που επιλέξατε καταγράφονται σε ένα νέο φύλλο του βιβλίου σας. Επιλέγετε την περιοχή, (επιλέξτε από ένα κελί έως ένα φύλλο) και τρέξτε την CommentsInSheet. Τότε στο βιβλίο σας θα προστεθεί ένα φύλλο με καταγραμμένα όλα τα σχόλια της περιοχής. Στη στήλη Α θα γραφεί το όνομα του φύλλου, στη στήλη Β η διεύθυνση του κελιού, στην στήλη C το κείμενο του σχολίου και στην στήλη D o συγγραφέας του σχολίου.
Sub CommentsInSheet()
'Προσθέτει στο βιβλίο ένα φύλλο,με όλα τα σχόλια της περιοχής που επιλέξατε.
Dim WS As Worksheet
Dim kelia As Range
Dim keli As Range
Dim CT As String
Dim i As Integer
Set kelia = Nothing
On Error Resume Next
Set kelia = Intersect(Selection, Selection.SpecialCells(xlCellTypeComments))
If kelia Is Nothing Then MsgBox "Δεν υπάρχουν σχόλια στην επιλεγμένη περιοχή": GoTo telos
On Error GoTo 0
Set WS = Sheets.Add
For Each keli In kelia
    i = i + 1
    WS.Cells(i, 1) = keli.Worksheet.Name
    WS.Cells(i, 2) = keli.Address(0, 0)
    CT = Replace(keli.Comment.Text, Chr(10), " ")
    CT = Replace(CT, keli.Comment.Author & ":", "")
    WS.Cells(i, 3) = CT
    WS.Cells(i, 4) = keli.Comment.Author
Next
telos:
End Sub
Η ρουτίνα AllCommentsInSheet κάνει ότι και η προηγούμενη, αλλά για όλα τα σχόλια του βιβλίου. Ανοίξτε το βιβλίο που σας ενδιαφέρει και τρέξτε τη. Όπως και προηγούμενα, ένα νέο φύλλο θα προστεθεί στο βιβλίο με όλα τα σχόλια καταγραμμένα σε μορφή πίνακα στις στήλες Α,Β,C και D του φύλλου.
Sub AllCommentsInSheet()
'Προσθέτει στο βιβλίο ένα φύλλο, με όλα τα σχόλια του βιβλίου.
Dim wks As Worksheet
Dim nwks As Worksheet
Dim comm As Comment
Dim commtext As String
Dim j As Integer
Set nwks = Sheets.Add
For Each wks In ActiveWorkbook.Worksheets
    For Each comm In wks.Comments
        j = j + 1
        nwks.Cells(j, 1) = comm.Parent.Parent.Name
        nwks.Cells(j, 2) = comm.Parent.Address(0, 0)
        commtext = Replace(comm.Text, Chr(10), " ")
        commtext = Replace(commtext, comm.Author & ":", "")
        nwks.Cells(j, 3) = Trim(commtext)
        nwks.Cells(j, 4) = comm.Author
    Next
Next
If j = 0 Then MsgBox "Δεν υπάρχουν σχόλια στο βιβλίο"
End Sub
(7) Αυτόματη μαζική εισαγωγή σχολίων.
Η επόμενη μακροεντολή θα σας βοηθήσει να εισάγετε πολλά μαζί σχόλια σε ένα βιβλίο. Σε ένα νέο φύλλο του βιβλίου εισάγετε: στη στήλη Α το φύλλο στο οποίο θα γραφτεί το σχόλιο, στη στήλη Β τη διεύθυνση του κελιού, και στη στήλη C το κείμενο του σχολίου. Τρέξτε την μακροεντολή από το φύλλο αυτό και τα σχόλια θα δημιουργηθούν γρήγορα και  αυτόματα στα σωστά κελιά. Οι λανθασμένες εγγραφές (σειρές) θα αγνοηθούν. Αν στη στήλη Α έχετε γράψει ένα φύλλο που δεν υπάρχει στο βιβλίο ή στη στήλη Β έχετε γράψει λάθος (ανύπαρκτη) διεύθυνση  κελιού, η μακροεντολή δεν θα διαμαρτυρηθεί, απλά θα αγνοήσει τις σειρές αυτές. Επίσης, αν σε κάποιο από τα κελιά που πρόκειται να εισαχθεί σχόλιο, υπάρχει ήδη ένα, το παλιό σχόλιο θα διατηρηθεί και δεν θα διαγραφεί για να γραφεί το νέο. Η εργασία είναι ταχύτατη, στο υπολογιστή μου είκοσι χιλιάδες  σχόλια εγγραφτήκαν σε περίπου δέκα δευτερόλεπτα.
Αν θέλετε η μακροεντολή, να διαγράφει τα παλιά σχόλια και στη θέση τους να τοποθετεί τα νέα τότε τροποποιήστε την 10η γραμμή του κώδικα ως εξής:
If Not .Comment Is Nothing Then .ClearComments
Sub MakeCommentsFromSheet()
'Προσθέτει σχόλια στο βιβλίο. Τα σχόλια (Όνομα φύλλου, κελί, κείμενο σχολίου)
'έχουν καταγραφεί στις στήλες A,B,C ενός φύλλου, από το οποίο τρέχετε την μακροεντολή.
Dim h As Long
Dim hc As Long
Dim rng As Range
Set rng = ActiveSheet.Range("a:a")
hc = Application.CountA(rng)
On Error Resume Next
For h = 1 To hc
    With Sheets(rng.Cells(h, 1).Value).Range(rng.Cells(h, 2).Value)
    If Not .Comment Is Nothing Then GoTo telos
    .AddComment (rng.Cells(h, 3).Value)
    .Comment.Visible = False
    End With
telos:
Next h
End Sub
                                      (1-7: Παρασκευή, 15 Ιουλίου 2011)
(8)  Το τρίμηνο και το τετράμηνο μιας ημερομηνίας.
Για να υπολογίσετε το τρίμηνο στο οποίο ανήκει μία ημερομηνία, χρησιμοποιήστε έναν από τους παρακάτω τύπους:
=1+INT(0,23*MONTH(A1))
=CHOOSE(MONTH(A1);1;1;1;1;2;2;2;2;3;3;3;3)
=LOOKUP(MONTH(A1);{0;5;9};{1;2;3})
Και για να υπολογίσετε το τετράμηνο, έναν από τους παρακάτω:
=1+INT(0,3*MONTH(A1))
=CHOOSE(MONTH(A1);1;1;1;2;2;2;3;3;3;4;4;4)
=LOOKUP(MONTH(A1);{0;4;7;10};{1;2;3;4})
(9)  Υπολογισμός αριθμητικών πράξεων που έχουν γραφτεί σαν κείμενο. (Α)
Ένα ερώτημα που μου έχει τεθεί πολλές φορές είναι:
«Υπάρχει κάποιος τρόπος στο excel,  να γράφω έναν τύπο, μια αριθμητική πράξη ή παράσταση σε ένα κελί σαν κείμενο, και ο υπολογισμός  της παράστασης να γίνεται  αυτόματα σε ένα άλλο κελί ;  π.χ. στο κελί Α1 να γράψω το κείμενο 5+6*8 και στο κελί Β1 να δω το αποτέλεσμα: 53.  Όταν αλλάξω κάποιον αριθμό ή αλλάξω τον τύπο στο κελί Α1 να ενημερώνεται αυτόματα και το αποτέλεσμα στο κελί Β1»
Πολλοί χρήστες θέλουν, για διαφόρους λόγους,  να είναι ορατές στο φύλλο οι ίδιες οι αριθμητικές πράξεις  ή  οι συναρτήσεις που έγραψαν και όχι μόνο το αποτέλεσμα τους.
Στη κελιά της στήλης Α της εικόνας  βλέπετε διάφορες μαθηματικές πράξεις να έχουν εισαχθεί σαν κείμενο. Δίπλα στα κελιά της στήλης Β βλέπετε τα αποτελέσματα.
Τα σωστά αποτελέσματα  στα κελιά της στήλης Β,  τα υπολόγισε η παρακάτω vba συνάρτηση χρήστη mySum:
Function mySum(keli As String) As Double
Application.Volatile True
keli = WorksheetFunction.Substitute(keli, ",", ".")
keli = WorksheetFunction.Substitute(keli, ";", ",")
keli = WorksheetFunction.Substitute(keli, "\", ",")
mySum = Application.Evaluate(keli)
End Function
Η vba συνάρτηση mySum δέχεται σαν όρισμα μια αριθμητική παράσταση ή τύπο σε μορφή κειμένου (απ΄ ευθείας ή από κελί) και επιστρέφει το αποτέλεσμα του τύπου ή της παράστασης. Όπως βλέπετε στα παραδείγματα η mySum μπορεί να υπολογίσει όλων των μορφών τις πράξεις, τις συναρτήσεις, (και συναρτήσεις χρήστη, παράδειγμα στη σειρά 18), τύπους με αριθμούς ή διευθύνσεις κελιών, ακόμα και κελιών που βρίσκονται σε άλλα (ανοιχτά) βιβλία.
     
(10)   Υπολογισμός αριθμητικών πράξεων που έχουν γραφτεί σαν κείμενο. (Β)
Ένας εναλλακτικός τρόπος για να λύσετε το ίδιο πρόβλημα είναι να εισάγεται ένα καθορισμένο όνομα χρησιμοποιώντας την Excel 4 Macro Functions EVALUATE. Για μια παράσταση που είναι στο κελί Α1 του φύλλου1, εισάγετε και χρησιμοποιήστε το όνομα:
textcalc=EVALUATE(Φύλλο1!$A$1)+0*NOW()
Αν οι παραστάσεις είναι πολλές και βρίσκονται σε μία στήλη (πχ την Α) και θέλετε να δείτε τα αποτελέσματα σε μία άλλη στήλη (πχ την Ε) τότε, με ενεργό το κελί Ε1 εισάγετε το καθορισμένο όνομα:
nameSum =EVALUATE(!Α1)+0*NOW()
Κάθε φορά που εισάγετε σε ένα κελί την συνάρτηση (όνομα) =nameSum, θα υπολογίζει την τιμή της παράστασης που είναι 4 κελιά αριστερά.
Η συνάρτηση 0*NOW() προσθέτει ένα μηδενικό στην παράσταση, άρα δεν της αλλάζει το αποτέλεσμα. Χρειάζεται όμως διότι η NOW() σαν ευμετάβλητη (volatile) συνάρτηση επαναυπολογίζεται σε κάθε μεταβολή του φύλλου και άρα αναγκάζει σε επαναυπολογισμό και τα ονόματα textcalc και nameSum. Αντί της NOW() θα μπορούσατε να χρησιμοποιήσετε   την RAND()  ή την TODAY () επίσης ευμετάβλητες συνάρτησεις.
(11)  Συνάρτηση που επιστέφει τον τύπο μιας συνάρτησης.
H παρακάτω vba συνάρτηση χρήστη δέχεται σαν όρισμα ένα κελί το οποίο περιέχει μία συνάρτηση και επιστρέφει τον τύπο της συνάρτησης σε μορφή κειμένου
Function myEntry(kelli As Range) As String
Application.Volatile True
If kelli.HasFormula Then myEntry = kelli.FormulaLocal
If kelli.HasArray Then myEntry = "{" & kelli.FormulaLocal & "}"
End Function

Λύνει δηλαδή και αυτή το ζητούμενο στο σημείωμα 9, κατά “αντίστροφο” τρόπο. Εισάγετε την αριθμητική πράξη ή την συνάρτηση, κανονικά με ίσον για να επιστρέψει το αποτέλεσμά της, και σε ένα άλλο κελί εισάγετε την myEntry για να σας επιστρέψει τον τύπο της συνάρτησης. (στην εικόνα στήλες Α και Β αντίστοιχα)
                                          (8-11: Παρασκευή, 29 Ιουλίου 2011)
(12) Συμπλήρωση κενών κελιών
Πολλές φορές υπάρχει η ανάγκη να συμπληρωθούν τα κενά μιας στήλης (ή γραμμής) με τις τιμές των πιο πάνω (ή πιο αριστερών) κελιών.  Δέστε τις εικόνες “πριν” και “μετά”.

Αυτό μπορεί να γίνει με μία μακροεντολή ή χειριστικά.
Επιλέξτε την περιοχή στήλη ή γραμμή, στο παράδειγμα Α1:Α24 ή D1:L1 και τρέξτε την μακροεντολή:
Sub FillBlanks()
Dim slctn As Range
Dim blankslctn As Range
Dim ro As Long
Dim co As Long
Set slctn = Selection
slctn.Copy slctn
Set blankslctn = slctn.SpecialCells(xlBlanks)
ro = slctn.Rows.Count
co = slctn.Columns.Count
If (ro > 1 And co > 1) Or (ro = 1 And co = 1) Then Exit Sub
If ro = 1 And co > 1 Then blankslctn.Formula = "=RC[-1]"
If ro > 1 And co = 1 Then blankslctn.Formula = "=R[-1]C"
slctn.Copy
slctn.PasteSpecial (xlValues)
Application.CutCopyMode = False
ActiveCell.Select
End Sub
Αν θέλετε χειριστικά:
1) Επιλέξτε την στήλη (Α1:Α24) ή την γραμμή (D1:L1).
2) Πατήστε το πληκτρολόγιο σας F5.
3) Στην καρτέλα “Μετάβαση σε” που εμφανίζεται επιλέξτε “Ειδικά σε…”, επιλέξτε “Κενά” και “OK”.Στην στήλη (ή γραμμή) είναι τώρα επιλεγμένα τα κενά κελιά με ενεργό το πρώτο κενό.
4) Από το πληκτρολόγιο πατήστε  = (ίσον) και κάντε με το ποντίκι κλικ στο πρώτο μη κενό κελί (στο παράδειγμα των εικόνων Α1 ή D1).
5) Πατήστε Ctrl + Enter και είστε (σχεδόν) έτοιμοι.
Σχεδόν, διότι τα κελιά που συμπληρώθηκαν περιέχουν τύπους και ίσως αυτό δεν το θέλετε. Αντικαταστήστε με τιμές. Επιλέξτε πάλι την στήλη (ή τη γραμμή), δεξί κλικ και “αντιγραφή”, ξανά δεξί κλικ και “ειδική επικόλληση”, “τιμές” και “OK”.
Και η μία και η άλλη μέθοδος είναι κατάλληλες για συμπλήρωση κενών με αριθμούς, κείμενο, ημερομηνίες, αλλά δεν είναι κατάλληλες για συμπλήρωση κενών με συναρτήσεις.
                                                                                                                                                   (12:  Τρίτη, 23 Αυγούστου 2011)
(13) Δημιουργία μετρητή για παραστατικά
Η παρακάτω μακροεντολή είναι μια απλή αλλά ασφαλής λύση για την δημιουργία ενός μετρητή σε ένα έγγραφο (παραστατικό, τιμολόγιο, δελτίο αποστολής, απόδειξη κλπ)  στο οποίο  θέλετε να υπάρχει συνεχής αρίθμηση. Η διαδικασία καλείται μετά από ένα άλλο συμβάν, παράδειγμα  μετά την εκτύπωση του παραστατικού ή μετά την  διαγραφή του η μετά από το συμβάν open κλπ. Φυσικά μπορείτε να καλέσετε την ρουτίνα και χειριστικά από ένα πλήκτρο.
Η μάκρο αποθηκεύει τον αύξοντα αριθμό του εγγράφου σε ένα «καθορισμένο όνομα» και επιστρέφει την τιμή αυξημένη κατά 1. Αν ο αριθμός στο κελί σβηστεί δεν δημιουργείται πρόβλημα διότι έχει αποθηκευτεί η τιμή του κελιού στο όνομα. Αν διαγραφτεί το όνομα πάλι δεν δημιουργείται πρόβλημα διότι η μάκρο δημιουργεί το όνομα σε κάθε κάλεσμά της και συνεχίζει με τον επόμενο αριθμό του κελιού. Πρόβλημα θα έχετε αν σβηστούν ταυτόχρονα το κελί και το όνομα. Αν φοβάστε και αυτή την περίπτωση τότε αλλάξτε στην τελευταία γραμμή του κώδικα την ιδιότητα Visible του ονόματος, από True  σε False και το όνομα θα γίνει …αόρατο .  Η μάκρο εισάγει τον αύξοντα αριθμό στο κελί Α1 του φύλλου “test”.  Προσαρμόστε την διεύθυνση του κελιού και το όνομα του φύλλου στο δικό σας βιβλίο.
Sub meter()
Dim keli As Range
Dim helpmeter As Long
Dim mymeter As Long
Set keli = ActiveWorkbook.Sheets("test").Range("a1")
On Error Resume Next
helpmeter = Evaluate(ActiveWorkbook.Names("helpname").RefersTo)
mymeter = Application.WorksheetFunction.Max(keli, helpmeter)
mymeter = mymeter + 1
keli = mymeter
ActiveWorkbook.Names.Add Name:="helpname", RefersTo:=mymeter, Visible:=True
End Sub
                                             (Παρασκευή, 21 Οκτωβρίου 2011)
(14) Εισαγωγή χρόνου σε διπλανό κελί κατά την πληκτρολόγηση.
Κάθε φορά που πληκτρολογείτε δεδομένα στην περιοχή Α1:Α100, στα αντίστοιχα κελιά Β1:Β100 θέλετε αυτόματα να εμφανίζεται η ώρα ή η ημερομηνία που έγινε η πληκτρολόγηση. Ο λίγος παρακάτω κώδικας κάνει αυτή τη δουλειά για εσάς. Ο κώδικας πρέπει να γραφτεί στην λειτουργική μονάδα του φύλλου, και όχι σε ένα module
Private Sub Worksheet_Change(ByVal Target As Range)
Dim kelia As Range
Dim keli As Range
Set kelia = Range("a1:a100")
Set keli = Intersect(Target, kelia)
If Not keli Is Nothing Then keli(1, 2) = VBA.Time
End Sub
Θυμίζω πως το συμβάν Change δεν ενεργοποιείται όταν τα δεδομένα εισάγονται ή αλλάζουν από μία συνάρτηση ή με αντιγραφή – επικόλληση.
Αλλάξτε στην σειρά 4 τα κελιά A1:A100 κατά τις ανάγκες σας και στη σειρά 6 την συνάρτηση Time σε Date αν θέλετε ημερομηνία και όχι ώρα.
(Τετάρτη,  8 Αυγούστου 2012)

 

(15) Εξαγωγή αριθμητικού τμήματος από αλφαριθμητικό.

Η παρακάτω vba συνάρτηση:
=ExtractNumbers(txt; Ν)
επιστρέφει το αριθμητικό τμήμα, μέρος ή όλο, ενός αλφαριθμητικού. Δέχεται δύο ορίσματα, το αλφαριθμητικό (txt) και έναν ακέραιο N που καθορίζει πιο τμήμα του αριθμού θέλετε. Αν Ν=0 θα επιστραφεί όλο το αριθμητικό τμήμα, το ίδιο αν Ν=-1, αλλά κάθε τμήμα διαχωρισμένο με παύλα. Οι αριθμοί επιστρέφουν σαν κείμενο, αν θέλετε να επιστραφούν σαν αριθμοί, γράψτε τη συνάρτηση έτσι:
=--ExtractNumbers(txt; Ν)
Για αλφαριθμητικά που δεν περιέχουν αριθμούς, η συνάρτηση επιστρέφει το σφάλμα #ΤΙΜΗ!  Το ίδιο σφάλμα θα επιστρέψει αν ορίσετε Ν μεγαλύτερο από το πλήθος των αριθμητικών τμημάτων. Στην εικόνα βλέπετε στη στήλη Β, τι επιστρέφει η συνάρτηση για το αλφαριθμητικό του κελιού Α1, για τις διάφορες τιμές του ορίσματος Ν (κελιά Α4:Α12).
ExtractNumbers

ExtractNumbers

Ο κώδικας για τη συνάρτηση:
Function ExtractNumbers(txt As String, Optional n As Integer = 0) As String
'από το Excel-Λύσεις
Application.Volatile True
Dim numArr As Variant
Dim keno As String
Dim chr As String
Dim i As Integer
keno = ChrW(32)
'Αντικατάσταση όλων των μη αριθμητικών χαρακτήρων με το κενό
For i = 1 To Len(txt)
    chr = Mid(txt, i, 1)
    If Not IsNumeric(chr) Then txt = Replace(txt, chr, keno)
Next
'Διαγραφή όλων των άχρηστων κενών (συνολικό Trim)
txt = Trim(txt)
    Do Until InStr(txt, keno & keno) = 0
txt = Replace(txt, keno & keno, keno)
Loop
'Δημιουργία πίνακα με τους αριθμούς
numArr = Split(txt, keno)

Select Case n
Case -1: ExtractNumbers = Join(numArr, "-")
Case 0: ExtractNumbers = Join(numArr, "")
Case Else: ExtractNumbers = numArr(n - 1)
End Select
End Function

 

(16) Συνένωση πολλών κελιών σε ένα.

Αν γράψετε σε ένα κελί την συνάρτηση:
=JoinCells(A1:A20;",")
θα σας επιστρέψει το περιεχόμενο όλων των κελιών της περιοχής Α1:Α20 διαχωρισμένα με ένα κόμμα. Όσα κελιά στην περιοχή Α1:Α20 είναι κενά θα αγνοούνται. Μόλις κάποιο από αυτά συμπληρωθεί , το περιεχόμενό του θα εμφανιστεί στη συνάρτηση.
JoinCells

JoinCells

Η vba συνάρτηση JoinCells(kelia; delimiter) δέχεται δύο ορίσματα: kelia που είναι η περιοχή (στήλη, γραμμή, ορθογώνια περιοχή, συνένωση διαφόρων περιοχών στο ίδιο ή σε άλλο φύλλο), η οποία περιέχει τα κελιά που θέλετε να συνενώσετε. Η συνάρτηση αγνοεί τα κενά κελιά (όσο αυτά είναι κενά) που θα συναντήσει στην περιοχή. Delimiter  είναι το διαχωριστικό της αρεσκείας σας και το οποίο θα γράψετε μέσα σε εισαγωγικά.Αν η περιοχή αποτελείται από διάφορες μικρότερες, γράψτε μέσα σε παρένθεση τις περιοχές, έτσι:
=JoinCells((A1:A22;C1:H1;I12:M20);",")
Μπορείτε να συντάξετε τη συνάρτηση και ως έξης:
Δώστε στα μεταβαλλόμενα δεδομένα σας ένα δυναμικό όνομα πχ
mydata = OFFSET(Φύλλο1!$a$1;0;0;COUNTA(Φύλλο1!$a:$a);1)
και γράψτε την συνάρτηση έτσι:
=JoinCells(mydata;",")
Ή τέλος, ορίστε την στήλη σαν πίνακα και χρησιμοποίησε το όνομα του πίνακα:
=JoinCells(Πίνακας1;",")
JoinCells_02

JoinCells

Ο κώδικας για την συνάρτηση:
Function JoinCells(kelia As Range, delimiter As String) As String
'από το Excel-Λύσεις
Dim meter As Long
Dim j As Long
Dim keli As Range
Dim Varr As Variant
meter = Application.CountA(kelia)
ReDim Varr(meter - 1)
For Each keli In kelia
If Not VBA.IsEmpty(keli) Then
j = j + 1
Varr(j - 1) = keli.Text
End If
Next keli
JoinCells = Join(Varr, delimiter)
End Function

 

317 Responses to Μικρά και ίσως χρήσιμα

  1. Ο/Η Μάριος λέει:

    Γιάννη γεια σου θα μπω κατευθείαν στο θέμα. Έχω δύο στήλες η μία με ημερομηνίες και η άλλη στήλη με οποιεσδήποτε τιμές. Θέλω να επιλέγω τον μήνα (ή αν δεν γίνεται να επιλέγω την μικρότερη και την μεγαλύτερη ημερομηνία του μήνα σε δύο κελιά π.χ: από ….. εως……) που περιλαμβάνονται οι αντίστοιχες ημερομηνίες(όσες και αν είναι εννοείται λιγότερες από 30 ή 31) και να εντοπίζονται και να αθροίζονται οι αντίστοιχες τιμές της διπλανής στήλης και να έχω το αποτέλεσμα. Ευχαριστώ και περιμένω τις πολύτιμες συμβουλές σου.

  2. Ο/Η vioannis λέει:

    Μάριε
    Υποθέτω ότι οι ημερομηνίες είναι στη περιοχή Α1:Α5000 και τα αντίστοιχα ποσά στην Β1:Β5000.
    (1) Για να βρεις το άθροισμα των τιμών ενός μήνα :

      =SUMPRODUCT(B1:B5000*(MONTH(A1:A5000)=1)*(YEAR(A1:A5000)=2012)) 

    Ο τύπος αυτός θα επιστρέψει το άθροισμα των τιμών της στήλης Β που αντιστοιχούν στις ημερομηνίες του Ιανουάριου 2012. Για Φεβρουάριο =2 κλπ.
    Μπορείς τις τιμές για μήνα και έτος να τις δίνεις από κελιά πχ D1 για το μήνα και D2 για το έτος και ο τύπος γίνεται:

     =SUMPRODUCT(B1:B5000*(MONTH(A1:A5000)=D1)*(YEAR(A1:A5000)=D2)) 

    Αν οι ημερομηνίες στη στήλη Α είναι μόνο ενός έτους τότε μπορείς να παραλήψεις το έτος (YEAR) από τους τύπους:

     =SUMPRODUCT(B1:B5000*(MONTH(A1:A5000)=1)) 

    (2) Για να βρεις το άθροισμα των τιμών της στήλης Β που αντιστοιχούν μεταξύ 2 ημερομηνιών, πχ μεταξύ 5/1/2012 και 21/3/2012 :
    Αν τις τιμές αυτές (ημερομηνίες) τις δίνεις από κελιά (Ε1 και Ε2 αντίστοιχα):

    =SUMPRODUCT(B1:B5000*(A1:A5000>=E1)*(A1:A5000<=E2)) 

    Αν τις τιμές αυτές (ημερομηνίες) τις γράφεις απευθείας στους τύπους :

     =SUMPRODUCT(B1:B5000*(A1:A5000>=DATE(2012;1;5))*(A1:A5000<=DATE(2012;3;21))) 

    Ή

    =SUMPRODUCT(B1:B5000*(A1:A5000>=DATEVALUE("5/1/2012"))*(A1:A5000<=DATEVALUE("21/3/2012"))) 

    Πρόσεχε όλες οι ημερομηνίες να έχουν εισαχθεί σαν ημερομηνίες και όχι σαν κείμενο.
    Για να βεβαιωθείς για αυτό έλεγξε τα κελιά που περιέχουν ημερομηνίες με την συνάρτηση =ISNUMBER, πρέπει να επιστρέφουν TRUE.
    Ελπίζω να σε κάλυψα, αν όχι , επανέρχεσαι.

  3. Ο/Η Μάριος λέει:

    Γιάννη η βοήθειά σου ήταν πολύτιμη και σ’ ευχαριστώ πάρα πολύ.
    Με φιλικούς χαιρετισμούς Μάριος!!!!!

  4. Ο/Η Μάριος λέει:

    Γιάννη καλησπέρα όπως σου ανέφερα και στην προηγούμενη επικοινωνία μας η βοήθειά σου ήταν και είναι πολύτιμη και σου εκφράζω τα συγχαρητήριά μου για την μεγάλη σου προσπάθεια και την απέραντη υπομονή που έχεις. Όσοι ασχολούνται ξέρουν να εκτιμούν τις προσπάθειες κάποιων Ανθρώπων. Και πάλι συγχαρητήρια!!! Μέσα σε όλα αυτά να σου θέσω έναν ακόμα προβληματισμό μου. Λοιπόν Γιάννη θέλω σε ένα οποιοδήποτε κελί στο excel να πληκτρολογώ μια οποιαδήποτε τιμή (συνήθως ακέραιος αριθμός) αλλά ταυτόχρονα στο ίδιο κελί να προστίθεται μια οποιαδήποτε τιμή που θα πληκτρολογώ από άλλο κελί της επιλογής μου.π.χ: Στο Α1 πληκτρολογώ τον αριθμό 500 και στο Β1 τον αριθμό 100 μπορεί στο κελί Α1 να μου δείξει το άθροισμα 600; ή κάθε φορά που αλλάζω την τιμή στο Α1 από τίποτα έως οποιονδήποτε αριθμό να μου αθροίζει ότι υπάρχει στο Α1 + ότι υπάρχει στο Β1;Γίνεται αυτό ή είναι ουτοπία; ευχαριστώ και θα περιμένω τις συμβουλές σου. Να σου υπενθυμίσω ότι στο φύλλο που θέλω να γίνεται αυτό υπάρχουν αρκετά κελιά με συναρτήσεις και το φύλλο αυτό συνδέεται με άλλα φύλλα του ίδιου βιβλίου του excel.

  5. Ο/Η vioannis λέει:

    Φίλε Μάριε.
    Μία λύση (;) είναι στο κελί Α1 να γράψεις τον τύπο =0+b1, και να αλλάζεις κάθε φορά την τιμή μηδέν από την γραμμή των τύπων. Όχι πολύ εύχρηστο. Δεν μπορώ να σκεφτώ κάτι άλλο που να μην δημιουργεί (επικίνδυνες) κυκλικές αναφορές.
    Για τα πολύ θετικά σχόλια σου σε ευχαριστώ πολύ.

  6. Ο/Η Μάριος λέει:

    Γιάννη συγνώμη που επανέρχομαι στο προηγούμενο θέμα αλλά (δεν ξέρω αν είναι εφικτό) μήπως θα μπορούσε να γίνει μέσω κάποιας μακροεντολής; ευχαριστώ εκ των προτέρων για τον χρόνο που αφιερώνεις. Με φιλικούς χαιρετισμούς Μάριος.

  7. Ο/Η vioannis λέει:

    Μάριε, δοκίμασε την παρακάτω κώδικα τον οποίο δεν θα γράψεις σε κάποιο module του βιβλίο, αλλά στο VBA Project του βιβλίου διάλεξε το φύλλο που σε ενδιαφέρει και εκεί γράφεις τον κώδικα:

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim a
    On Error Resume Next
    If Target = Range("a1") Then
        If Range("a1").HasFormula Then GoTo telos
        a = Range("a1").Value
        Range("a1").Formula = "=" & a & "+b1"
    End If
    telos:
    On Error GoTo 0
    End Sub
    

    Κάθε φορά που εισάγεις μία τιμή στο κελί Α1 πχ 500, αυτόματα η τιμή του κελιού αλλάζει και γίνεται =500+Β1. Έτσι αμέσως θα βλέπεις στο κελί Α1 το άθροισμα του αριθμού που μόλις πληκτρολόγησες και του αριθμού του Β1. Η μακροεντολή ενεργοποιείτε μόνο αν πληκτρολογήσεις μια τιμή (αριθμό) στο κελί Α1 αυτού του φύλλου. Οτιδήποτε και να κάνεις στα άλλα κελιά του φύλλου ή στα άλλα φύλλα δεν ενεργοποιείται. Επίσης δεν ενεργοποιείται αν στο κελί Α1 εισάγεις συνάρτηση. Αν εισάγεις κείμενο θα πάρεις σφάλμα. Η μάκρο είναι γραμμένη για ένα κελί. Αν θες τη δυνατότητα αυτή για περισσότερα κελία, πρέπει να γραφτεί διαφορετικά Δες τη να δουλεύει στο βιβλίο: changeA1test

  8. Ο/Η sofia λέει:

    Γεια, μηπως υπαρχει εντολη οπου να βαζω την ημερομηνια με αριθμους πχ 29/11/2013 σ ενα κελι και να μου βγαζει σε αλλο κελι την ημερα πχ Παρασκευη.

  9. Ο/Η vioannis λέει:

    Ναι Σοφία, η συνάρτηση:

      =TEXT(A1;"ηηηη") 

    όπου Α1 είναι το κελί με την ημερομηνία.
    Αν δεν δουλεύεις σε ελληνικό excel, δοκίμασε:

      =TEXT(A1;"dddd") 
  10. Ο/Η sofia λέει:

    ευχαριστω

  11. Ο/Η Ioannis λέει:

    Γιάννη Καλησπερα
    Εχω ενα φυλλο εξελ με διαφορα δεδομενα και στην τελευταια στήλη εχω διαφορετικές τιμές προιόντων…
    Θελω να αλλάξω τις τιμές (σε όλη τη στηλη) και να προσθεσω π.χ. 4 ευρώ σε όλη τη στηλη, ωστε οι τελικές τιμές να προκύπτουν αθροιστικά με 4 ευρώ επιπλέον …(π.χ. Παλια τιμή 100 ευρώ + 4 ευρώ = Νεα τιμή 104 Ευρω).
    Γινεται ομαδικώς αυτό σε όλη τη στήλη ή θα πρεπει να τα προσθεσω ενα ενα ?

    Ευχαριστώ πολύ

  12. Ο/Η vioannis λέει:

    Συνονόματε Ιωάννη
    1) Γράψε σε ένα οπουδήποτε άδειο κελί τον αριθμό 4
    2) Επίλεξε το κελί αυτό, και πάτα το κουμπί της αντιγραφής στο κεντρικό μενού (ή δεξί κλικ και αντιγραφή)
    3) Επιλέγεις με το ποντίκι όλη την τελευταία στήλη που σε ενδιαφέρει, δεξί κλικ, ειδική επικόλληση, και στην καρτέλα που θα εμφανιστεί τσεκάρεις ΟΛΑ και ΠΡΟΣΘΕΣΗ, πατάς ΟΚ και τελείωσες.
    4) Διάγραψε το 4 του πρώτου βήματος, είναι πια άχρηστο.

  13. Ο/Η Ioannis λέει:

    Ιωαννη σ ευχαριστω πολύ για τη βοΉθεια !

  14. Ο/Η john λέει:

    Γεια σας, έχω το εξής πρόβλημα:
    Έχω μια στήλη όπου συμπληρώνω διάφορες αριθμητικές τιμές.
    Η στήλη αυτή συνεχώς μεταβάλλεται.
    Πολλά από τα κελιά της στήλης αυτής, ενδιάμεσα των συμπληρωμένων κελιών, δεν περιέχουν δεδομένα (κενά κελιά)
    Θέλω να δημιουργήσω ένα δυναμικό διάγραμμα sparkline-γραμμή σε ένα κελί, το οποίο θα μεταβάλλεται συνεχώς αυτόματα, ανάλογα των μεταβολών της στήλης που συμπληρώνω.
    Στο διάγραμμα sparkline-γραμμή όμως που θέλω να δημιουργήσω, δεν θέλω να διακρίνονται τα κενά κελιά με κανέναν τρόπο (δηλαδή ακόμα και με ασυνέχεια της γραμμής του διαγράμματος), αλλά να διακρίνονται τα συμπληρωμένα μόνο κελιά.
    Υπάρχει λύση για αυτό;

    Δηλαδή από ένα εύρος περιοχής (πχ Α1:Α500) πως μπορώ να παραβλέψω αυτόματα κελιά;

    Σημ: η χρήση αυτόματου φίλτρου αποκλείεται.

    Περιμένω για την βοήθειά σας, ευχαριστώ…….

  15. Ο/Η vioannis λέει:

    Να σημειώσουμε για τους φίλους του ιστολογίου ότι τα sparklines είναι μικρά γραφήματα που χωρούν και σε ένα συνηθισμένο κελί και αναπαριστούν τις μεταβολές μιας σειράς αριθμών, όπως ακριβώς και ένα κανονικό γράφημα. Κατασκευάζονται πολύ εύκολα και φιλοδοξούν να δώσουν μια γρήγορη εποπτική εικόνα σε μια σελίδα που υπάρχουν πολλοί αριθμοί. Υπάρχουν από την έκδοση 2010 του excel και μετά.
    Πιο πολλά μπορείτε να διαβάσετε εδώ:
    http://office.microsoft.com/el-gr/excel-help/HA010354892.aspx?CTT=1
    Ερώτηση: Πως, άραγε, θα αποδίδαμε στα ελληνικά τη λέξη sparkline , νανόγραφημα; , μικροϊστόγραμμα;
    Λοιπόν,
    Ας υποθέσουμε ότι τα αριθμητικά δεδομένα σου είναι στη στήλη Β του Φύλλου2 και ξεκινούν από το κελί Β1 και σήμερα φτάνουν στο Β100, με κάποια κενά ίσως ανάμεσα τα οποία πιθανά να αλλάξουν, αλλά προβλέπεται στο μέλλον η στήλη να επεκταθεί και να φτάσει έως το Β999
    Πρώτα εισάγεις στο βιβλίο σου το καθορισμένο όνομα: mymax με τύπο:

    =MAX(N(Φύλλο2!$B$1:$B$999<>"")*ROW(Φύλλο2!$B$1:$B$999))
    

    Αυτή η συνάρτηση -όνομα επιστρέφει τον αριθμό γραμμής του τελευταίου (του πιο κάτω) κελιού της στήλης Β που δεν είναι κενό κάθε στιγμή
    Τώρα εισάγεις ένα ακόμα όνομα: mydata με τύπο:

    =OFFSET(Φύλλο2!$B$1;0;0;mymax;1)
    

    Αυτή επιστρέφει όλο το εύρος της χρησιμοποιημένης στήλης Β μαζί με τα κενά ανάμεσα.
    Αν σήμερα ο τελευταίος αριθμός είναι στο κελί Β72 επιστρέφει τη στήλη Β1:Β72. Αν αύριο φτάσεις στο Β456, η mydata θα επιστρέψει Β1:Β456 (Είναι γεννημένη κατάσκοπος!)
    Σημείωσε ότι και τα δύο ονόματα πρέπει να έχουν εύρος όλο το βιβλίο.
    Τώρα φτιάξε το sparkline όπως ξέρεις με τη διαφορά ότι εκεί που σου ζητά περιοχή δεδομένων εσύ θα γράψεις mydata. Με τον τρόπο αυτό το sparkline γίνεται απόλυτα δυναμικό και ενσωματώνει αυτόματα και εμφανίζει όλες τις αλλαγές και επεκτάσεις της στήλης Β.
    Για το άλλο θέμα της μη εμφάνισης των κενών δίνει λύση το ίδιο το excel αλλά μόνο για γραμμές, όχι για κολώνες.
    Επιλέγεις το sparkline και στο μενού “Εργαλεία γραφήματος sparkline” που εμφανίζεται, επιλέγεις “ Σχεδίαση” μετά «Επεξεργασία δεδομένων» μετά “Με απόκρυψη & άδεια κελιά” και στην καρτέλα “Ρυθμίσεις κενών κελιών” τσεκάρεις “Σύνδεση σημείων δεδομένων με γραμμή” και ΟΚ.

  16. Ο/Η Σοφία λέει:

    Γεια,
    θέλω να μάθω πως μπορώ να βάζω ενα αριθμό σε ένα κελί και στο δίπλα να μου βγάζει το όνομα που αντιστοιχει ή το αντίθετο. πχ να έχω σε 2 στήλες : 123 κώστας
    654 Μαρία
    και σε άλλη στήλη να γράφω τον αριθμό (123) ή το όνομα(κώστας) και να μου βγάζει στο δίπλα κελί το αντίστοιχο όνομα(κώστας) ή αριθμό(123).
    ευχαριστώ

  17. Ο/Η vioannis λέει:

    Σοφία, το πρώτο πρόβλημα το λύνει η συνάρτηση vlookup. Δες τη συζήτηση που είχα με την Στεφανία στις 23/12/2013 στη σελίδα About. Το αντίστροφο πρόβλημα είναι ένα “αριστερό vlookup” Δες στο θέμα του ιστολογίου: “Ένας πρωτότυπος τόπος χρήσης της συνάρτησης CHOOSE και οι εφαρμογές του” την παράγραφο ΑΡΙΣΤΕΡΟ VLOOKUP. Δεν χρειάζεται να διαβάσεις όλο το άρθρο, μόνο την παράγραφο αυτή. Δες επίσης την βοήθεια της Microsoft για την vlookup, εδώ.

  18. Ο/Η Γιάννης λέει:

    Καλημέρα.
    Έχω δυο αρχεία excel το ένα με υλικά και το barcode τους και το άλλο με το παλιό και το καινούριο barcode των υλικών(αλλά είναι πολλά περισσότερα από αυτά που χρησιμοποιώ). Θέλω να δημιουργήσω μια καινούρια στήλη στο αρχείο με τα υλικά που να περιέχει τα καινούρια barcode.Δηλαδή να κάνει αναζήτηση στο δεύτερο αρχείο να βρει τα υλικά μου και να μου περάσει στο πρώτο τα καινούρια barcode.
    Ευχαριστώ.

  19. Ο/Η vioannis λέει:

    Έτσι περιληπτικά που τα λες, η απάντηση είναι, με τη συνάρτηση VLOOKUP.
    Δες ένα παράδειγμα, για να το προσαρμόσεις στο πρόβλημα σου.
    Έχεις ένα excel βιβλίο που λέγεται ΠΑΛΑΙΟ.xls και το οποίο στο Φύλλο1 στη στήλη Α έχει υλικά: Υλικό_01, Υλικό_02, Υλικό_03, … και στη στήλη Β έχει παλαιά barcode: OldBC_01, OldBC_02, OldBC_03,….
    Έχεις ακόμα ένα excel βιβλίο που λέγεται ΝΕΟ.xls που και αυτό στη στήλη Α έχει υλικά (όχι απαραίτητα ίδια και με την ίδια σειρά του που είναι στο ΠΑΛΑΙΟ.xls) και στη στήλη Β έχει αντίστοιχα τα νέα barcode των υλικών αυτών.
    Θέλεις στο βιβλίο ΠΑΛΑΙΟ.xls να περάσεις τα νέα barcode, μόνο όσων υλικών υπάρχουν στο ΠΑΛΑΙΟ.xls
    Αν έτσι έχουν τα πράγματα, άνοιξε και τα δύο αυτά βιβλία και σε μία κενή στήλη του ΠΑΛΑΙΟ.xls, ας πούμε στην C, γράψε τη συνάρτηση:

     
    =VLOOKUP(A1;'[ΝΕΟ.xls]Φύλλο1'!$A$1:$B$1000;2;FALSE)
     

    αντίγραψέ την προς τα κάτω όσο χρειάζεται και θα δεις να εμφανίζονται τα νέα barcode.
    Αν είσαι σε excel 2007 και νεότερο το επίθεμα .xls στο τύπο θα είναι .xlsx και αν το βιβλίο περιέχει μακροεντολές θα είναι .xlsm. Πρόσεχε στον τύπο τα δύο μονά εισαγωγικά

     ' 

    πριν το άνοιγμα της αγκύλης και πριν το θαυμαστικό.
    Όταν ολοκληρώσεις, αντικατέστησε τους τύπους της στήλης C με αξίες. (Επιλέγεις όλη τη στήλη C, δεξί κλικ, αντιγραφή, δεξί κλικ, ειδική επικόλληση, Τιμές και ΟΚ).

  20. Ο/Η Nikos λέει:

    Καλησπέρα, βλέπω αρκετά προχωρημένα πράγματα.Συγχαρητήρια για τη σελίδα, είναι εξαιρετικά χρήσιμη.
    Θα ήθελα να κάνω την εξής ερώτηση:
    Σε ένα αρχείο δεδομένων υπάρχουν κάποιες γραμμές που είναι κενές. Υπάρχει δυνατότητα να διαγράψω αυτόματα αυτές τις γραμμές;
    Ευχαριστώ εκ των προτέρων

  21. Ο/Η vioannis λέει:

    Νίκο,
    Πρώτη περίπτωση: Τα δεδομένα σου είναι σε μία μόνο στήλη και θέλεις να διαγράψεις όλα τα ενδιάμεσα σκόρπια κενά κελιά της στήλης, με μιας, τότε:
    Α)Επίλεξε τα δεδομένα
    Β) Πάτα F5
    Γ) Στην καρτέλα “Μετάβαση σε” που θα εμφανιστεί, πάτα “Ειδικά σε” και στη νέα καρτέλα τσεκάρισε “Κενά” και πάτα ΟΚ
    Δ) Όπως τώρα είναι επιλεγμένα μόνο τα κενά κελιά της στήλης, στο κεντρικό μενού διάλεξε “Διαγραφή” και στη συνέχεια διάλεξε “Διαγραφή γραμμών φύλλου” (Στο excel 2003 και παλιότερα την εντολή αυτή θα βρεις: μενού “Επεξεργασία”, “Διαγραφή”, “Ολόκληρη γραμμή”).
    Πρόσεχε ότι η εργασία αυτή διαγράφει ολόκληρες γραμμές. Αν υπάρχουν στοιχεία (εγγραφές) σε κελιά άλλων στηλών, δεξιά ή αριστερά των επιλεγμένων κενών κελιών, θα διαγραφούν και αυτά και θα τα χάσεις.

    Δεύτερη περίπτωση: Τα δεδομένα σου είναι σε πολλές στήλες, και θέλεις να διαγράψεις τις γραμμές των στηλών αυτών που είναι εντελώς άδειες. Μπορείς να εφαρμόσεις την ίδια τεχνική μόνο αν οι άλλες γραμμές της περιοχής των δεδομένων σου να είναι εντελώς γεμάτες. Αν υπάρχουν γραμμές μερικώς γεμάτες θα διαγραφούν και αυτές. Για αυτό θα ακολουθήσεις την παρακάτω τεχνική. Ας υποθέσουμε ότι τα δεδομένα σου βρίσκονται στις στήλες A, B, C, D. Τότε στην επόμενη κενή στήλη Ε εισάγεις τον τύπο:

    =IF(SUMPRODUCT(--ISBLANK(A1:D1))=COLUMNS(A1:D1);TRUE;0)
    

    και τον αντιγράφεις ως την τελευταία γραμμή των δεδομένων σου. Ο τύπος αυτός θα επιστρέψει TRUE για τις εντελώς κενές γραμμές και μηδέν για όλες τις άλλες. Επιλέγεις τώρα όλη τη στήλη Ε, πατάς F5, στην καρτέλα “Μετάβαση σε” που θα εμφανιστεί, πάτα “Ειδικά σε” και στη νέα καρτέλα τσεκάρισε “Τύποι» στη συνέχεια τσεκάρισε “Λογικές Τιμές” και διάγραψε το τσεκάρισμα από τις περιπτώσεις «Αριθμοί», «Κείμενο», «Σφάλματα» και πάτα ΟΚ. Όπως τώρα είναι επιλεγμένα μόνο τα κελιά της στήλης Ε που περιέχουν TRUE, στο κεντρικό μενού διάλεξε “Διαγραφή” και στη συνέχεια διάλεξε “Διαγραφή γραμμών φύλλου” ( Ότι δηλαδή κάναμε στο βήμα (Δ) της προηγούμενης περίπτωσης.

    Επειδή όμως, όπως και στην πρώτη περίπτωση, διαγράφονται ολόκληρες γραμμές, και όπως είπαμε υπάρχει κίνδυνος να διαγραφούν στοιχεία σε άλλες στήλες (ίσως το φύλλο να έχει κρυμμένες στήλες), για αυτό θα σου πρότεινα την πολύ ασφαλή διαγραφή που γίνεται μέσω της ταξινόμησης.
    Ας υποθέσουμε ότι τα δεδομένα σου βρίσκονται στις στήλες A, B, C, D. Τότε:
    α) Στην κενή στήλη, ας πούμε την Ε, εισάγεις μία συνεχή αρίθμηση 1,2,3,4,5,6….
    β) Στη συνέχεια επιλέγεις όλα τα δεδομένα σου, μαζί με την αρίθμηση στη στήλη Ε, και κάνεις αύξουσα (από Α προς Ω) ταξινόμηση. Χρησιμοποιείς τόσα επίπεδα ταξινόμησης όσες είναι οι στήλες των δεδομένων σου. Στο παράδειγμά μας κάνεις ταξινόμηση κατά τη στήλη Α, έπειτα κατά την Β, έπειτα κατά την C, και τέλος κατά την D.
    γ) Μόλις ολοκληρωθεί η ταξινόμηση, οι εντελώς άδειες γραμμές θα ταξινομηθούν όλες μαζί στο τέλος. Επιλέγεις και διαγράφεις (απλή διαγραφή, με το πλήκτρο Delete του πληκτρολογίου) μόνο τους αύξοντες αριθμούς της στήλης Ε που αντιστοιχούν στις γραμμές αυτές.
    δ) Ταξινομείς ξανά την περιοχή Α:E σε αύξουσα ταξινόμηση, με μοναδικό επίπεδο ταξινόμησης αυτή τη φορά την στήλη Ε.
    ε) Διαγράφεις την βοηθητική στήλη Ε.
    Η μέθοδος αυτή φαίνεται μπελαλίδικη, αλλά εξασφαλίζει ότι δεν θα διαγραφούν δεδομένα γραμμένα σε άλλα σημεία του φύλλου.

    Σε περίπτωση που τα δεδομένα επεκτείνονται σε πολλές στήλες, και δεν είναι πρακτικά εφικτή η ταξινόμηση σε πολλά επίπεδα, όπως τη περιγράφω στο βήμα (β), τότε θα δουλέψεις ως εξής:
    Ας πούμε ότι τα δεδομένα σου επεκτείνονται σε 52 στήλες, από τη στήλη Α έως τη στήλη ΑΖ. Στην επόμενη κενή στήλη ΒΑ εισάγεις την αρίθμηση και στην μεθεπόμενη κενή στήλη ΒΒ τον τύπο:

      =SUMPRODUCT(--ISBLANK(A1:AZ1))  

    και τον αντιγράφεις ως την τελευταία γραμμή των δεδομένων σου. Η συνάρτηση αυτή επιστρέφει έναν αριθμό που εκφράζει πόσα κενά κελιά υπάρχουν σε κάθε γραμμή. Αν όλα τα κελιά μιας γραμμής είναι κενά θα επιστρέψει 52. Στη συνέχεια θα ταξινομήσεις την περιοχή Α:ΒΒ με μοναδικό επίπεδο ταξινόμησης την στήλη ΒΒ. Κατά τα άλλα η εργασία είναι ίδια. Τέλος θα διαγράψεις τις βοηθητικές στήλες ΒΑ και ΒΒ.

  22. Ο/Η Alexis Stasinos λέει:

    Πολλά Μπράβο , για την προσπάθεια που κάνεις και είναι ειλικρινά Αξιοσέβαστη.
    Βοηθάς , όσο κανείς άλλος και μάλιστα ( αν δεν κάνω λάθος ) ανιδιοτελώς
    Να ζητήσω λοιπόν και εγώ μια βοήθεια.
    Είμαι καλός χρήστης του excel αλλά από συναρτήσεις είμαι πολύ πίσω βλέποντας την σελίδα σου. Αρχικά έχω το excel office 2010.
    Εκεί έχω αποθηκεύσει κάποια δεδομένα με , αποτελέσματα του στοιχήματος.
    Θέλω αύριο , να αξιολογήσω την κάθε μια ομάδα ξεχωριστά , σε νίκες (1) ισοπαλίες (χ) και ήττες (2).Να μετρήσω δηλαδή πόσες νίκες πόσες ισοπαλίες και όσες ήττες έχει η κάθε μια ομάδα.
    Σου δινω ένα δείγμα για να δεις πώς τα εχω αποθηκευμένα.

    ΑΤΡΟΜΗΤΟΣ ΑΓΡΟΤΙΚΟΣ ΑΣΤΕΡΑΣ 1 1 2 1
    ΒΕΡΟΙΑ ΙΩΝΙΚΟΣ X X 0 0
    ΚΑΒΑΛΑ ΔΙΑΓΟΡΑΣ 1 1 3 1
    ΚΑΡΝΤΙΦ ΑΡΣΕΝΑΛ X X 0 0
    ΓΚΡΟΝΙΝΓΚΕΝ ΑΓΙΑΞ 1 1 1 0
    ΟΥΤΡΕΧΤΗ ΣΠΑΡΤΑ ΡΟΤ. 1 X 3 3
    ΦΟΛΕΝΤΑΜ ΝΤΕΝ ΧΑΑΓΚ X 2 0 1

    ομάδα εντός – ομάδα εκτός – αποτελεσμα ΗΜιχρόνου- αποτέλεσμα τελικό -σκορ (2-1)
    Θα ειμαι ευγνώμων!!

  23. Ο/Η vioannis λέει:

    Τις απαντήσεις που ζητάς θα βρεις στο xls βιβλίο: SOCCER_example
    Το ερώτημά σου ήταν μια καλή εφαρμογή πάνω στο τελευταίο σημείωμα του ιστολογίου που αφορούσε τη συνάρτηση SUMPRODUCT. Επί μέρους παρατηρήσεις έχω σημειώσει μέσα στο βιβλίο. Αν δεν σε κάλυψα, επανέρχεσαι άφοβα. ( Όχι δεν κάνεις λάθος για το ανιδιοτελώς, όλα εδώ γίνονται για την ευχαρίστηση του πράγματος, και για να βοηθηθούμε όλοι, και εγώ μαζί, να ανεβάσουμε το επίπεδό μας σε ένα εργαλείο, που τείνει να γίνει παγκόσμια γλώσσα)

  24. Ο/Η Alexis Stasinos λέει:

    ευχαριστώ , ασε με να το δω και θα επανελθω

  25. Ο/Η Alexis Stasinos λέει:

    ΝΑΙ πιστεύω οτι το δεδομένο , εινα αυτό που ηθελα. Σε ευχαριστώ πολύ.
    αν προκυψει , νέοτερο δεδομενο , θα επανέλθω.

  26. Ο/Η TakisX λέει:

    Συγχαρητήρια για το ιστολόγιό σας, -το οποίο λίαν προσφάτως ανακάλυψα- και την πολύτιμη βοήθεια που παρέχει. Δεν θα μπορούσα να ισχυρισθώ πως γνωρίζω πολύ καλά το excel και για το λόγο αυτό ζητώ τη βοήθειά σας. Προσπαθώ να ολοκληρώσω εφαρμογή για την έκδοση αποδείξεων λιανικών συναλλαγών (για την παροχή υπηρεσιών), για τις ανάγκες του γραφείου μου. Έτσι με αναπτυσσόμενη λίστα επιλέγω -από σχετικό πίνακα σε άλλο φύλλο- τον πελάτη και με τις INDEX και MATCH γίνεται η συμπλήρωση των στοιχείων του. Στον πίνακα με τα στοιχεία, έχω δημιουργήσει στήλη και την έχω αριθμήσει, έτσι ώστε, στην κάθε εγγραφή πελάτη να αντιστοιχεί ένας μοναδικός αριθμός, όπως ακριβώς συνέβαινε και με τις χειρόγραφες, θεωρημένες από την Δ.Ο.Υ. , αποδείξεις, ο οποίος αποτελεί και τον αύξοντα αριθμό της απόδειξης που εκδίδω κάθε φορά, καθώς εισάγεται και αυτός μαζί με τα υπόλοιπα στοιχεία. Προκύπτει όμως ένα πρόβλημα έτσι: αν χρειαστεί να εκδώσω δεύτερη, ή και τρίτη, απόδειξη στον ίδιο πελάτη (λογικό και σύνηθες), ο αριθμός που εισάγεται, είναι ο αριθμός της πρώτης απόδειξης (το καταλαβαίνω). α) πως μπορώ να ξεπεράσω το συγκεκριμένο πρόβλημα? β) πως θα μπορούσα, μετά από ένα γεγονός που θα ορίσω εγώ, (π.χ. εκτύπωση), να έχω ένα αντίγραφο PDF που θα καταχωρίσω στο αρχείο μου? γ) πως θα μπορούσα στο συγκεκριμένο έγγραφο, με την απλούστερη διαδικασία, να έχω και ολογράφως, το ποσό? Σας ευχαριστώ!

  27. Ο/Η vioannis λέει:

    Τάκη,
    (α) Λες: «ο αριθμός που εισάγεται, είναι ο αριθμός της πρώτης απόδειξης» Αυτό σημαίνει πως τον αριθμό παράγει κάποια συνάρτηση ή μακροεντολή; Ίσως να τροποποιείται, αλλά πρέπει να γνωρίζω ποια είναι αυτή.
    (β) Αν η έκδοση του excel που χρησιμοποιείς, σου δίνει την δυνατότητα αποθήκευσης σε μορφή .pdf, τότε η παρακάτω μακροεντολή αποθηκεύει το αρχείο στη μορφή αυτή.
    Η αποθήκευση γίνεται στον φάκελο C:\PDFinvoice\ (Φυσικά αυτόν θα τον αλλάξεις κατά τις ανάγκες σου) με όνομα σαν αυτό: invoice20140207_213328.pdf (οι αριθμοί εκφράζουν πλήρη ημερομηνία 2014/02/07 & πλήρη ώρα 21:33:28) για να αποφύγεις overwrite. (Φυσικά αυτό γίνεται και με άλλους τρόπους).
    Η μακροεντολή μπορεί να κληθεί χειριστικά ή στο τέλος μίας μακροεντολής εκτύπωσης.
    (Υπάρχει βέβαια και το συμβάν BeforePrint, αλλά δεν το συμβουλεύω, διότι πυροδοτείται και με την προεπισκόπηση εκτύπωσης & αυτό μάλλον δεν το θες)

    Sub makePDFcopy()
    
    Dim myDir As String
    Dim myDate As String
    Dim myTime As String
    
    myDir = "C:\PDFinvoice\"
    myDate = VBA.Format(VBA.Date, "yyyymmdd_")
    myTime = VBA.Format(VBA.Time, "hhmmss")
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=myDir & "invoice" & myDate & myTime & ".pdf", _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    End Sub
    

    (γ) Το θέμα αυτό είναι εντελώς εξαντλημένο σε αυτό εδώ το ιστολόγιο. Δες τις αναρτήσεις «Ευρώ Ολογράφως στην Ελληνική γλώσσα» & «Αριθμοί ολογράφως στο excel»

  28. Ο/Η TakisX λέει:

    Δεν τον παράγει συνάρτηση ή μακροεντολή. Είναι ένας από τους συνεχόμενους αριθμούς της στήλης (του πίνακα) που έχω αριθμήσει. Εισάγονται δηλαδή, πάλι, τα στοιχεία της πρώτης καταχώρησης του συγκεκριμένου πελάτη, άρα και ο αύξοντας αριθμός της σειράς του πίνακα που περιέχει αυτά τα στοιχεία και που αποτελεί τον αριθμό της εκδοθείσας, ήδη, απόδειξης. Ευχαριστώ!

  29. Ο/Η vioannis λέει:

    Τάκη, εξακολουθώ να έχω απορία. Λες: «εισάγονται πάλι, τα στοιχεία της πρώτης καταχώρησης του συγκεκριμένου πελάτη». Πως εισάγονται;

  30. Ο/Η Στέλιος λέει:

    Γεια σας. Έχω ζητήσει και στο παρελθόν τη βοήθεια σας και με βοηθήσατε πολύ. Το πρόβλημα που έχω τώρα. Στη στήλη D υπάρχουν κωδικοί που αποτελούνται από γράμματα, σύμβολα και αριθμούς, παράδειγμα, AB456/RT12, 789_456/56/RL12.Θέλω να αποσπάσω από κάθε κωδικό τους αριθμούς (ενότητες αριθμών) , χωριστά τον καθένα, σε διπλανά κελιά. Αν, ας πούμε, στο κελί D5 έχω τον κωδικό 789_456/56/RL12 και θέλω στα 4 κελιά Κ5 έως Ν5 να πάρω τους αριθμούς 789,456,56,12. Σκοπός είναι να φτιάξω ξανά τους κωδικούς με άλλο τρόπο. Αυτό μπορώ να το κάνω αλλά μου χρειάζονται οι αριθμοί. Κάθε βοήθεια ή ιδέα θα είναι πολύτιμη, διότι οι στήλη με τους κωδικούς είναι μεγάλη. Κάποια μακροεντολή ίσως; Δουλεύω σε excel 2010. Ευχαριστώ πολύ.

  31. Ο/Η vioannis λέει:

    Στέλιο, η περιγραφή σου ήταν πολύ σαφής και έτσι νομίζω η παρακάτω μάκρο θα λειτουργήσει χωρίς προβλήματα. Θα την αντιγράψεις μαζί με την συνάρτηση που την συνοδεύει, σε ένα module του βιβλίου σου και την τρέξεις από το φύλλο με τους κωδικούς. Προσάρμοσε μόνο τον αριθμό DataLastRow στο πλήθος των κωδικών που έχεις. Δες και την περιγραφή μέσα στον κώδικα.

    Sub NumbersExport()
    Dim txt As String
    Dim txtnum As Integer
    Dim rw As Long
    Dim col As Integer
    Dim DataColumn As Integer
    Dim FirstOutputColumn  As Integer
    Dim DataLastRow As Long
    
    ' Προσάρμοσε τους τρεις επόμενους αριθμούς στα δεδομένα του φύλλου σου
    '
    ' Τα δεδομένα (κωδικοί) είναι στην 4η στήλη (D):
    DataColumn = 4
    ' Η έξοδος των αριθμών θα γίνει από την 10η στήλη (Κ) και δεξιά:
    FirstOutputColumn = 10
    ' Τα δεδομένα(κωδικοί)φτάνουν έως την γραμμή 20000:
    DataLastRow = 20000
    
    For rw = 1 To DataLastRow
        txt = Cells(rw, DataColumn).Value
        txtnum = UBound(NumberSplit(txt)) + 1
            If txtnum > 0 Then
                For col = 1 To txtnum
                Cells(rw, FirstOutputColumn + col) = NumberSplit(txt)(col - 1)
                Next col
            End If
    Next rw
    End Sub
    
    Private Function NumberSplit(ByVal txt As String) As Variant
    Dim i As Integer
    Dim chr As String
    For i = 1 To Len(txt)
    chr = Mid(txt, i, 1)
    If Not IsNumeric(chr) Then txt = Replace(txt, chr, ChrW(32))
    Next i
    txt = Application.WorksheetFunction.Trim(txt)
    NumberSplit = Split(txt, ChrW(32))
    End Function
    
    
  32. Ο/Η ΒΑΣΙΛΗΣ ΤΕΓΟΣ λέει:

    Καλημέρα και από μένα και συγχαρητήρια για την βοήθεια που δίνεις.
    Εχώ και εγώ ένα πρόβλημα όπως :
    έχω διαφορετικά φύλλα excel και κάθε ημέρα τα ενημερώνων με τιμές και αξίες και αλλάζει βέβαια το αποτέλεσμα σε κάθε ένα από αυτά .
    Θα ήθελα αν γίνεται να μου έρχεται το τελικό ποσό όλων των φύλλων σε ένα νέο φύλλο , έτσι ώστε κάθε ημέρα που ενημερώνων τα φύλλα να έχω και τελικό αποτέλεσμα.
    ευχαριστώ εκ των προτέρων!!!

  33. Ο/Η vioannis λέει:

    Βασίλη,
    Αν τα αποτελέσματα που λες, παράγονται από κάποιο τύπο, είναι ας πούμε κάποια αθροίσματα, και βρίσκονται σε ένα σταθερό κελί σε κάθε φύλλο, τότε στο συγκεντρικό φύλλο δημιούργησε μία αναφορά για καθένα από τα κελιά αυτά.
    Παράδειγμα: Αν στο κελί Α100 του “Φύλλο1” έχεις ένα αποτέλεσμα και θέλεις η τιμή του να μεταφέρεται αυτόματα κάθε φορά στο συγκεντρικό φύλλο, τότε στο κελί που θέλεις του συγκεντρωτικού γράψε =Φύλλο1!A100
    Ένας άλλος τρόπος είναι, ο ίδιος ο τύπος που έχεις στο “Φύλλο1” και ο οποίος σου δίνει το αποτέλεσμα, να γραφτεί και στο συγκεντρωτικό. Παράδειγμα: Αν στο “Φύλλο1” έχεις τον τύπο =SUM(D1:D100) τότε στο συγκεντρωτικό θα γράψεις =SUM(Φύλλο1!D1:D100)
    Τρίτος τρόπος είναι, για κάθε κελί που περιέχει ένα αποτέλεσμα που θέλεις να εμφανίζονται στο συγκεντρικό φύλλο, να καθορίσεις ένα όνομα, να γίνεις δηλαδή νονός του κελιού, και να παίρνεις την τιμή του κελιού σε όποιο φύλλο θέλεις γράφοντας μόνο το όνομά του. Παράδειγμα: Αν στο κελί Α100 του “Φύλλο1” έχεις ένα αποτέλεσμα και θέλεις η τιμή του να μεταφέρεται αυτόματα κάθε φορά στο συγκεντρικό φύλλο, τότε επίλεξε το κελί αυτό (κλικ πάνω του). Πάνω αριστερά στην γραμμή τύπων, αριστερά από το κουμπί εισαγωγής συνάρτησης (Fx), θα δεις γραμμένη τη διεύθυνση του κελιού: Α100. Κάνε κλικ εκεί και γράψε ένα όνομα της αρεσκείας σου, ας πούμε ΑΡΙΘΜΟΣ1 και πάτα Enter. Τώρα πήγαινε στο συγκεντρικό φύλλο και γράψε σε όποιο κελί θες =ΑΡΙΘΜΟΣ1
    Αν τα προς μεταφορά αποτελέσματα δεν βρίσκονται σε σταθερό κελί αλλά μετά από νέες εγγραφές στα φύλλα, τους αλλάζεις θέση (όχι πολύ καλή τεχνική), τότε θα μπεις στον κόπο να περιγράψεις πολύ-πολύ αναλυτικά το φύλλο σου και την εργασία σου. Για όλα υπάρχει λύση. Παράδειγμα, αν τα αθροίσματα βρίσκονται κάθε φορά στην τελευταία γραμμή της στήλης Α του “Φύλλο1”, ο παρακάτω τύπος θα επιστρέψει την τιμή αυτού του κελιού σε όποιο φύλλο και να γραφτεί.

    =INDIRECT("Φύλλο1!A"&SUMPRODUCT(MAX(ROW(Φύλλο1!A:A)*(Φύλλο1!A:A""))))  
    
  34. Ο/Η ΒΑΣΙΛΗΣ ΤΕΓΟΣ λέει:

    Χίλια ευχαριστώ φίλε μου να είσαι καλά.
    Το έκανα αμέσως με τον τρίτο τρόπο.
    Ευχαριστώ Πολύ!!!!!

  35. Ο/Η Margarita λέει:

    Καλησπέρα,
    Ελπίζω να μπορέσετε να με βοηθήσετε σε αυτό που ψάχνω.
    Δουλεύω σε ένα xls κι έχω δημιουργήσει πολλά φύλλα , ένα για κάθε πελάτη μου.
    Σε κάθε φύλλο έχω βάλει ένα φίλτρο σε μια συγκεκριμένη στήλη.
    Αυτό που θέλω είναι να δημιουργήσω ένα νέο φύλο στο οποίο να φέρνω τα φιλτραρισμένα αποτελέσματα από τα προηγούμενα.
    (Οι πελάτες μου είναι ασθενείς οι οποίοι παρακολουθούνται από πολλούς γιατρούς.Το φίλτρο σε κάθε φύλο το έκανα για να φέρνω μαζί τις επισκέψεις ανά γιατρό.Στο τελικό φύλλο θα ήθελα να ζητάω:Δείξε μου αυτός ο γιατρός ποιά περιστατικά είδε).

    Ευχαριστώ εκ των προταίρων

  36. Ο/Η vioannis λέει:

    Μαργαρίτα
    Αυτό που ζητάς γίνεται. Ο πιο απλός και εύκολος τρόπος είναι με μία μακροεντολή. Ο παρακάτω λίγος κώδικας, όταν κληθεί, διατρέχει τα φύλλα 1, 2 και 3 του βιβλίου, βρίσκει τις φιλτραρισμένες εγγραφές στα φύλλα αυτά, και τις μεταφέρει όλες στο φύλλο TOTAL.

    Sub JoinFilter()
    Application.ScreenUpdating = False
    Dim Rm As Long
    Rm = [COUNTA(TOTAL!A1:TOTAL!A1000)]
    If Rm = 1 Then Rm = Rm + 1
    Range(Cells(2, 1), Cells(Rm, 5)).Clear
    
    Sheets("Φύλλο1").Select
    Call CopyPasteFilRng
    
    Sheets("Φύλλο2").Select
    Call CopyPasteFilRng
    
    Sheets("Φύλλο3").Select
    Call CopyPasteFilRng
    
    Sheets("TOTAL").Select
    Application.ScreenUpdating = True
    End Sub
    
    Private Sub CopyPasteFilRng()
    Dim FilRng As Range
    Dim totalsheet As Object
    Dim meter As Long
    Set totalsheet = Sheets("TOTAL")
    Set FilRng = ActiveSheet.UsedRange.Offset(1, 0) _
        .SpecialCells(xlCellTypeVisible)
    meter = Application.WorksheetFunction.CountA(totalsheet.Range("A:A"))
    FilRng.Copy Destination:=Sheets("TOTAL").Cells(meter + 1, 1)
    End Sub
    

    Κατέβασε το xls βιβλίο JoinFilter για να τη δεις να δουλεύει. Βέβαια αυτό είναι ένα παράδειγμα που, πιστεύω, σχετικά εύκολα προσαρμόζεται σε δομές άλλων βιβλίων. Για όποια βοήθεια επανέρχεσαι άφοβα, με πολλές λεπτομέρειες όμως για το βιβλίο σου. Στο JoinFilter θα βρεις και μία άλλη μάκρο με την οποία επιλέγεις το όνομα ενός γιατρού και αυτόματα όλα τα φύλλα του βιβλίου σου φιλτράρονται ως προς τον γιατρό αυτό και όλα τα φιλτραρίσματα μεταφέρονται με μιας στο φύλλο TOTAL.

  37. Ο/Η Γιώργος λέει:

    « Ένα το χελιδόνι και η Άνοιξη ακριβή», και για να μου δουλέψει θέλει δουλειά πολύ (μάλλον). Γιατί δεν υπακούει λοιπόν αυτή η συναρτησούλα, όπως λές ότι πρέπει να κάνει;

  38. Ο/Η vioannis λέει:

    Δεν βρίσκω λόγο, ξαναδοκίμασε….

  39. Ο/Η nikmous λέει:

    Θελω να εκτυπωσω ενα φυλλο εργασιας (που καταλαμβανει σελιδα) σε 10 αντιγραφα. Θελω ομως σε καθε αντιγραφο να βαζω ενα αριθμο αυτοματα. Πχ. οταν θα εκτυπωθει η 1η σελιδα να εκτυπωθει σελιδα 1 ή αντιγραφο 1, οταν θα εκτυπωθει η 2η, αντιγραφο 2 κοκ. Μπορει να γινει αυτο;
    Ευχαριστω

  40. Ο/Η vioannis λέει:

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

    Sub Numbered_Copies()
    Dim TotalCopy As Integer
    Dim FirstCopy As Integer
    Dim meter As Integer
    Dim Titlos As String
    Titlos = "Excel Λύσεις"
    
    On Error GoTo telos
    
    TotalCopy = Application.InputBox _
        (Prompt:="Πλήθος αντιγράφων", Title:=Titlos, Type:=1)
    If TotalCopy = 0 Then GoTo telos
    If TotalCopy = 1 Then GoTo PrintOne
    
    FirstCopy = Application.InputBox _
        (Prompt:="Αριθμός Έναρξης", Title:=Titlos, Default:=1, Type:=1)
        
    For meter = FirstCopy To FirstCopy - 1 + TotalCopy
        With ActiveSheet.PageSetup
            .RightHeader = "Αντίγραφο " & meter & "o"
        End With
    PrintOne:
    ActiveSheet.PrintOut
    Next meter
    telos:
    ActiveSheet.PageSetup.RightHeader = ""
    End Sub
    

    Πήγαινε, τώρα στο φύλλο που θέλεις να εκτυπώσεις, όρισε την περιοχή εκτύπωσης, και τρέξε από το φύλλο αυτό, την μάκρο. Θα ερωτηθείς, από ένα πλαίσιο, πρώτα για το πλήθος των αντιγράφων και μετά για τον αριθμό που θέλεις να αρχίζει η αρίθμηση. (Μπορεί σήμερα, να εκτύπωσες τα αντίγραφα 1-50 και αύριο θέλεις να εκτυπώσεις τα αντίγραφα 51-90. Αύριο λοιπόν, θα ορίσεις πλήθος αντιγράφων 40 και αριθμό έναρξης 51). Μόλις δώσεις τους δύο αυτούς αριθμούς, η εκτύπωση θα γίνει αυτόματα από την μάκρο. Αν ορίσεις πλήθος αντιγράφων μηδέν, τότε η εκτύπωση ακυρώνεται. Αν ορίσεις πλήθος αντιγράφων 1, τότε θα γίνει η εκτύπωση χωρίς αρίθμηση. Αν δεν το θέλεις αυτό, και θέλεις να υπάρχει αρίθμηση και για ένα μόνο αντίγραφο, τότε διέγραψε τη γραμμή του κώδικα:

    If TotalCopy = 1 Then GoTo PrintOne
    

    Η αρίθμηση τοποθετείται στην πάνω δεξιά γωνία (RightHeader) του φύλλου έτσι:
    Αντίγραφο 1ο
    Αντίγραφο 2ο
    Αντίγραφο 3ο κλπ
    Προσάρμοσε αντίστοιχα τη γραμμή του κώδικα:

    .RightHeader = "Αντίγραφο " & meter & "o"
    

    Υπάρχουν οι δυνατότητες:

    .LeftHeader
    .CenterHeader
    .LeftFooter
    .CenterFooter
    .RightFooter
    

    Η μάκρο θα αριθμήσει σωστά και τα αντίγραφα κειμένων πολλών σελίδων.

    Φιλική παρέμβαση από Σκρουτζ Μακ Ντακ: Οι δοκιμές σε κώδικα που καταλήγει σε εκτύπωση, μπορεί να οδηγήσει σε μεγάλη σπατάλη χαρτιού. Στις δοκιμές, λοιπόν, όρισε μικρό αριθμό αντιγράφων και χρησιμοποίησε την πίσω λευκή σελίδα ήδη χρησιμοποιημένων φύλλων. Και μία άλλη τεχνική για να αποφύγεις εντελώς την εκτύπωση: Κάνε τις δοκιμές αλλάζοντας προσωρινά τη 5η από το τέλος γραμμή του κώδικα:

    ActiveSheet.PrintOut
    

    ως εξής:

    ActiveSheet.PrintPreview
    

    Αντί να εκτυπώνεις, θα βλέπεις τα αντίγραφα σε προεπισκόπηση εκτύπωσης. Για να δεις το επόμενο αντίγραφο, πάτα το πλήκτρο του κλεισίματος της προεπισκόπησης.

    Κάποιοι φίλοι του ιστολογίου θα σκέπτονται ίσως ότι θα ήταν καλύτερη μια λύση με μια μακροεντολή που θα ενεργοποιείται με το συμβάν Before Print. Ναι, θα δούλευε, αν ο χρήστης καλούσε την εντολή εκτύπωσης τόσες φορές, όσα αντίγραφα θα ήθελε. Δεν μπόρεσα να βρω λύση, όπου το πλήθος των αντιτύπων να ορίζεται μέσα από το πλαίσιο της εκτύπωσης. Από την άλλη, το συμβάν Before Print ενεργοποιείται όχι μόνο από την εντολή Print αλλά και την Print Preview και αυτό θα δημιουργούσε σύγχυση στο χρήστη και στην αρίθμηση. Νομίζω ότι η λύση με την μάκρο που καλείται από τον χρήστη είναι πιο φιλική.
    Για όποιο πρόβλημα επικοινωνείς ξανά άφοβα.

  41. Ο/Η vioannis λέει:

    Πρόσθεσα μια γραμμή (την προτελευταία) στον κώδικα. Μου είχε ξεφύγει καθώς αντέγραφα από το βιβλίο μου, στην προηγούμενη απάντηση.

  42. Ο/Η Μάριος λέει:

    Καλησπέρα, συγχαρητήρια και από εμένα για τη δουλειά που κάνεις. Να ζητήσω και εγώ τη βοήθεια σου. Έχω ένα φύλλο με πολλές εγγραφές και χρήση φίλτρων. Εφαρμόζοντας κάποια φίλτρα μου εμφανίζει κάποιες από τις γραμμές. Για αυτές τις γραμμές θέλω σε μια καινούργια στήλη να τις αριθμήσω (α/α). Γράφοντας 1,2 και τραβώντας προς τα κάτω δεν το δέχεται γιατί υπάρχουν οι γραμμές που δεν εμφανίζονται. Δοκίμασα σε νέο φύλλο να φτιάξω τη στήλη με τους αύξοντες αριθμούς και με copy paste να το φέρω στο φύλλο που δουλεύω αλλά ούτε αυτό πιάνει. Μπορείς να σκεφτείς κάποιον τρόπο. Ευχαριστώ εκ των προτέρων.

  43. Ο/Η vioannis λέει:

    Μάριε, δες στη σελίδα αυτή, με τα “μικρά και ίσως χρήσιμα” το μικρό με αριθμό 3. Νομίζω απαντά στην ερώτησή σου.

  44. Ο/Η Μάριος λέει:

    Να γίνω λίγο πιο συγκεκριμένος. Το φύλλο παρουσιάζει τις κινήσεις που πραγματοποιούνται σε διάφορους κωδικούς (προϊόντα) καταγράφοντας ποσότητες και ημερομηνία κίνησης. Η στήλη Β περιέχει 50 διαφορετικούς κωδικούς επαναλαμβανόμενους (μία εγγραφή για κάθε κίνηση). Με φίλτρο απομονώνω τις κινήσεις που αφορούν τον κωδικό 1 για παράδειγμα. Σε αυτές τις κινήσεις θέλω να βάλω Α/Α αρίθμηση στη στήλη Α..Το ίδιο θέλω να κάνω για όλους τους κωδικούς (στην στήλη Α και αυτούς). Όταν καταργώ τα φίλτρα θέλω στη στήλη Α να εμφανίζει την κατάταξη για όλα τα προϊόντα έτσι όπως την είχα αποτυπώσει με το φιλτράρισμα. Χρησιμοποιώντας την συνάρτηση που αναφέρεις όμως όταν καταργώ τα φίλτρα εφαρμόζει ταξινόμηση στο σύνολο των κινήσεων.

  45. Ο/Η vioannis λέει:

    Τότε, πριν κάνεις φιλτράρισμα γράψε στο κελί Α2 (στη γραμμή 1 θα υπάρχουν τίτλοι, φαντάζομαι) τη συνάρτηση:

    =COUNTIF($B$2:B2;B2)
    

    Και αντίγραψέ τη έως το τέλος της βάσης. Τώρα κάθε φορά που φιλτράρεις ως προς κάποιο κωδικό της στήλης Β, θα βλέπεις στη στήλη Α συνεχή αρίθμηση (1,2,3,4…..) για τον κωδικό αυτό.
    Αυτό που επιχειρείς, να βάλεις αρίθμηση μετά το φιλτράρισμα, δεν μπορώ να σκεφτώ τρόπο να γίνεται με κάποιες διαδικασίες ή συναρτήσεις φύλλου. Μπορεί να γίνει με μακροεντολή πάντως. Φιλτράρεις ως προς κάποιο κωδικό, επιλέγεις στη στήλη Α τα κελιά που αντιστοιχούν στον κωδικό αυτό και τρέχεις τη μάκρο. Αυτή θα βάλει την αρίθμηση 1,2,3,4,…. που θέλεις και συνεχίζεις με το επόμενο φίλτρο. Ο κώδικας για τη μικρή αυτή μακροεντολή είναι:

    Sub NumberedCellsAfterFilter()
    Dim kelia As Range
    Dim keli As Range
    Dim meter As Long
    Set kelia = Nothing
    On Error Resume Next
    Set kelia = Intersect(Selection, Selection.SpecialCells(xlCellTypeVisible))
    If kelia Is Nothing Then MsgBox "Δεν επιλέξατε περιοχή": GoTo telos
    On Error GoTo 0
    For Each keli In kelia
    meter = meter + 1
    keli = meter
    Next
    telos:
    End Sub
    

    Τη μάκρο αυτή, μπορείς να την γράψεις και στο βιβλίο προσωπικών μακροεντολών (personal), και να την τρέχεις από εκεί, αν το βιβλίο με τη βάση σου είναι .xlsx βιβλίο και δεν θέλεις να το μετατρέψεις σε .xlsm

  46. Ο/Η Μάριος λέει:

    Αυτό δούλεψε άψογα. Σε ευχαριστώ πολύ. Μπαίνω στον πειρασμό να σε ξαναενοχλήσω στο μέλλον :)

  47. Ο/Η vioannis λέει:

    Όποτε θες. Ευπρόσδεκτος

  48. Ο/Η Kostas λέει:

    Καλημέρα και συγχαρητήρια για τη βοήθεια σας. Θα ήθελα τη βοήθεια στο πρόβλημα του επί μέρους αθροίσματος ανά επαναλαμβανόμενο κωδικό σε μια λίστα με κωδικούς και ποσά καθώς και το γενικό σύνολο των επί μέρους αθροισμάτων. Ευχαριστώ εκ των προτέρων.

  49. Ο/Η vioannis λέει:

    Εννοείς το εργαλείο του excel “Μερικά αθροίσματα” που υπάρχει στο μενού “Δεδομένα». Αν ζητάς γενικές πληροφορίες θα βρεις εδώ και εδώ. Για τη συνάρτηση SUBTOTAL η οποία δημιουργεί τα μερικά αθροίσματα εδώ. Αν έχεις κάποιο ειδικό πρόβλημα πρέπει να το περιγράψεις πιο αναλυτικά.

  50. Ο/Η apostolos orfanidis λέει:

    Σε ενα φύλλο του excel καταχωρώ καθημερινά δρομολόγια πελατών. Κάθε πελάτης έχει ένα μοναδικό κωδικό και τέλος κάθε μηνά πρέπει να του στείλω αναλυτική κατάσταση αποστολών .Έτσι κάνω φίλτρο στον κωδικοί του πελατη που επιθυμώ και εμφανίζονται μόνο οι κινήσεις του και αφού .τον εκτυπώσω μετά επιλέγω τον επόμενο και εκτυπώνω ξανά και ξανά …. !!!
    υπαρχει η δυνατοτητα και εαν ναι πως αυτοματα να αποστελλονται με ηλεκτρονικο ταχυδρομειο ανα πελατη οι αποστολες τους ?
    θεωρησε δεδομενο οτι ολοι οι πελατες εχουν mail..

    η καθε γραμμη ειναι περιπου ετσι
    ημερομηνια -αποστολεας – παραληπτης – βαρος -τιμη -οκ κωδικος πελατη
    το οκ σημαινει οτι εχει μπει η τιμη και τσεκαριστει η αποστολη ωστε να τιμολογηθει.
    υπαρχουν περιπου 400 πελατες και ενας μεσος ορος δρομολογιων 10
    συνολο 4000 εγγραφες .

    ευχαριστω και παλι για ολη την βοηθεια .

    όποτε μπορείς ανέβασε και ενα θέμα σχετικά με τις macro βασικές αρχές

  51. Ο/Η vioannis λέει:

    Απόστολε, το θέμα αυτό θα το δούμε μαζί με άλλα παρόμοια σε επόμενο σημείωμα του ιστολογίου. Θα κάνεις λίγο υπομονή.

  52. Ο/Η Giannis λέει:

    Προς μεντωρες του excel
    .

    Θελω μια μακροεντολη οπου:

    Οταν παταω ενα button που θα χω βαλει,να κανει save as το τρεχων document που δουλευω ,(σε ενα προκαθορισμενο φακελο που θα εχω ορισει απο στην μακροεντολη),και για filename να χρησιμοποιει καθε φορα το ονομα του sheet και την τιμη ενος συγκεκριμενου κελιου (A1).

  53. Ο/Η vioannis λέει:

    Η μακροεντολή που ζητάς είναι η παρακάτω:

    Sub mySaveAs()
    Dim j As Integer
    Dim myPath As String
    Dim mySheet As String
    Dim myCell As String
    
    Dim BookName As String
    
    Dim IllegalCharacters As Variant
    
    IllegalCharacters = VBA.Array(">", "<", "?", "[", "]", ":", "|", "*", "/", "\", """")
    
    myPath = "C:\Users\User\Desktop\"
    mySheet = ActiveSheet.Name
    myCell = ActiveSheet.Range("A1").Value
    
    BookName = mySheet & "_" & myCell
    
    For j = LBound(IllegalCharacters) To UBound(IllegalCharacters)
    BookName = VBA.Replace(BookName, IllegalCharacters(j), "")
    Next j
    ActiveWorkbook.SaveAs Filename:=myPath & BookName, _
    FileFormat:=xlOpenXMLWorkbookMacroEnabled
    
    End Sub
    

    Φυσικά πρέπει να αλλάξεις στον κώδικα την διαδρομή: C:\Users\User\Desktop\ με την δικιά σου, και φυσικά να αλλάξεις αν χρειάζεται το κελί Α1.
    Το βιβλίο αποθηκεύεται με το όνομα του φύλλου μέσα από το οποίο τρέχεις τη μάκρο, και την αξία του κελιού Α1 του ίδιου φύλλου, ενωμένα με την κάτω παύλα( _ ). Αυτό μπορείς αν θέλεις να το αλλάξεις.
    Αν η μάκρο είναι φορτωμένη στο ίδιο το βιβλίο που αποθηκεύεις, τότε αυτό φυσικά θα είναι ένα βιβλίο .xlsm Για αυτό στην τελευταία γραμμή καθόρισα το FileFormat.
    Αν τρέχεις τη μάκρο από το βιβλίο προσωπικών μακροεντολών, και το βιβλίο που αποθηκεύεις δεν περιέχει μακροεντολές, δηλαδή είναι βιβλίο .xlsx τότε διάγραψε το FileFormat, δηλαδή η τελευταία γραμμή του κώδικα να είναι έτσι:

    ActiveWorkbook.SaveAs Filename:=myPath & BookName
    

    Το ίδιο θα κάνεις αν δουλεύεις σε excel 2003 ή μικρότερο.
    Η μάκρο κάνει έλεγχο και διαγράφει χαρακτήρες που δεν επιτρέπονται στο όνομα ενός αρχείου. Παράδειγμα αν στο κελί Α1 έχεις γράψει αα?ββ, στο όνομα του βιβλίου θα περάσει μόνο το ααββ. Πες μου αν δούλεψε.

  54. Ο/Η Giannis λέει:

    Καταρχην σε ευχαριστω για το χρονο σου,και αυτο που κανεις.Βοηθας αφανταστα.
    Στο θεμα μας.
    Στο αρχειο μου εχω και αλλες μακροεντολες (εχω 4 buttons),το οποιο εχει καταληξη .xlsm.
    Aνοιξα το αρχειο μου ,προσθεσα ενα button ,το ονομασα,και πατησα code view,να κανω paste τον κωδικα .-αναμεσα σε :Private Sub CommandButton5_Click() —–End Sub που προσθεσε στο κωδικα με το button.Eβαλα το path και το κελι που ηθελα.

    Πατωντας το κουμπακι μου πεταει: «Compile error: Εxpected End Sub» και με πεταει στον κωδικα,οπου πατωντας ok στο παραθυρο διαλογου μου επισημανει με κιτρινο βελακι απο αριστερα και ολο το «Private Sub CommandButton5_Click() »

    Επειδη προσφατα (μολις χτες!)αρχισα να μπαινω στο κοσμο των μακροεντολων,δεν ξερω αν εκανα κατι λαθος ,ή κατι θελει ο κωδικας.

  55. Ο/Η vioannis λέει:

    Από αυτό που περιγράφεις, πιθανά να έχεις γράψει 2 φορές το τέλος (End sub) ή την αρχή (sub….) της μάκρο.
    Κανονικά, πρέπει να γράψεις (αντιγράψεις) τον κώδικα σε ένα module του βιβλίου σου και μετά να εισάγεις ένα κουμπί (Προγραμματιστής , Εισαγωγή, Κουμπί) και στο κουμπί δεξί κλικ και αντιστοίχιση της μακροεντολής.

  56. Ο/Η Giannis λέει:

    Δουλευει αψογα!!
    Το λαθος ηταν απο μενα ,κατα το paste του path,την «επιφανεια εργασιας»την επικολλουσε με αλλα γραμματα,και επισης στο τελος ηθελε \.

    Ευχαριστω πολυ

  57. Ο/Η vioannis λέει:

    Χαίρομαι Γιάννη! Καλή Ανάσταση!

  58. Ο/Η Giannis λέει:

    Χρειαζομαι βοηθεια για το εξης :
    στο φυλλο 1 εχω 3 κελια,
    το κελι 1 (G9)εχει εναν αυξων αριθμο που τον αλλαζω καθε φορα.
    Στο κελι 2 (A1)και το κελι 3 (B1) προκυπτουν καποιες τιμες τις οποιες πατωντας ενα button ,θελω να τις μεταφερω στο φυλλο 2 (για περαιτερω επεξεργασια).

    Ας πουμε οτι εχει οριστει απο την μακροεντολη οτι πατωντας το button οι τιμες A1 και Β1 του φυλλου 1 να αντιγραφοντε στο φυλλο 2 ,πχ στο κελι Β1 ,και D1.
    Αυτο που θελω επισης ειναι ,αλλαζοντας ο αριθμος στο κελι 1 ,οταν ξαναπατησω το button οι τιμες να μην αντικαθιστοντε ,αλλα να αντιγραφουν στο φυλλο 2 ακριβως απο κατω.δηλ.Β2 και D2,κ.ο.κ.

    Γινετε?

  59. Ο/Η vioannis λέει:

    Έγραψα τον λίγο κώδικα που χρειάζεται απλά, για να μπορείς να τον προσαρμόσεις.
    Οι μετρητές bmeter και cmeter μετρούν πόσα στοιχεία υπάρχουν ήδη στις στήλες Β και D αντίστοιχα.
    Ακολούθως, οι τιμές των κελιών Α1 και Β1 από το Φύλλο1, μεταφέρονται στις στήλες Β και D στο Φύλλο2, αμέσως από κάτω από τη προηγούμενη μεταφορά.
    Πιο αναλυτικά:
    Ας υποθέσουμε ότι στην στήλη Β του Φύλλου2 υπάρχουν ήδη 15 εγγραφές.
    Μόλις τρέξεις τη μάκρο η μεταβλητή bmeter θα πάρει την τιμή 15.
    Στη συνέχεια η γραμμή του κώδικα:

    Worksheets("Φύλλο2").Cells(bmeter + 1, 2) = Worksheets("Φύλλο1").Cells(1, 1)
    

    πάει στο κελί που είναι στη γραμμή 16 και στη στήλη 2. δηλαδή στο Β16, του Φύλλου2 και εκεί γράφει την τιμή του κελιού Α1 του Φύλλου1.

    Cells(1, 1) = κελί Α1
    Cells(bmeter + 1, 2) = κελί Β16

    Πρόσεξε, οι στήλες Β και D του φύλλου2 δεν πρέπει να περιέχουν άλλα στοιχεία σε άλλα κελιά τους διότι οι μετρητές bmeter και cmeter θα σου δώσουν μεγαλύτερο αριθμό από αυτόν που πρέπει.

    Sub test()
    Dim bmeter As Long
    Dim dmeter As Long
    bmeter = Application.WorksheetFunction.CountA(Range("Φύλλο2!b:b"))
    dmeter = Application.WorksheetFunction.CountA(Range("Φύλλο2!d:d"))
    Worksheets("Φύλλο2").Cells(bmeter + 1, 2) = Worksheets("Φύλλο1").Cells(1, 1)
    Worksheets("Φύλλο2").Cells(dmeter + 1, 4) = Worksheets("Φύλλο1").Cells(1, 2)
    End Sub
    
  60. Γειια σας κυριε Γιαννη θελω να ρωτησω εχω ενα πινακα με 170.000 ομαδες ποδοσφαιρου και σκορ και διαφορα αλλα στο φυλλο 1 και θελω οταν ειμαι στο Α169000 κελι που ειναι επιλεγμενο
    να διαβαζει την ομαδα και να επιλεγει μονο αυτη στο πινακα πανω που ειναι φιλτρο και εχει παρα
    πολλες διαφορες ομαδες ,γινεται αυτο? δηλαδη να κρυβει ολες τις αλλες.

  61. Ο/Η vioannis λέει:

    Βασίλη, πολύ εντυπωσιακή συνάθροιση δεδομένων! Δεν κατάλαβα όμως το ερώτημά σου, έχεις ήδη κάνει φιλτράρισμα και δεν δουλεύει; Θέλεις κάτι περισσότερο από ή μετά το φιλτράρισμα; Τα δεδομένα είναι δομημένα σε μορφή βάσης; Για τόσα πολλά στοιχεία πρέπει να γίνεις πιο αναλυτικός και περιγραφικός.

  62. Καλημερα.
    Δουλευει το φιλτραρισμα αλλα μπορω σε vba να το κανει?Να παιρνει αυτοματα οποια ομαδα εχω
    επιλογη και να τη φιλτραρει?Γιατι εγω ξερω μονο τη κορδελα και φτιαχνω αναλυσεις ανετα.Μονο να την επιλεγη στο φιλτρο.Μετρησα τωρα 2.016 διαφορετικες ομαδες και η καθε μια εχει πολλες εγραφες.

  63. Ο/Η vioannis λέει:

    Λες ότι: επειδή η βάση είναι πολύ μεγάλη και περιλαμβάνει πολλές διαφορετικές ομάδες, είναι δύσχρηστο να επιλέγεις από το πτυσσόμενο πλαίσιο του φίλτρου την ομάδα για την οποία θέλεις να φιλτράρεις κάθε φορά. Για αυτό προτιμάς να επιλέγεις την ομάδα σε ένα κελί, και να καλείς μία μακροεντολή, και η μάκρο να εκτελεί το φιλτράρισμα της βάσης για την ομάδα που επέλεξες. Σωστά; Αν σωστά κατάλαβα, η παρακάτω μακροεντολή κάνει αυτό που ζητάς.

    Sub myFILTRO()
    Dim mybase As Range
    Dim keli As Range
    Dim AFF As Integer
    Dim myCriteria As String
    
    Set keli = Selection(1)
    Set mybase = keli.CurrentRegion
    AFF = keli.Column
    myCriteria = keli.Value
    
    If VBA.IsDate(keli) Then myCriteria = keli.Text
    If keli.Value = "" Then GoTo telos
    
    mybase.AutoFilter Field:=AFF, Criteria1:=myCriteria
    ActiveWindow.SmallScroll Up:=5000
    telos:
    End Sub
    

    Γράψε την μακροεντολή σε ένα module του βιβλίου σου και αντιστοίχισέ την σε ένα κουμπί ή σε ένα πλήκτρο. Επιλέγεις ένα κελί, καλείς τη μάκρο, και όλη η βάση φιλτράρεται με κριτήριο την τιμή του κελιού. Η μάκρο λειτουργεί για αλφαριθμητικά (λέξεις) και αριθμούς. Δουλεύει και για ημερομηνίες, με την προϋπόθεση ότι όλες οι ημερομηνίες στην στήλη, έχουν την ίδια μορφοποίηση. Η μάκρο από το κελί που επιλέγεις, εκτιμά μόνη της το εύρος της βάσης και δρα πάνω σε όλη τη βάση. Αυτό το κάνει από την γραμμή του κώδικα

    Set mybase = keli.CurrentRegion
    

    Για ποιο σίγουρα αποτελέσματα αντικατέστησε αυτή τη γραμμή με την πραγματική περιοχή της βάσης σου, για να έχεις εσύ τον έλεγχο. Γράψε τη γραμμή αυτή έτσι:

    Set mybase = ActiveSheet.Range("A1:N170000")
    

    Όπου βέβαια θα αλλάξεις τα κελιά A1(πρώτο πάνω αριστερά) και N170000 (τελευταίο κάτω δεξιά) με τα αντίστοιχα δικά σου.
    Συμβουλή: Κάνε τις δοκιμές του κώδικα σε ένα πρόχειρο αντίγραφο του βιβλίου σου, να δεις πως δουλεύει. Να ξέρεις πάντως πως η μάκρο είναι πιο αργή από το αυτόματο φίλτρο.
    Θεωρητικά υπάρχει η δυνατότητα να καλείται άμεσα η μακροεντολή, με το που θα επιλέγεις το κελί, από ένα συμβάν επιπέδου φύλλου του τύπου: Worksheet Selection Change. Αλλά κάτι τέτοιο θα καθιστούσε το φύλλο που κουβαλά τόσα δεδομένα, υπερβολικά δύσχρηστο. Σε καμία περίπτωση δεν το συνιστώ, ούτε για δοκιμή.
    Για να επαναφέρεις τα δεδομένα (για να ακυρώνεις το φίλτρο) εκτός από το μενού, μπορείς και με την παρακάτω απλή μάκρο:

    Sub EPANAFORA()
    Selection.AutoFilter
    End Sub
    
  64. Σας ευχαριστω κυριε Γιαννη και καλο Πασχα να εχετε εσεις και η οικογενεια σας.

  65. Ο/Η Stelios_Mag λέει:

    Κύριε Βαρλάμη, το πρόβλημα που αντιμετωπίζω είναι το εξής:
    Στη στήλη C ενός φύλλου από το κελί C5 έως το κελί C6505 υπάρχουν κωδικοί που περιέχουν γράμματα, αριθμούς και άλλα σύμβολα. Θέλω να αποσπάσω από τους κωδικούς τους αριθμούς, χωριστά τον καθένα στις στήλες από την Q και δεξιά. Παράδειγμα αν ο κωδικός είναι ΑΒ-123 να πάρω στην Q 123. Για τον 45ΧΨ231-10 να πάρω στην Q 45, στην R 231 και στη S 10. Έχω excel 2007. Όταν και αν βρείτε χρόνο, οποιαδήποτε λύση με συνάρτηση ή με μακροεντολή, θα με διευκολύνεται πάρα πολύ. Επίσης οποιαδήποτε ιδέα για να μην γίνουν λάθη στους αριθμούς είναι ευπρόσδεκτη. Ευχαριστώ πολύ.

  66. Ο/Η Γιώργος λέει:

    Γιάννη γειά σου, χρόνια πολλά.
    Σχετικά με την μετατροπή πεζών σε άτονα κεφαλαία (=UPPER(LOWER(A1))) δεν μου δουλεύει, μου δίνει τονισμένα κεφαλαία και μια επιπλέον απορία, σε κάποια φύλλα ενός βιβλίου, δεν μου εμφανίζει αποτελέσματα αλλά τον τύπο.
    Ευχαριστώ.

  67. Ο/Η vioannis λέει:

    Γιώργο, για το πρώτο θέμα: Μήπως πρόκειται για κείμενο γραμμένο σε πολυτονικό; Οι συναρτήσεις αυτές δεν δουλεύουν με το πολυτονικό. Στείλε, αν θες, με (αντιγραφή-επικόλληση) το προβληματικό κείμενο.
    Για το δεύτερο θέμα:
    α) έχεις πατήσει το συνδυασμό πλήκτρων Ctrl+~ ή Ctrl+` (το πλήκτρο ~ ή ` είναι πάνω δεξιά, αριστερά από το 1). Λύση: Πάτα ξανά τον συνδυασμό.
    β) Κάνε κλικ στο κελί με την συνάρτηση και κοίτα στη γραμμή των τύπων. Αν πριν το ίσον υπάρχει απόστροφος ( ‘ ή ^ ή “) διάγραψέ την.
    γ) Δες ποια μορφοποίηση έχει το κελί που περιέχει τον τύπο. Αν είναι “Κείμενο”, αυτό είναι το πρόβλημα. Άλλαξε τη μορφοποίηση σε “Γενική” και κάνε επανα-εισαγωγή της συνάρτησης (κλίκ στο κελί, F2 και Enter)

  68. Ο/Η vioannis λέει:

    Στέλιο, οι ωραίες (δηλαδή σαφείς) ερωτήσεις, έχουν και ωραίες απαντήσεις. Διατυπώνοντας με απόλυτη ακρίβεια την ερώτησή σου (διευθύνσεις κελιών, παραδείγματα, τι ακριβώς θέλεις), έδωσες το περίγραμμα και τα βήματα του κώδικα. Φυσικά με μακροεντολή θα λυθεί το πρόβλημα. Τρέξε την παρακάτω sub test και δεν θα γίνουν λάθη. Η μάκρο συνοδεύεται και κάνει χρήση της συνάρτησης ExtractAllNumbers την οποία πρέπει να αντιγράψεις μαζί με την sub test στο ίδιο module του βιβλίου. Η συνάρτηση αυτή δημιουργεί ένα πίνακα των αριθμών κάθε κωδικού. Για τα παραδείγματα που έδωσες φτιάχνει αντίστοιχα τους πίνακες (123), (45, 231, 10). Στη συνέχεια η test αποσπά από τον πίνακα κάθε κωδικό και τον τοποθετεί στη σωστή στήλη. Μάλιστα, μια λίγο διαφορετική μορφή αυτής της συνάρτησης θα ανεβάσω σε αυτήν τη σελίδα μαζί με τα άλλα “μικρά”, νομίζω θα είναι χρήσιμη.

    
    Sub test()
    Dim oRow As Long
    Dim oText As String
    Dim oCol As Integer
    For oRow = 5 To 6505
    oText = Cells(oRow, 3).Value 'Στήλη C =3
        For oCol = 0 To UBound(ExtractAllNumbers(oText))
            Cells(oRow, oCol + 17) = ExtractAllNumbers(oText)(oCol) 'Στήλη Q=17
        Next oCol
    Next oRow
    End Sub
    
    
    Private Function ExtractAllNumbers(ByVal txt As String) As Variant
    Dim keno As String
    Dim chr As String
    Dim i As Integer
    keno = ChrW(32)
    For i = 1 To Len(txt)
        chr = Mid(txt, i, 1)
        If Not IsNumeric(chr) Then txt = Replace(txt, chr, keno)
    Next
    txt = Trim(txt)
    Do Until InStr(txt, keno & keno) = 0
        txt = Replace(txt, keno & keno, keno)
    Loop
    ExtractAllNumbers = (Split(txt, keno))
    End Function
    
    
  69. Ο/Η Γιώργος λέει:

    Παράδειγμα: «Τοπική Κοινότητα Κοκκινοχωρίου» όπως περιέχεται στο κελί. Έκανα και μερικές δοκιμές με αλλαγή γραμματοσειράς, τίποτα.
    Για το δεύτερο θέμα, λύθηκε μόνο του, χωρίς να κάνω κάτι.
    Ευχαριστώ πολύ για την άμεση ανταπόκριση.

  70. Ο/Η vioannis λέει:

    Γιώργο, δεν ξέρω ποιο είναι το πρόβλημα, το κείμενο που έστειλες, στις δικές μου δοκιμές, η =UPPER(LOWER(A1)) δουλεύει σωστά.

  71. Ο/Η Γιώργος λέει:

    Τελικά μετά από έρευνα σε άλλους υπολογιστές, διαπίστωσα οτι ήταν θέμα εγκατάστασης του προγράμματος

  72. Ο/Η zacharias λέει:

    παιδιά βοήθεια τα έχω δει όλα:
    εχω μια στήλη με λέξεις και θέλω να βάλω μια συνάρτηση να κάνει το εξείς, αν βρει τη λέξη α να μου επιστρέψει τον αριθμό 1, αν βρει τη λέξη β να μου επιστρέψει τον αριθμό 2 κτλ.
    έχει κανείς καμιά ιδέα?
    ευχαριστώ εκ των προτέρων

  73. Ο/Η vioannis λέει:

    Αν είναι λίγες οι αντιστοιχίες (α-1,β-2,γ-3 κλπ) χρησιμοποίησε την συνάρτηση IF. Δες και το θέμα του ιστολογίου “Εναλλακτικές μορφές της συνάρτησης IF”, Αν οι αντιστοιχίες αυτές είναι πολλές , τότε φτιάξε κάπου στο βιβλίο σου ένα πίνακα δύο στηλών με τις αντιστοιχίες αυτές (με πρώτη στήλη τα α,β,γ και δεύτερη τα 1,2,3) και χρησιμοποίησε τη συνάρτηση vlookup. Παράδειγμα:

    =VLOOKUP(A1;$T$10:$V$49;2;FALSE)
    

    Όπου $T$10:$V$49 είναι ο πίνακας που έστησες. Δες πιο πολλά για την Vloopup εδώ και εδώ

  74. Ο/Η vioannis λέει:

    Γιώργο, μετά από την υπόδειξή σου για την λειτουργία της UPPER(LOWER) και μετά από αρκετές δοκιμές σε διάφορες εκδόσεις του excel, είδα πως το πρόβλημα είναι στην έκδοση 2007 όταν τρέχει σε XP. Αντίθετα με τις άλλες εκδόσεις (αλλά και με την ίδια την 2007 σε άλλα περιβάλλοντα) η συνάρτηση UPPER για τα τονισμένα μικρά φωνήεντα επιστρέφει τονισμένα κεφαλαία. Όλες οι άλλες εκδόσεις (που είχα την ευκαιρία να δοκιμάσω), επιστρέφουν άτονα κεφαλαία. Μετά από αυτή την ιδιομορφία και η επιστροφή της UPPER(LOWER) είναι διαφορετική. Δεν γνωρίζω την αιτία αυτής της μη συνέπειας εκ μέρους της Microsoft Ελλάδος. Ούτε στην ελληνική υποστήριξη για το 2007 γράφει κάτι, όπως μπορείς να δεις εδώ. Στο βιβλίο UPPER_LOWER υπάρχει ένας πίνακας με τις διαφορές στις συναρτήσεις αυτές για τους Ελληνικούς χαρακτήρες .

  75. Ο/Η anna_m λέει:

    Γεια σας, βρήκα τυχαία τη σελίδα σας σε αναζήτηση βοήθειας και θα ήθελα να κάνω μια ερώτηση, ελπίζοντας ότι μπορείτε με βοηθήσετε: έστω ότι έχω μία στήλη με δεδομένα- τίτλους κειμένων. Η στήλη αυτή έχει ενδιάμεσα και κενές γραμμές, τις οποίες δεν θέλω να διαγράψω, γιατί δεν θέλω οι τίτλοι να αλλάξουν θέση, αλλά να παραμείνουν στην ίδια γραμμή. Πώς μπορώ να αριθμήσω μόνο τις γραμμές που περιέχουν τίτλους με αυτόματο τρόπο, χωρίς να μπουν αριθμοί στις κενές γραμμές; Ευχαριστώ πολύ.

  76. Ο/Η vioannis λέει:

    Άννα:
    (α) Για στατικά δεδομένα. Έστω ότι η στήλη με τους τίτλους είναι η Α και ο πρώτος τίτλος είναι στο κελί Α2. Θέλεις να βάλεις την αρίθμηση στη στήλη Β. Στο κελί Β2 γράψε 1. Στο αμέσως από κάτω κελί Β3, γράψε τον τύπο:

    =IF(A3="";TRUE;MAX($B$2:B2)+1)
    

    Αντίγραψε (σύρε) τον τύπο αυτό σε όσο ύψος της στήλης Β χρειάζεται. Τώρα δίπλα στα κενά έχεις TRUE και δίπλα στους τίτλους αριθμούς. Επίλεξε όλη τη στήλη Β (κλικ πάνω στο γράμμα Β της στήλης). Πάτα F5. Εμφανίζεται το πλαίσιο: “Μετάβαση σε:” Πάτα: “Ειδικά σε…». Στη νέα καρτέλα τσεκάρισε αποκλειστικά και μόνο ΤΥΠΟΙ και ΛΟΓΙΚΕΣ ΤΙΜΕΣ και πάτα ΟΚ. Τώρα στη στήλη Β είναι επιλεγμένα όλα τα TRUE και μόνο αυτά. Πάτα στο πληκτρολόγιο Delete. Απομένουν μόνο οι αριθμοί.
    Μπορείς, αν θέλεις, τώρα που οι τύποι της στήλης Β έκαναν τη δουλειά τους, να τους αντικαταστήσεις με καθαρούς αριθμούς. Επιλέγεις πάλι όλη τη στήλη Β. Δεξί κλικ και αντιγραφή, ξανά δεξί κλικ, ειδική επικόλληση, τσεκάρεις ΤΙΜΕΣ και ΟΚ. Είσαι έτοιμη.
    (β) Αν η στήλη με τους τίτλους δεν είναι στατική, αλλά ενημερώνεται, αλλάζει και συμπληρώνεται διαρκώς, τότε στο κελί Β3, γράψε τον τύπο:

    =IF(A3="";"";MAX($B$2:B2)+1)
    

    Αντίγραψέ τον σε όλο το απαραίτητο ύψους της Β και άφησέ τον ως έχει, για να ανταποκρίνεται στις αλλαγές και συμπληρώσεις της στήλης Α.
    (γ) Υπάρχουν και άλλοι τρόποι για στατικά δεδομένα πχ: Οι τίτλοι σου και τα κενά κελία είναι πάντα στη στήλη Α. Στη κενή στήλη Β εισάγεις μια συνεχή αρίθμηση σε όλο το ύψος (που αντιστοιχεί στη στήλη Α) Η αρίθμηση θα ξεκινήσει από ένα πολύ μεγάλο αριθμό πχ 10000001, 10000002, 10000003, 10000004 κλπ. Στη στήλη C εισάγεις τη απλή συνάρτηση:

    =B1&A1
    

    Ταξινομείς τις 3 στήλες Α,Β,C (και φυσικά μαζί τις άλλες στήλες που συναποτελούν τα δεδομένα σου) σε αύξουσα ταξινόμηση ως προς τη στήλη C. Τα δεδομένα της στήλης Α θα εμφανιστούν στο τέλος της στήλης όλα μαζί σε σωστή σειρά και στη στήλη D εισάγεις την αρίθμηση που θέλεις δίπλα τους. Ταξινομείς τις στήλες A,B,C,D σε αύξουσα ταξινόμηση ως προς τη στήλη B και όλα ξαναγυρίζουν στη σωστή θέση. Διαγράφεις εντελώς τις στήλες B & C. Είναι πια άχρηστες.
    (δ) Και μία ακόμα λύση, πιο τεχνική:
    Στη στήλη A (ή, αν η Α είναι μέρος ενός πίνακα, σε όλο τον πίνακα) εισάγεις αυτόματο φίλτρο. Φιλτράρεις την Α ώστε να εμφανιστούν όλες οι γραμμές που περιέχουν τίτλους και να κρυφτούν οι κενές (Τσεκάρεις “Επιλογή όλων” και δεν τσεκάρεις “κενά”). Έστω ότι μετά το φίλτρο, οι φιλτραρισμένες εγγραφές στην στήλη Α αρχίζουν από το κελί Α3 και τελειώνουν στο Α500 (φυσικά θα βλέπεις αριστερά τους αριθμούς των γραμμών σε μπλε χρώμα και θα υπάρχουν κενά στην αρίθμηση). Θα εισάγεις την αρίθμηση στην κενή στήλη Β. Επιλέγεις τα κελιά Β3:Β500. Πατάς F5. Εμφανίζεται το πλαίσιο: “Μετάβαση σε:” Πατάς: “Ειδικά σε…» Στη νέα καρτέλα τσεκάρεις “ΕΜΦΑΝΗ ΚΕΛΙΑ ΜΟΝΟ» ΚΑΙ πατάς ΟΚ. Τώρα στη στήλη Β είναι επιλεγμένα μόνο τα κελιά της Β που αντιστοιχούν σε εγγραφές της Α. Όπως είναι επιλεγμένα αυτά τα κελιά γράφεις στο πρώτο (ενεργό) κελί, στο παράδειγμά μας θα είναι το Β3, τον τύπο:

    =SUBTOTAL(103;$A$3:A3)
    

    Τώρα προσοχή!, μόλις γράψεις τον τύπο, δεν πατάς Enter, αλλά ταυτόχρονα Ctrl και Enter. Θα δεις να εμφανίζεται η αρίθμηση που ζητάς. Κατήργησε το φίλτρο και είσαι έτοιμη. Αν θέλεις, αντικαθιστάς τους τύπους με αξίες, όπως είπαμε στο (α)
    Οι παραπάνω λύσεις είναι συμβατές με όλες τις εκδόσεις του excel.

  77. Ο/Η anna_m λέει:

    Σας ευχαριστώ πάρα πολύ για την άμεση απάντησή σας!

  78. Ο/Η ANDREAS λέει:

    Γεια σου Ιωάννη.
    Και από εμένα τα συγχαρητήρια. Μου έχεις λύσει ήδη αρκετές απορίες χωρίς να σε ενοχλήσω.
    Έχω μια βάση δεδομένων και θέλω με κώδικα να πηγαίνω στην τελευταία εγγραφή (όχι με hypelink).
    Σε ευχαριστώ εκ των προτέρων.

  79. Ο/Η vioannis λέει:

    Γεια και σε σένα Αντρέα,
    Με την παρακάτω μάκρο πας στην τελευταία εγγραφή της στήλης Α. Αν ενδιάμεσα υπάρχουν κενά κελιά, αγνοούνται. Άλλαξε τη στήλη : “A” κατά τις ανάγκες σου.
    Αν αλλάξεις τη γραμμή:

     
    Cells(myLastRow, "A").Select
    

    σε

    Cells(myLastRow+1, "A").Select
    

    Θα μεταφέρεσαι στο πρώτο κενό κελί (της στήλης Α), αμέσως μετά την τελευταία εγγραφή.
    Η μάκρο:

     
    Sub GoToLasrRow()
    Dim myLastRow As Long
    myLastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Cells(myLastRow, "A").Select
    End Sub
    
  80. Ο/Η vioannis λέει:

    Αντρέα, έκανε μια μικρή διόρθωση στον κώδικα ώστε να μπορεί να τροποποιηθεί για όποια στήλη θέλεις, με αλλαγή του “A”. Δες τη διορθωμένη εκδοχή, συγγνώμη για την αβλεψία.

  81. Ο/Η ANDREAS λέει:

    Εκπληκτικός. Σ ευχαριστώ πολύ.
    Θα επανέλθω με άλλα θέματα (τώρα που σε βρήκαμε!!!)

  82. Ο/Η vioannis λέει:

    Αντρέα ευπρόσδεκτος! Δεν ξέρω τα πάντα, αλλά θα βάλω τα δυνατά μου….

  83. Ο/Η Κώστας λέει:

    Γιαννή καλήσπερα,
    Θέλω μια μικρή βοήθεια αν γίνετε ,σε αυτή την Macro θέλω να εντάξω και το την εντολή «paste link»

    Sub parse_data()
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim icol As Long
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    vcol = 1 ' H STHLH BASEI THS OPOIAS 8A KANEIS TO SPLIT
    Set ws = Sheets("suppliers")  ' TO ONOMA TOY SHEET
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:M65000" ' TO EYROS TON KELION POY 8A PAREI
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 To lr
    On Error Resume Next
    If ws.Cells(i, vcol)  "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
    ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
    End If
    Next
    myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
    ws.Columns(icol).Clear
    For i = 2 To UBound(myarr)
    ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
    If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
    Else
    Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
    End If
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    End Sub
    

    Ευχαριστώ εκ των προτέρων

  84. Ο/Η vioannis λέει:

    Κώστα, δεν ήσουν πολύ γενναιόδωρους στη περιγραφή του κώδικα. Πολλές φορές ο κώδικας δεν γίνεται εύκολα κατανοητός αν δεν συνοδεύεται και από περιγραφή του φύλλου ή του βιβλίου πάνω στο οποίο ενεργεί ή δεν μας πουν ακριβώς τι κάνει. Επειδή τις συζητήσεις μας εδώ, παρακολουθούν αρκετοί φίλοι του ιστολογίου, θα επιχειρήσω την περιγραφή, αν κάνω λάθη με διορθώνεις. Λοιπόν, έχεις μια μεγάλη βάση (πίνακα, περιοχή) την A1:M65000 στο φύλλο suppliers. Κάνεις διαδοχικά φίλτρα όλης της βάσης ως προς το πρώτο πεδίο (στήλη), για όλες τις μοναδικές τιμές της στήλης αυτής, και για το κάθε φιλτράρισμα που παίρνεις , δημιουργείς και προσθέτεις στο βιβλίο ένα φύλλο με όνομα φύλλου τη τιμή ως προς την όποια φιλτράρισες. Στο φιλτραρισμένο νέο φύλλο, ο κώδικας φροντίζει να μεταφέρει από το αρχικό φύλλο suppliers, τιμές (αξίες), Δηλαδή τη στατική εικόνα του φύλλου εκείνης της στιγμής. Αντίθετα εσύ ζητάς το κάθε νέο φύλλο να αποτελείται από συνδέσεις προς το αρχικό. Έτσι είναι; Μιλάμε για 13*65000=845.000 συνδέσεις!

  85. Ο/Η Kώστας λέει:

    Γιάννη, ζητώ συγγνώμη για την περιγραφή μου, απλά εκείνη την ώρα το έφτιαχνα και είπα άπλα τι σκεφτόμουν όπως το σκεφτόμουν.
    Παρόλα αυτά όμως τα περιέγραψες ακριβώς όπως είναι τα πράγματα.
    Ναι, αυτά ήθελα, το κάθε φύλλο να αποτελείται από σύνδεση με το αρχικό μου φύλλο «suppliers» στην προκειμένη, και όλο αυτό να το εντάξω στην παραπάνω macro που είδες.
    Όπως και να χει ευχαριστώ για την γρήγορη απάντηση σου!
    Είσαι πολύ σωστός και γνώστης δυνατός, συνέχισε έτσι!

  86. Ο/Η vioannis λέει:

    Κώστα, θα το δω αύριο/

  87. Ο/Η vioannis λέει:

    Κώστα, μετά τον τελευταίο End if, τον κώδικα που μου έστειλες, τροποποίησε τον ως εξής:

    End If
    ws.Range("A" & titlerow & ":A" & lr).Resize(lr, Range(title).Columns.Count - 2).Copy
    ActiveSheet.Range("A1").Select
    ActiveSheet.Paste Link:=True
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    Application.CutCopyMode = False
    End Sub
    

    Στο παράδειγμα που έστησα για να τον δοκιμάσω, δούλεψε άψογα. Πες μου αν δούλεψε και στο δικό σου βιβλίο. Το θέμα δημιουργίας φύλλων μετά από φιλτράρισμα είναι ενδιαφέρον και χρήσιμο. Ισως παρουσιάσω την δική μου εκδοχή στο ιστολόγιο, ελπίζω σύντομα.

  88. Ο/Η Μάριος λέει:

    Γιάννη καλησπέρα! Μετά από πολύ καιρό απουσίας μου διαπιστώνω με χαρά ότι συνεχίζεις τον αγώνα σου στο να μας στηρίζεις και να μας βοηθάς στους όποιους προβληματισμούς μας αναφορικά με το excel. Για πολλοστή φορά συγχαρητήρια!!!! Είναι τα πιστεύω μου και όχι καλοπιάσματα που πιθανόν κάποιοι να σκεφτούν!!
    Λοιπόν Γιάννη σου θέτω έναν προβληματισμό.
    Έχω δύο φύλλα εργασίας. Στο 1ο φύλλο πληκτρολογώ κάποιες τιμές στα κελιά της στήλης (Β) ενώ στο κελί F1 έχει εισαχθεί η ημερομηνία με την συνάρτηση =TODAY()
    Στο 2ο φύλλο οι παραπάνω τιμές ενημερώνονται αυτόματα μέσω της συνάρτησης =IF(DAY(‘Φύλλο 1’!F1)=15;’Φύλλο 1!B7;»») έτσι ώστε να φαίνεται η τιμή μόνο την τρέχουσα ημέρα για όλες τις ημέρες του μήνα ξεχωριστά(σε κάθε κελί και μία ημέρα εως 31).
    Το πρόβλημα όμως είναι ότι ενώ η τιμή στο κελί Β7 του φύλλου 1 μπορεί να μεταβάλλεται καθημερινά ή να μένει σταθερή πως θα γινόταν να κρατούνται και να φαίνονται οι τιμές των προηγούμενων ημερών έτσι ώστε στο τέλος του μήνα να είχα συνολική εικόνα για όλες τις μεταβολές του κελιού Β7 στη διάρκεια των 31 ημερών; Υπάρχει τρόπος να δουλεύει η συνάρτηση ή κάποια μάκρο μόνο την τρέχουσα ημέρα και στην αλλαγή ημέρας το βράδυ στις 24:00 να αφήνει τα αριθμητικά δεδομένα εως εκείνη τη στιγμή στην προηγούμενη ημέρα ως αριθμό και μόνο; Περιμένω εναγωνίως
    Με φιλικούς χαιρετισμούς
    Μάριος

  89. Ο/Η vioannis λέει:

    Μάριε, καλώς όρισες. Για δες και εφάρμοσε στη σελίδα αυτή με τα “μικρά”, το μικρό με αριθμό (14: Εισαγωγή χρόνου σε διπλανό κελί κατά την πληκτρολόγηση. Νομίζω λύνει το πρόβλημά σου. Άλλος τρόπος είναι τη στήλη Β στο φύλλο1 που έχει τις συναρτήσεις TODAY να τις αντικαθιστάς με αξίες στο τέλος της δουλειάς σου, χειριστικά ή αναθέτοντας αυτή τη δουλειά σε μια μάκρο την οποία θα καλείς είτε χειριστικά είτε αυτόματα πριν τα συμβάντα κλεισίματος ή αποθήκευσης του βιβλίου. Αλλά νομίζω το μικρό 14 είναι το καλλίτερο. Τα ξαναλέμε.

  90. Ο/Η Μάριος λέει:

    Γιάννη σ’ευχαριστώ για τις συμβουλές σου το δοκίμασα και δουλεύει άψογα. Όμως δεν καλύπτει αυτό που θέλω. Στο 1ο φύλλο και σε ένα μόνο κελί υπάρχει η συνάρτηση TODAY απλά και μόνο για να μην αλλάζω την ημερομηνία χειριστικά κάθε μέρα.Τώρα στο ίδιο φύλλο και σε κάποια κελιά στην στήλη Β πληκτρολογώ κάποιες τιμές οι οποίες αντιστοιχούν σε κάποια κελιά τις στήλης Α.
    Αυτό που θέλω είναι η τιμή που πληκτρολογώ σε κάθε κελί της στήλης Β στο φύλλο 1 κάθε μέρα, να μεταφέρεται στα κελιά Β1,C1,D1, E1,……..AF1 (31 κελιά που αντιστοιχούν σε 31 μέρες) του 2ου φύλλου. πχ. 1ο φύλλο κελί Β7 στις 18/5/2014 (σύμφωνα με συνάρτηση today) πληκτρολογώ την τιμή 513. Αυτή η τιμή θα πρέπει να φαίνεται στο 2ο φύλλο στο κελί S1(δεδομένου ότι Β1=1,C1=2,D1=3,E1=4, ……..AF1=31 όπου 1,2,3,4,….31 οι μέρες του μήνα). Την επόμενη μέρα στις 19/5/2014 στο 1ο φύλλο και στο κελί Β7 πληκτρολογώ νέα τιμή 218. Αυτή η νέα τιμή θα πρέπει να φαίνεται στο 2ο φύλλο στο κελί Τ1 σύμφωνα με το παραπάνω σκεπτικό. Χωρίς όμως να έχει διαγραφεί η τιμή στο κελί S1 του 2ου φύλλου που είχα πληκτρολογήσει στο κελί Β7 του φύλλου 1 στις 18/5/2014. Πιστεύω να μην σε μπέρδεψα και ελπίζω να υπάρχει κάποια λύση. Ευχαριστώ προκαταβολικά!!!

  91. Ο/Η vioannis λέει:

    Μάριε, μια λύση είναι να μεταφέρεις τα δεδομένα από το πρώτο φύλλο στο δεύτερο με μακροεντολή. Από τα παρακάτω δύο παραδείγματα, το πρώτο κάνει κυριολεκτικά αυτό που περιγράφεις και η δεύτερη μεταφέρει όσα στοιχεία βρει στη Β1:Β200 του φύλλου 1 στη κατάλληλη στήλη του φύλλου 2 , κάτω από τα άλλα που πιθανά υπάρχουν εκεί από άλλη χρήση. Την TOODAY ημερομηνία υπέθεσα στο κελί Α1. Προσαρμόζεις κατάλληλα κατά τις ανάγκες σου.

    Sub testA()
    Dim firstSh As String
    Dim secondSh As String
    Dim mytoday As Date
    firstSh = "Φύλλο1"
    secondSh = "Φύλλο2"
    mytoday = Worksheets(firstSh).Range("A1").Value
    Worksheets(secondSh).Cells(1, Day(mytoday)) = Worksheets(firstSh).Range("B7").Value
    End Sub
    ‘-----------------------------------
    Sub testB()
    Dim firstSh As String, secondSh As String
    Dim mytoday As Date
    Dim pl As Integer
    Dim myCopyRange As Range
    firstSh = "Φύλλο1"
    secondSh = "Φύλλο2"
    Set myCopyRange = Worksheets(firstSh).Range("B1:B200")
    mytoday = Worksheets(firstSh).Range("A1").Value
    pl = Worksheets(secondSh).Cells(Rows.Count, Day(mytoday)).End(xlUp).Row
    myCopyRange.Copy
    Worksheets(secondSh).Activate
    Cells(pl + 1, Day(mytoday)).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    End Sub
    
  92. Ο/Η Μάριος λέει:

    Γιάννη είσαι απλά καταπληκτικός!! Ευχαριστώ θερμά!!

  93. Ο/Η Κώστας λέει:

    Γιάννη σε υπερευχαριστώ,όντως δούλεψε αυτο που μου έστειλες, απλα το -2 στη γραμμή
    «ws.Range(«A» & titlerow & «:A» & lr).Resize(lr, Range(title).Columns.Count – 2).Copy»
    κόβει 2 στηλές σύνεπώς το εσβησα και ήρθε κουτί.
    Ευχαριστώ πάρα πολύ και πάλι!

  94. Ο/Η ΓΙΆΝΝΗΣ λέει:

    Γειά σου Γιάννη εγώ πρώτη φορά επικοινωνώ μαζί σας μετά από αναζήτηση λύσης στο προβλημά μου έκανα μια περιήγηση και σε βρήκα και βλέπω πραγματικά πόσο βοηθάς τον κόσμο στα προβληματά του στο excel και συγχαρητήρια γι’αυτή σου την προσφορά και από την άλλη θα ήθελα να με βοηθήσεις και μένα σε ένα μάλλον ευκολότερο πρόβλημα το οποίο είναι το εξής : εγώ φτιάχνω βαθμολογίες στο excel για ένα πρωτάθλημα και ήθελα μια συνάρτηση να βγαίνουν αυτόματα οι νίκες οι ήττες και οι ισοπαλίες αφού πληκτρολογήσω τα γκόλ σε δύο ξεχωριστά κελιά όταν το ένα είναι μεγαλύτερο νούμερο από το άλλο να ενημερώνει το αντίστοιχο κελί της νίκης της ήττας και της ισοπαλίας

    ευχαριστώ Γιάννης

  95. Ο/Η Νίκος λέει:

    Καλησπέρα,
    Αφου σας δώσω κι εγω τα συγχαρητήρια μου για την πολύ καλή σας δουλειά εδώ, θα ήθελα να σας ρωτήσω το εξής :
    Προσπαθώ μεσω μιας macro να σώσω ενα XLόφυλλο σαν PDF και στην συνέχεια να το τυπώνω. Θέλω όμως να δίνω κάθε φορά διαφορετικό όνομα στο pdf που θα δημιουργείται, γιατί αλλάζουν κάποια στοιχεία στο φύλλο ( ενα από αυτά ειναι και η αρίθμιση για την οποία χρησιμοποιώ τον κώδιακ που δίνετε πιο πάνω). Όταν κάνω record την macro καταγράφω το ονομα που δίνω την πρώτη φορά και φυσικά αυτό επαναλαμβάνεται οταν τρέχω την macro…
    Υπάρχει κάποια λύση στο πρόβλημά μου ?

  96. Ο/Η vioannis λέει:

    Γιάννη
    Ας πούμε ότι το σκορ το γράφεις στα κελιά Α1 και Β1.
    Στο κελί C1 γράψε τον τύπο:

     
    =IF(A1>B1;"NI";"")
    

    Στο κελί D1 γράψε τον τύπο:

     
     =IF(A1=B1;"ΙΣ";"")
    

    Στο κελί E1 γράψε τον τύπο:

     
    =IF(A1<B1;"ΗΤ";"")
    

    Έτσι, αν το σκορ είναι 5-3 θα δεις στο κελί C1: ΝΙ, αν είναι 5-5 θα δεις στο κελί D1: ΙΣ, και αν είναι 3-5 θα δεις στο κελί D1 : HT.
    Αν θέλεις, όλες οι περιπτώσεις να είναι στο ίδιο κελί, τότε στο κελί αυτό γράψε τον τύπο:

     
    =IF(A1>B1;"NI";IF(A1<B1;"HT";"IΣ"))
    
  97. Ο/Η vioannis λέει:

    Νίκο,
    Ενεργοποίησα τον καταγραφέα μακροεντολών και αποθήκευσα το βιβλίο μου (στην επιφάνεια εργασίας) σαν pdf με όνομα “Βιβλίο1.pdf» και πήρα από τον καταγραφέα την παρακάτω μάκρο

    Sub Μακροεντολή1()
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:="C:\Users\User\Desktop\Βιβλίο1.pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    End Sub
    

    Στη συνέχεια τροποποίησα τη μάκρο αυτή έτσι :

    Sub Μακροεντολή2()
    Dim i As Integer
    Dim mypath As String
    Dim myname As String
    mypath = "C:\Users\User\Desktop\"
    For i = 1 To 10
    myname = ActiveWorkbook.Worksheets("Φύλλο2").Cells(i, "A").Value
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=mypath & myname & ".pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    
    Next i
    End Sub
    

    Η μάκρο αυτή δημιουργεί 10 αντίγραφα σε μορφή pdf, με 10 διαφορετικά ονόματα τα οποία διαβάζει από τα κελιά Α1:Α10 του φύλλου2 του ίδιου βιβλίου.
    Βοηθάει αυτό;

  98. Ο/Η Νίκος λέει:

    Καλησπέρα και ευχαριστώ για την απάντηση.
    Δεν ειχα ακριβώς αυτό στο μυαλό μου, αλλά η παραπάνω macro μου εδωσε νέες ιδέες και μάλλον θα βγει καλύτερο απο αυτό που σχεδίαζα !
    Αυτο που περιέγραψα νομίζω καλυπτεται με τον παρακάτω κώδικα που «ψαρεψα» στο διαδίκτυο – εάν κάποιον ενδιαφέρει –

    Fname = Application.GetSaveAsFilename(«», «PDF Files (*.pdf), *.pdf»)
    ActiveSheet.ExportAsFixedFormat xlTypePDF, Fname, xlQualityStandard, , , , , True

    Ευχαριστώ και πάλι

  99. Ο/Η Stelios Xirouchakis λέει:

    Καλημερα Γιαννη,
    Πολυ καλο που βρισκεις λυσεις στα προβληματατα αρκετων εδω μεσα,
    ισως μπορεις να δωσεις λυση και στο δικο μου προβλημα.
    Σε ενα φυλλο εργασιας εχω σε καποια φυλλα εισαγει ταινιες mp4,
    γινεται οταν επιλεγω το συνκεριμενο φυλλο να αρχιζει να αναπαραγεται αυτοματα το αρχειο mp4?
    αν δεν γινεται αυτο με αρχεια mp4, με τι ειδους αρχεια ταινιων μπορω να εχω την αυτοματη αναπαραγωγη?
    ευχαριστω πολυ Στελιος

  100. Ο/Η Μάριος λέει:

    Γιάννη καλημέρα και να είσαι πάντα καλά!! Η ερώτησή μου είναι: Μπορεί στο excel να λειτουργήσει (τρέχει) χρονόμετρο κανονικά και αν θέλω αντίστροφα; (ώρα,λεπτά δευτερόλεπτα) και αν ναι με ποιον τρόπο; (υφιστάμενη συνάρτηση,συνάρτηση χρήστη ή macro) έχω office 2007. Υπάρχει δυνατότητα να το βλέπω να τρέχει και όχι να το κάνω χειριστικά ή να καλώ συνεχώς κάποια macro; Σε ευχαριστώ προκαταβολικά.
    Με φιλικούς χαιρετισμούς
    Μάριος.

  101. Ο/Η vioannis λέει:

    Στέλιο, το ίδιο το ίδιο το excel δεν μπορεί να εκτελέσει αρχεία mp4, mp3 και γενικά αρχείων ψηφιακών πολυμέσων. Αλλά μπορεί να καλέσει το Windows Media Player το οποίο θα αναλάβει την αναπαραγωγή των ψηφιακών πολυμέσων από τον υπολογιστή σου ή από το δίκτυο.
    Γράψε σε ένα κελί, ας πούμε το Α1, ολόκληρη τη διαδρομή ενός τέτοιου αρχείου. Παράδειγμα:
    C:\Users\Public\Music\Sample Music\Sleep Away.mp3
    Στο διπλανό κελί B1 γράψε τη συνάρτηση

    =HYPERLINK(A1; "Sleep Away")
    

    Δηλαδή στο κελί Β1, δημιουργείς μία υπερσύνδεση προς το mp3. Κάνε κλικ πάνω στο κελί Β1 και αμέσως θα ανοίξει ο Windows Media Player και θα εκτελέσει το μουσικό παράδειγμα. Η συνάρτηση HYPERLINK δέχεται δύο ορίσματα.Το πρώτο είναι το κελί που περιέχει ολόκληρη την διαδρομή του αρχείου, είτε αυτό είναι σε κάποιο δίσκο σου είτε είναι στο δίκτυο. Το δεύτερο όρισμα είναι ένα φιλικό όνομα που θα βλέπεις στο κελί Β1. Εγώ έγραψα «Sleep Away», αλλά εσύ, μέσα σε εισαγωγικά πάντα, γράψε όποια φράση θέλεις. Για να περάσεις πολλές τέτοιες ολόκληρες διαδρομές ψηφιακών πολυμέσων, από τους δίσκους σου, στα κελιά του excel, θα σε διευκολύνει η πρώτη μακροεντολή MakeFilesList, από το σημείωμα του ιστολογίου: “Οργάνωση των αρχείων του υπολογιστή σας μέσα από το excel”. Στο ίδιο το σημείωμα υπάρχει και μία μάκρο που μετατρέπει αυτόματα τις ολόκληρες αυτές διευθύνσεις σε υπερσυνδέσεις . Μπορείς να δουλέψεις με αυτή τη μακροεντολή και όχι με την παραπάνω συνάρτηση, κάνει ακριβώς την ίδια δουλειά. Τέλος μπορείς να δημιουργήσεις και χειριστικά υπερσυνδέσεις: δεξί κλικ πάνω στο κελί, Υπερ_σύνδεση κλπ.
    Ανάλογα με τις ρυθμίσεις του υπολογιστή σου είναι πιθανό, κατά το άνοιγμα των υπερσυνδέσεων να εμφανίζεται ένα μήνυμα που θα προειδοποιεί ότι η θέση που επιχειρείς να ανοίξεις ίσως να μην είναι ασφαλής. Αν αυτό σε ενοχλεί, τότε ακλούθησε τον παρακάτω τρόπο να καλείς το Windows Media Player. Σε ένα module του βιβλίου σου, πέρασε την παρακάτω μακροεντολή και στο φύλλο που σε ενδιαφέρει τοποθέτησε ένα κουμπί για να την καλείς.

    Sub OpenWindowsMediaPlayer()
    Dim WindowsMediaPlayer As Object
    Dim topic As String
    topic = ActiveCell.Value
    On Error GoTo telos
    Set WindowsMediaPlayer = _
    CreateObject("new:{6BF52A52-394A-11d3-B153-00C04F79FAA6}")
    WindowsMediaPlayer.openPlayer topic
    telos:
    End Sub
    

    Επιλέγεις όπως προηγούμενα, ένα κελί που περιέχει την πλήρη διαδρομή προς ένα αρχείο mp4 ή mp3 κλπ, πατάς το κουμπί και αρχίζει η εκτέλεση. Αν το αρχείο είναι στο δίκτυο πιθανά να υπάρξει καθυστέρηση, το αρχείο κατεβαίνει πρώτα στην προσωρινή μνήμη (buffer).
    Τέλος υπάρχει το στοιχείο έλεγχου (ActiveX control), Windows Media Player (WMPlayer.OCX.7) που μπορεί να ενσωματωθεί σε ένα φύλλο excel και να αναλάβει την αναπαραγωγή των ψηφιακών πολυμέσων. Ο προγραμματισμός του όμως, είναι αρκετά πολύπλοκος . Πίνακας των μεθόδων και ιδιοτήτων του εργαλείου υπάρχει εδώ:
    http://msdn.microsoft.com/en-us/library/ee484148(v=winembedded.70).aspx

  102. Ο/Η vioannis λέει:

    Μάριε,
    Στη vba υπάρχει η μέθοδος OnTime. Με τη μέθοδο αυτή, η παρακάτω γραμμή κώδικα, θα τρέξει την μακροεντολή myProcedure σε 15 δευτερόλεπτα από τώρα.

    Application.OnTime Now + TimeValue("00:00:15"), "myProcedure"
    

    Με βάση ατή τη μέθοδο, σκέψου μια διαδικασία, που κάθε δευτερόλεπτο θα καλεί τον αυτό της, και θα γράφει σε ένα κελί τη συνάρτηση φύλλου =NOW(). Έτσι θα έχεις στο κελί ένα ρολόι που θα τρέχει σταθερά και θα κάνει τικ-τακ ανά sec.
    Ο Γκουρού του excel, John Walkenbach, έχει στο ιστολόγιό του ένα τέτοιο ρολόι, με ωραιότατα γραφικά, που μπορεί να είναι αναλογικό ή ψηφιακό. Είναι το excel βιβλίο clockchart.xls, το οποίο μπορείς να κατεβάσεις από εδώ.
    Κλέβοντας την έξυπνη κεντρική ιδέα και την τεχνική του John, με λίγες τροποποιήσεις μπορούμε να έχουμε και χρονόμετρα. Γράψε τον παρακάτω κώδικα σε ένα module του βιβλίου σου.

    Dim NextSecond As Date
    Dim fog As Date
    Dim gof As Date
    Dim eos As Date
    
    Sub StartClock()
    fog = VBA.Time
    gof = Worksheets("Φύλλο1").Range("a4")
    eos = Worksheets("Φύλλο1").Range("b3")
    MyClock
    End Sub
    
    Sub MyClock()
    Dim xronometro As Date
    xronometro = VBA.Time - fog
    With Worksheets("Φύλλο1")
    .Range("a1") = TimeFormat(VBA.Time)
    .Range("a2") = TimeFormat(xronometro)
    If (eos - xronometro) > -0.00001 Then .Range("a3") = TimeFormat(xronometro)
    'Στην περίπτωση που επιλέξεις το χρονόμετρο του κελιού Α3,
    'δηλαδή να σταματάει όταν φτάνει τον μέγιστο χρόνο (κελί Β3),
    'τότε πρέπει να ενεργοποιήσεις και την επόμενη εντολή
    'που με την επίτευξη του μέγιστου χρόνου καλείται η StopClock
    'και τερματίζει την διαδικασία.
    'If TimeFormat(.Range("a3")) = TimeFormat(.Range("b3")) Then Call StopClock: GoTo telos
    If .Range("a4") > 0 Then .Range("a4") = TimeFormat(gof - xronometro)
    'Στην περίπτωση που επιλέξεις το αντίστροφο χρονόμετρο του κελιού Α4,
    'τότε πρέπει να ενεργοποιήσεις και την επόμενη εντολή που με την επίτευξη
    'χρόνου 00:00:00 στο κελί Α4 καλείται η StopClock και τερματίζει την διαδικασία
    'If TimeFormat(.Range("a4")) = TimeFormat(0) Then Call StopClock: GoTo telos
    End With
    NextSecond = VBA.Time + TimeValue("00:00:01")
    Application.OnTime NextSecond, "MyClock"
    telos:
    End Sub
    
    Sub StopClock()
    On Error Resume Next
    Application.OnTime NextSecond, "MyClock", , False
    End Sub
    
    Private Function TimeFormat(myTime As Date) As Variant
    TimeFormat = VBA.Format(myTime, "hh:mm:ss")
    End Function
    

    Καλώντας τη μακροεντολή StartClock:
    Α) στο κελί Α1 του Φύλλου1 θα εμφανιστεί η τρέχουσα ώρα του υπολογιστή σου η οποία θα αλλάζει αυτόματα ανά sec.
    Β) στο κελί Α2 θα αρχίσει να τρέχει ένα χρονόμετρο ξεκινώντας από 00:00:00
    Γ) στο κελί Α3 θα αρχίσει να τρέχει ένα χρονόμετρο ξεκινώντας από 00:00:00, το οποίο θα σταματήσει στο χρόνο που έχεις γράψει στο κελί Β3. Αν στο κελί Β3 γράψεις 01:05:00, το χρονόμετρο στο κελί Α3 θα σταματήσει σε 1 ώρα και 5 λεπτά.
    Δ) στο κελί τρέχει ένα χρονόμετρο που ξεκινά από το χρόνο που έχεις εισάγει εκεί και τρέχει προς τα πίσω (ανά sec)έως να μηδενίσει, και τότε σταματά.
    Για να σταματήσουν οι χρόνοι στις περιπτώσεις Α και Β, πρέπει να καλέσεις την μάκρο StopClock. Αν επιλέξεις μία από τις περιπτώσεις Γ ή Δ η StopClock θα κληθεί από την ίδια την διαδικασία StartClock, όταν ολοκληρωθεί η χρονομέτρηση. Δες και τις παρατηρήσεις στο σώμα του κώδικα. Σε κάθε περίπτωση στο ThisWorkbook του βιβλίου σου πρέπει απαραίτητα να περάσεις τον παρακάτω κώδικα, ο οποίος εξασφαλίζει τη διακοπή της μεθόδου OnTime κατά την έξοδο από το βιβλίο

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    StopClock
    End Sub
    

    Πρόσεξε ότι η μέθοδος OnTime με τον τρόπο που την χρησιμοποιούμε παραπάνω δεν είναι κατάλληλη α) για μεγάλα σε μέγεθος βιβλία β) για ταυτόχρονο άνοιγμα πολλών βιβλίων γ) δεν θα συμπεριφερθεί καλά αν μία άλλη OnTime μέθοδος τρέχει από το ίδιο ή άλλα βιβλία.

  103. Ο/Η Νικος λέει:

    Γιάννη καλημέρα,
    Πες μου σε παρακαλώ εάν υπάρχει κάποια εύκολη λύση στο παρακάτω πρόβλημα μου.
    Προσπαθώ να φτιάξω ενα απλό βιβλίο εσόδων εξόδων ανα ημέρα του μήνα ( χωρις τις Κυριακές)
    οπου κάτω από καθε ημερομηνία να υπάρχει ενα πινακάκι που θα καταχωρώ σε μια στήλη εσοδα και στην άλλη εξοδα. Υπάρχει κάποιος τρόπος να εισάγω στο Α1 την πρώτη ημέρα του μήνα ( πχ Δευτέρα 1/1/2014 ) και να μου δημιουργεί στο Α11 την επόμενη ημέρα ( πχ Τρίτη 2/1/2014 ) στο Α22 την τρίτη μέρα κλπ έως το τέλος του μήνα ?
    Εκτός εάν υπάρχει κάτι έτοιμο που θα μπορούσα με τις απαραίτητες τροποποιήσεις να το χρησιμοποιήσω.

    Ευχαριστώ

  104. Ο/Η vioannis λέει:

    Νίκο,
    Στο κελί Α1 γράψε την αρχική ημερομηνία, έστω 1/1/2014. Στο κελί Α2 γράψε τον τύπο:

    =IF(MOD(ROW();11)=0;MAX($A$1:A1)+1;"")
    

    και αντίγραψέ τον (σύρε) αρκετά κάτω στη στήλη Α. Στα κελιά Α2 έως Α10 ο τύπος δεν θα επιστρέψει τίποτα, αλλά στο κελί Α11 θα επιστέψει 2/1/2014, στο κελί Α22 θα επιστρέψει 3/1/2014 κλπ. Αν θέλεις λιγότερα ή περισσότερα κενά κελιά μεταξύ των ημερομηνιών, μείωσε ή αύξησε τον αριθμό 11 στον τύπο. Μην ξεχάσεις να μορφοποιήσεις τη στήλη Α, σε μία μορφή ημερομηνιών που σε εξυπηρετεί. Αλλάζοντας την αρχική ημερομηνία στο κελί Α1, αυτόματα αλλάζουν και οι άλλες διαδοχικές ημερομηνίες στη στήλη.
    Αν θέλεις να μην εμφανίζονται τα Σάββατα στη στήλη, χρησιμοποίησε τον παρακάτω τύπο:

    =IF(MOD(ROW();11)=0;MAX($A$1:A1)+1+(WEEKDAY(MAX($A$1:A1)+1;1)=7);"")
    

    Αν θέλεις να μην εμφανίζονται οι Κυριακές, χρησιμοποίησε τον:

    =IF(MOD(ROW();11)=0;MAX($A$1:A1)+1+(WEEKDAY(MAX($A$1:A1)+1;1)=1);"")
    

    Τέλος, αν δεν θέλεις ούτε τα Σάββατα ούτε τις Κυριακές τον:

    =IF(MOD(ROW();11)=0;MAX($A$1:A1)+1+(WEEKDAY(MAX($A$1:A1)+1;1)=7)+(WEEKDAY(MAX($A$1:A1)+2;1)=1);"")
    
  105. Ο/Η Νικος λέει:

    Γιαννη σε ευχαριστώ πολύ

  106. Ο/Η ΒΑΣΙΛΗΣ ΤΕΓΟΣ λέει:

    Καλησπέρα από την Σκόπελο.
    Δεν μπορείς να φανταστείς φίλε μου πόσα προβλήματα μας λύνεις με τον κόπο σου .
    Έχω μια ερώτηση, αν μπορείς να με βοηθήσεις και πάλι:
    Σε ένα φύλλο ας το λεμε κωδικούς έχω 10,000 κωδικούς με την περιγραφη τους διπλα σε άλλο κελί:
    π.χ: Α Β C
    1 01-01-02 KATSABIDI 5.42€
    2 05-02-03 ΒΟΥΡΤΣΑ 3,61€

    Θα ήθελα σε ένα άλλο φύλλο να πατάω τον κωδικό πχ 05-02-03 και να μου βγάζει δίπλα
    την περιγραφη και την τιμή, μπορεις να με βοηθήσεις σε παρακαλώ???

  107. Ο/Η vioannis λέει:

    Καλημέρα στην όμορφη Σκόπελο!
    Βασίλη, το πρόβλημά σου είναι ένα κλασικό παράδειγμα για τη συνάρτηση vlookup. Όρισε με ένα δυναμικό όνομα τα δεδομένα στο φύλλο των κωδικών και χρησιμοποίησε αυτό το όνομα στο όρισμα table_array της vlookup. Δες όλες τις λεπτομέρειες στο βιβλίο skopelosexample.xls

  108. Ο/Η ΒΑΣΙΛΗΣ ΤΕΓΟΣ λέει:

    καλημέρα και πάλι,
    ευχαριστώ πολύ το έκανα και πέτυχε!!!
    Ακόμη μια λύση για εμάς τους κοινούς θνητούς, ευχαριστώ και πάλι για το χρόνο σου.

  109. Ο/Η ΑΛΕΞΑΝΔΡΑ λέει:

    Καλησπερα εχω και εγω ενα θεμα…. θελω μεσα στο excel σε οποιοδηποτε κελι να γραφω πχ Γιαννης και να μου εμφανιζει απευθειας ο Γιαννης εχει καφε μαλλια και πρασινα ματια..εχω σπασει το κεφαλι μου δοκιμασα και καποιες απο τις εντολες οπως substitute αλλα δε καταφερα τιποτα…αν μπορουσατε να με βοηθησατε θα το εκτιμουσα πολυ!! ευχαριστωω..

  110. Ο/Η vioannis λέει:

    Και από πού θα ξέρει, Αλεξάνδρα, το excel ότι ο Γιάννης είναι τόσο όμορφος; Από κάποιο πίνακα προφανώς που θα περιέχει τις ιδιότητες του Γιάννη και άλλων όμορφων ανθρώπων. Ένα πίνακα που θα έχει πρώτη στήλη με ονόματα, και δεξιά στήλες με χρώμα ματιών, χρώμα μαλλιών κλπ. Μετά θα αναλάβει η συνάρτηση VLOOKUP. Δες ακριβώς πιο πάνω τη συζήτηση με τον Βασίλη και το βιβλίο με το παράδειγμα. Αν τις επιστροφές από τις VLOOKUP θέλεις να τις ενοποιήσεις σε μία πρόταση, πειραματίσου με την CONCATENATE. Αν δεν κατάλαβα καλά, επανέρχεσαι άφοβα, περιγράφοντας πιο αναλυτικά το πρόβλημα.

  111. Ο/Η ΑΛΕΞΑΝΔΡΑ λέει:

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

  112. Ο/Η ΒΑΣΙΛΗΣ ΤΕΓΟΣ λέει:

    καλησπέρα και πάλι Γιάννη.
    Έχω ακόμη μια ερώτηση αν μπορείς να με βοηθήσεις:
    σε ένα φύλλο στη στήλη Α μπαινουν καθε μερα καποιοι κωδικοί και στην στήλη Β τα τεμαχια
    αυτών των κωδικών.
    πως μπορώ να έχω σε ένα άλλο φυλλο το συνολο των τεμαχίων απο κάθε κωδικό που μπαίνει
    στην στήλη ? και πρέπει να ξέρεις ότι θα υπαρχουν βεβαια και επαναλαμβανομενοι κωδικοι με διαφορες ποσοτητες στη στηλη Β.
    Ευχαριστώ εκ των προτερων

  113. Ο/Η vioannis λέει:

    Με τη συνάρτηση SUMIF. Αν τα δεδομένα σου είναι στο Φύλλο1, τότε πήγαινε σε ένα άλλο φύλλο και στη στήλη Α (κελί Α2 και κάτω) γράψε του κωδικούς μία φορά τον καθένα. Στη στήλη Β και στο κελί Β2 γράψε τον τύπο:

    =SUMIF(Φύλλο1!A:A;A2;Φύλλο1!B:B)
    

    και αντίγραψέ τον έως το κελί που αντιστοιχεί στον τελευταίο μοναδικό κωδικό.
    Αν δεν θέλεις να χρησιμοποιήσεις στον τύπο, ολόκληρες τις στήλες Α:Α και Β:Β, τότε γράψε κάπως έτσι:

     
    =SUMIF(Φύλλο1!$A$1:$A$99999;A2;Φύλλο1!$B$1:$B$99999)
    

    Όπου 99999 είναι ο αριθμός γραμμής που υπολογίζεις ότι δεν θα ξεπεράσουν τα δεδομένα σου στο φύλλο1. Φυσικά τον αλλάζεις κατά την εκτίμησή σου.

  114. Ο/Η ΒΑΣΙΛΗΣ ΤΕΓΟΣ λέει:

    Άψογος !!! για ακόμη μία φορά, ΕΥΧΑΡΙΣΤΩ ΠΟΛΥ!!!

  115. Ο/Η Νικος λέει:

    Γιάννη καλησπέρα,
    Παίρνω μια αναφορά απο το site της τραπεζας σε xl το οποίο μου εχει σε μια στήλη το ποσό της καθε κινησης και σε διπλανη στήλη το γραμμα Χ για χρέωση ή το Π για πίστωση.
    Υπάρχει κάποιος τρόπος οταν κάνω αντιγραφή και επικόλληση στο δικό μου βιβλίο, όπου υπάρχει Χ (χρεωση) τότε το ποσό στο διπλανο κελλί να μορφοποιείται σαν Number με αρνητικό πρόσημο μπροστά και με κοκκινους χαρακτήρες ?
    Ευχαριστώ

  116. Ο/Η vioannis λέει:

    Νίκο,
    Αν θέλεις να μορφοποιούνται οι ίδιες οι επικολλημένες τιμές, μπορείς να το κάνει με μία μακροεντολή. Επιλέγεις τα κελιά με τα ποσά που σε ενδιαφέρουν και τρέχεις την παρακάτω μάκρο, την οποία θα περάσεις σε ένα module του βιβλίου σου:

    Sub test()
    Dim stili As Range
    Dim keli As Range
    Dim poso As Variant
    Set stili = Selection
    For Each keli In Selection
    poso = keli.Value
    If (VBA.IsNumeric(poso) And keli.Item(1, 2).Value Like "[ΧΠ]") Then
    keli.NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"
    If keli.Item(1, 2).Value = "Χ" And poso > 0 Then keli = -poso
    End If
    Next
    End Sub
    

    Αν δεν θέλεις να έχεις βιβλίο με μακροεντολές (.xlsm), τότε η μόνη λύση είναι, τις τιμές να τις βλέπεις στη μορφή που ζητάς, σε μία άλλη στήλη. Αν οι τιμές μετά την επικόλληση κάθονται, ας πούμε, στη στήλη Ε και τα Χ και Π στην F, τότε σε μία άλλη κενή στήλη γράφεις τον τύπο:

    =IF(F1="Χ";-E1;E1)
    

    και τον αντιγράφεις προς τα κάτω όσο χρειάζεται. Παράλληλα μορφοποιείς όλη τη στήλη με τον τύπο, σε μια από τις τυποποιημένες μορφές που έχει το excel για αρνητικούς κόκκινους αριθμούς. Αν θέλεις μια προσαρμοσμένη μορφή διάλεξε:

    #.##0,00 €;[Κόκκινο]-#.##0,00 €)
    

    Ή

    0,00_ ;[Κόκκινο]-0,00
     

    Σημείωση: Και στη μάκρο και στον τύπο υπέθεσα πως τα γράμματα Χ και Π είναι κεφαλαία Ελληνικά.

  117. Ο/Η Νίκος λέει:

    Γιάννη καλημέρα
    Σε ευχαριστώ πολύ . ´Εγραψες¨ πάλι …….¨

  118. Ο/Η Evi λέει:

    Γεια χαρά,
    Θα ήθελα την πολύτιμη βοήθειά σας. Έχω 2 ερωτήσεις.
    1) Έχω έναν πίνακα που η 1η στήλη αποτελείται από ημερομηνίες (από 1/1/2014-31/12/2014) και μια μια άλλη στήλη που το κάθε κελί περιέχει μία μόνο λέξη. Πώς μπορεί να μεταφερθεί σε ένα άλλο φύλλο το άθροισμα των ίδιων λέξεων (π.χ διαρροή ή τροχαίο) με βάση τον μήνα; Σε περίπτωση τροποποίησης των δεδομένων του 1ου φύλλου θέλω να αλλάζουν αυτόματα και τα σύνολα στο 2ο φύλλο.
    2) Η μια στήλη πάλι αποτελείται από τις ίδιες ημερομηνίες αλλά η άλλη περιέχει κέιμενο. Πώς θα επιτύχω την μεταφορά του αθροίσματος μιας συγκεκριμένης λέξης από τα κείμενα με βάση το μήνα;
    Ευχαριστώ!

  119. Ο/Η vioannis λέει:

    Evi, υπέθεσα ότι λέγοντας “άθροισμα των ίδιων λέξεων”, εννοείς “πλήθος ίδιων λέξεων”. Σωστά; Το θέμα σου το αντιμετώπισα με συναρτήσεις φύλλου. Τις απαντήσεις στα δύο ερωτήματα που έθεσες, από τα οποία το δεύτερο είναι ενδιαφέρον και μάλλον δύσκολο, θα τις βρεις στο βιβλίο CountOfWordsPerMonth.xlsx όπου έστησα ένα παράδειγμα με βάση την περιγραφή σου. Για κάθε πρόβλημα επανέρχεσαι.

  120. Ο/Η Evi λέει:

    Καλημέρα,
    Ευχαριστώ πολύ για την βοήθειά σας!!
    Με το φιλτράρισμα το προσπάθησα και εγώ. Γίνεται όμως με κάποια συνάρτηση να μου βγάζει αυτόματα τον κάθε μήνα ξεχωριστά; Δηλαδή υπάρχει κάποια συνάρτηση στην οποία μπορώ να τοποθετήσω 2 κριτήρια: το 1ο να είναι χρονικό εύρος (π.χ 1/1/2014-30/1/2014) και το άλλο να είναι κάποια λέξη (π.χ «Τροχαίο») έτσι ώστε να μου εμφανίζει σε ένα κελί το άθροισμα των τροχαίων από την 1/1/2014-30/1/2014;
    Στην χειρότερη περίπτωση, θα το κάνω κάθε φορά με φίλτρο και θα βγάζω με αυτό τον τρόπο τα αποτελέσματα μου.

    Ευχαριστώ και πάλι!

  121. Ο/Η vioannis λέει:

    Evi, αυτό δεν κάνουν οι συναρτήσεις στο 2ο φύλλο του βιβλίου ή τα έχω καταλάβει όλα λάθος;

  122. Ο/Η Evi λέει:

    Ωπ, δεν πρόσεξα το δεύτερο φύλλο!
    Ευχαριστώ πάρα πολύ για την βοήθεια! Θα εφαρμόσω τις συμβουλές σας και αν συναντήσω κάποιο πρόβλημα θα επανέλθω.

  123. Ο/Η stopyes λέει:

    Καλημερα.
    Μαθε το κοσμο να χρησιμοποιη τη κορδελα σε ενα κεφαλαιο πως να γραφει εντολες. Γιατι ολοι αυτοι που γραφουν δουλευουν σε εχελ χωρις να εχουν καταλαβη τιποτα απο το μαγνητοφωνακι τις κορδελας vba.Και εγω που χρησιμοποιω κομπιουτερ απο το 1978 ειχα μαθει τοτε λιγο basic και τοσα χρονια εχελ εμαθα τη κορδελα τα 2 τελευταια χρονια να φανταστεις μονος μου.Πες σε ολους πως να γραφουν προγραμματα χωρις να ξερουν τιποτα. Και εγω ακομα εχω κολληματα γιατι τα αγγλικα μου ειναι λιγα και σε κατι Dim, String,Range,Variant. δεν ξερω ποιο για που χρησιμοποιω και ποτε.Και παντοτε θα εχω προβλημα αν μαθω και αυτα. Οποτε οτι μπορει ο καθενας με τη κορδελα που γραφει τις μακρο αυτοματα δλδ οτι κινηση κανεις τη κανει μετα αυτοματα και αν κανεις 1000 κινησεις μετα με ενα πατημα εντολης τις κανει σε 1 λεπτο.Ολοι ξερουν εχελ αμα ρωτησεις αλλα κανενας δε ξερει τη κορδελα και η πλακα ειναι οτι δουλευουν με αυτο ενω εγω το εχω για χομπυ.

  124. Ο/Η ANDREAS λέει:

    καλησπέρα Γιάννη.
    Σε μία στήλη έχω κάποια δεδομένα που μπορεί και να επαναλαμβάνονται.
    α) Θέλω να βρω τη σχετική θέση ενός δεδομένου που εμφανίζεται την 2η ή την 3η φορά ή την ν-ιοστή φορά. (Κάτι σαν την συνάρτηση match).
    β) Θέλω να βρω τη σχετική θέση του μεγαλύτερου ή του μικρότερου (όταν τα δεδομένα στη στήλη είναι αριθμοί).
    Σε ευχαριστώ εκ των προτέρων και ξανά συγχαρητήρια για την βοήθεια που προσφέρεις σε όλους μας (και συγνώμη αν τυχόν έχεις καλύψει το θέμα και δεν το είδα).

  125. Ο/Η vioannis λέει:

    Αντρέα, αν η στήλη με τα δεδομένα είναι η Α και αρχίζουν από το κελί Α1, τότε σε διπλανό κενό κελί γράψε τον τύπο:

    =COUNTIF($A$1:A1;A1)
    

    Και αντίγραψε προς τα κάτω σε όλο το ύψος των δεδομένων της στήλης Α.
    Πρόσεξε ότι απόλυτη διεύθυνση έχει μόνο το πρώτο Α1, δηλαδή στη 10η γραμμή ο τύπος θα είναι:

    =COUNTIF($A$1:A10;A10)
    

    Αν ζητάς ένα γενικό τύπο που να δέχεται σαν ορίσματα: α) τη στήλη των δεδομένων, β) την τιμή που αναζητάς μέσα στη στήλη και γ) τον αριθμό ν (πχ 3, για την 3η εμφάνιση της τιμής) και να επιστρέφει τη θέση της τιμής στη στήλη, δες τον παρακάτω τύπο:

    =SUMPRODUCT(1/LARGE((στήλη=τιμή)*1/ROW(στήλη);ν)-ROW(πρώτο κελί της στήλης)+1)
    

    Παράδειγμα για τη δεύτερη εμφάνιση της τιμής που είναι στο κελί Β1, στη στήλη Α3:Α103

    =SUMPRODUCT(1/LARGE(($A$3:$A$103=B1)*1/ROW($A$3:$A$103);2)-ROW(A3)+1)
    

    Το άλλο ερώτημα, με την match:

    =MATCH(MAX(στήλη);στήλη;0)
    =MATCH(MIN(στήλη);στήλη;0)
    =MATCH(MAX(A1:A100);A1:A100;0)
    =MATCH(MIN(A1:A100);A1:A100;0)
    

    Αν υπάρχουν πολλαπλές εμφανίσεις της μέγιστης ή της ελάχιστης τιμής, και θέλεις την ν-οστή εμφάνιση, κάνε χρήση του προηγούμενου τύπου και όπου Β1, βάλε max (στήλη) ή min(στήλη) αντίστοιχα. Αν κάτι δείχνει να μην κατάλαβα την ερώτηση, επανέρχεσαι.

  126. Ο/Η ΝΙΚΟΣ ΚΟΤΣΑΛΗΣ λέει:

    Καλησπέρα Γιάννη και συγχαρητήρια για τις γνώσεις και το κέφι σου.
    Προσπαθώ να εμφανίζω κάποιες εγγραφές βάσει κριτηρίων, χρησιμοποιώντας το απλό κουμπί ‘filter’ , αλλά με ενδιαφέρει να αθροίζω αυτές τις φιλτραρισμένες εγγραφές σε ένα κελί. Επίσης να παραμένουν οι πρώτες γραμμές που είναι τίτλοι στηλών, Σημείωσε ότι πρόκειται για βάση δεδομένων με ονόματα-διευθύνσεις κλπ. ΔΕΝ γίνεται κανένας υπολογισμός. Απλά θέλω στο φίλτρο πχ. »ΑΘΗΝΑ» όπου πράγματι έρχονται οι εγγραφές »ΑΘΗΝΑ» , αλλά να μη χάνονται οι τίτλοι στη γραμμή Α και να αναφέρεται το σύνολο των εγγραφών. Απλό για σένα, αλλά εγώ σήκωσα τα χέρια ψηλά.
    Ευχαριστώ θερμότατα και εκ των προτέρων.
    ΝΙΚΟΣ

  127. Ο/Η vioannis λέει:

    Νίκο, θες να πεις να μη χάνονται οι τίτλοι στη γραμμή 1, η Α είναι στήλη. Κανονικά στο απλό φίλτρο οι τίτλοι της πρώτης γραμμής δεν κρύβονται, αρκεί από τη δομή της βάσης να καταλαβαίνει το excel ότι η πρώτη γραμμή είναι τίτλοι. Κάνε κάτι επιπλέον. Στο μενού “Προβολή”, κάνε κλικ στη “Σταθεροποίηση παραθύρων” και από τις τρεις επιλογές που εμφανίζονται διάλεξε την “Σταθεροποίηση πρώτης γραμμής”.
    Για να έχεις συνεχή αρίθμηση των κάθε φορά φιλτραρισμένων τιμών δες στη σελίδα του ιστολογίου “Μικρά και ίσως χρήσιμα” την παράγραφο (3): Αρίθμηση μετά από φιλτράρισμα. Αν η απάντησή μου δείχνει να μην κατάλαβα, επανέρχεσαι

  128. Ο/Η ΝΙΚΟΣ ΚΟΤΣΑΛΗΣ λέει:

    Εννοώ γραμμή 1 …

  129. Ο/Η ΝΙΚΟΣ ΚΟΤΣΑΛΗΣ λέει:

    ευχαριστώ πολύ. Το εφαρμόζω !
    keep up the good work!

  130. Ο/Η ΝΙΚΟΣ ΚΟΤΣΑΛΗΣ λέει:

    Συνεχίστε τον αγώνα τον καλόν…

  131. Ο/Η stella lazaridou λέει:

    Καλησπέρα Γιάννη
    έχω ένα excel που αποτελείτε από πολλά sheet και θέλω αυτά να τυπώνονται με μια εντολή χωρίς να πρέπει να τυπώνω ένα-ένα.Μπορεί να γίνει?
    ευχαριστώ

  132. Ο/Η vioannis λέει:

    Στέλλα, τα βήματα είναι:
    Α)Επίλεξε το πρώτο από τα φύλλα που θέλεις να εκτυπωθούν (κλικ στην καρτέλα, στο όνομα του φύλλου)
    Β) Πάτα στο πληκτρολόγιο το Ctrl και κράτα το πατημένο.
    Γ) Επίλεξε ένα-ένα όλα τα υπόλοιπα φύλλα από αυτά που θέλεις να εκτυπωθούν. Μην περιμένεις να ανοίξουν αυτά τα φύλλα καθώς τα επιλέγεις (εμποδίζει το άνοιγμά τους το πατημένο Ctrl). Απλά θα βλέπεις να αλλάζει λίγο η απόχρωση στο χρώμα της καρτέλας
    Δ) Ελευθέρωσε το Ctrl
    Ε) Πάντα την εντολή εκτύπωσης. Όλα τα φύλλα που επέλεξες θα φύγουν για τον εκτυπωτή.
    ΣΤ) Κάνε δεξί κλικ πάνω σε μία από τις επιλεγμένες καρτέλες και από το πτυσσόμενο μενού που εμφανίζεται επίλεξε “Κατάργηση ομαδοποίησης φύλλων”
    Αυτό είναι όλο. Συμπληρωματικά:
    Για να μην χαλάσεις χαρτί και μελάνη, κάνε δοκιμές και αντί για εκτύπωση, κάνε “Προεπισκόπηση εκτύπωσης” και στη προεπισκόπηση, για να δεις όλες τις σελίδες, πάτα διαδοχικά την επιλογή “Επόμενη σελίδα”
    Αν θέλεις να εκτυπώσεις όλα τα φύλλα του βιβλίου, τότε αντί για τα βήματα Α-Β-Γ-Δ, κάνε δεξί κλικ πάνω σε μία από τις καρτέλες των φύλλων και από το πτυσσόμενο μενού που εμφανίζεται επίλεξε: “Επιλογή όλων των φύλλων”. Προχώρα στα βήματα Ε και ΣΤ
    Αν θέλεις να εκτυπώσεις πολλά φύλλα των οποίων οι καρτέλες είναι στη σειρά, τότε για να τα επιλέξεις όλα, επίλεξε το πρώτο αριστερά, πάτα στο πληκτρολόγιο Shift, κράτα το πατημένο και επίλεξε την καρτέλα του τελευταίου δεξιά φύλλου, ελευθέρωσε το πλήκτρο Shift. Προχώρα στα βήματα Ε και ΣΤ.
    Αν την εργασία αυτή την κάνεις συχνά για τα ίδια πάντα φύλλα, μπορείς να καταγράψεις την εργασία σου σε μακροεντολή και να τρέχει αυτόματα.
    Η μαζική επιλογή φύλλων δεν είναι μόνο για εκτύπωση. Είναι και για άλλες εργασίες. Παράδειγμα μπορείς να γράψεις κάτι, μια τιμή, μια συνάρτηση, στο ίδιο κελί πολλών φύλλων, να διαγράψεις το περιεχόμενο της ίδιας περιοχή από πολλά φύλλα κλπ.

  133. Ο/Η nikos λέει:

    Καλησπέρα!

    θα ήθελα να μου δείξεις κάποιον τρόπο-συνάρτηση ώστε να μετατρέπω τους ελληνικούς χαρακτήρες σε λατινικούς (πχ Νικος=Nikos) και μετατροπή ονομάτων στη Γενική κλίση (Νίκος=Νίκου).

    Σ ευχαριστώ εκ των προτέρων.

  134. Ο/Η vioannis λέει:

    Νίκο για το πρώτο ερώτημα δες εδώ, δύο vba συναρτήσεις που λύνουν το πρόβλημά σου. Για τα δεύτερο ερώτημα, δεν μπορώ να σκεφτώ με ποιο τρόπο το excel θα παίρνει αποφάσεις γραμματικής και θα αποφασίζει ώστε ο Νίκος να γίνει Νίκου, ο Μιχάλης να γίνει Μιχάλη, ο Αλέξανδρος να γίνει Αλεξάνδρου (αλλαγή τόνου) , Ίων σε Ίωνος κλπ. Εκτός εάν έχεις ένα συγκεκριμένο κατάλογο με μικρά ονόματα σε μία στήλη, φτιάξε δίπλα μια στήλη με τις γενικές και δούλεψε την αντικατάσταση με μια συνάρτηση πχ την VLOOKUP

  135. Ο/Η nikos λέει:

    Σ ευχαριστώ πολύ για την άμεση ανταπόκριση!!!!!
    Καλό Σαβ/κο!

  136. Ο/Η Γιώργος Σταθάς λέει:

    Καλημέρα.

    Μπράβο για την υπέροχη δουλεία σου.
    Θα ήθελα αν μπορείς να με βοηθήσεις στο παρακάτω.
    έχω αυτό το αρχείο σε excel
    Α1 Α2 Α3
    Α1 1 2 6
    Α2 1 2 6
    Α3 1 2 6
    Α4 1 2 6
    ‘Οπου είναι το 1 είναι κατάστημα (το ίδιο), όπου είναι το 2 είναι ερώτηση (διαφορετική) και όπου το τρία απάντηση.
    Πως μπορώ να έχω σε μία στηλη το κατάστημα, σε μία γραμμή τις ερωτήσεις και από κάτω από κάθε ερώτηση την απάντηση;
    Τα καταστήματα είναι πολλά. Αν κάνω copy paste special transpose μου βγάζει όλες τις απαντήσεις σε μια γραμμή και όχι κάτω από κάθε ερώτηση.
    Ελπίζω να με κατάλαβες.

    Ευχαριστώ εκ των προτέρων

  137. Ο/Η vioannis λέει:

    Γιώργο, με αυτό που κατάλαβα από την περιγραφή, η αντιμετάθεση έπρεπε να δουλέψει. Άρα, δεν κατάλαβα. Μπες στον κόπο για μια πιο αναλυτική περιγραφή. Θα βρούμε λύση

  138. Ο/Η Γιώργος Σταθάς λέει:

    Γιάννη καλημέρα.
    Λοιπόν η αντιμετάθεσή δουλεύει αν το κάνω ένα ένα αλλά έλεγα αν υπάρχει τρόπος να τα κάνω όλα μαζί γιατί είναι πολλά. Κοίτα το παράδειγμα.
    ΚΑΤΑΣΤΗΜΑ ΕΡΩΤΗΣΗ ΑΠΑΝΤΗΣΗ
    ΑΘΗΝΑ ΠΟΥ ΠΑΣ ΣΠΙΤΙ
    ΑΘΗΝΑ ΠΟΤΕ ΑΥΡΙΟ
    ΘΕΣ/ΝΙΚΗ ΠΟΥ ΠΑΣ ΧΩΡΙΟ
    ΘΕΣ/ΝΙΚΗ ΠΟΤΕ ΔΕΥΤΕΡΑ
    ΠΑΤΡΑ ΠΟΥ ΠΑΣ ΕΞΩ
    ΠΑΤΡΑ ΠΟΤΕ ΣΕ ΛΙΓΟ

    Αυτό που θέλω είναι να έχω κάθετα το κατάστημα από μια φορά (το έχω κάνει) την κάθε ερώτηση (που είναι διπλή) να εμφανίζετε μια μόνο φορά οριζόντια (το έχω κάνει) και μετά κάθε απάντηση να μπει κάτω από την αντίστοιχη ερώτηση.

    Ευχαριστώ και πάλι.

  139. Ο/Η vioannis λέει:

    Γιώργο, δες στο excel βιβλίο giorgostest.xls μία λύση του προβλήματός σου, που μπορεί να σου δώσει ιδέες. Το πρόβλημα φυσικά μπορεί να λυθεί με μία μακροεντολή, είπα να δοκιμάσουμε πρώτα με εργασίες φύλλου, αν δεν δουλέψει επανέρχεσαι.

  140. Ο/Η Γιώργος Σταθάς λέει:

    Καλημέρα.
    Καλός ο τρόπος σου αλλά νωμίζω ότι είναι για μικρό όγκο δεδομένων. Εγώ έχω 15 ερωτήσεις για κάθε κατάστημα και τα καταστήματα είναι 800 άρα πόλλα αποτελέσματα.

    Ευχαριστώ και πάλι.

  141. Ο/Η Γιώργος Σταθάς λέει:

    Επίσης στο παράδειγμα που μου έστειλες όλες οι ερωτήσεις είναι κάθετες ενώ τις θέλω οριζόντιες και η κάθε απάντηση να μπει κάτω από κάθε ερωτηση. Δηλαδή 15 ερωτήσεις οριζόντια και 800 και απαντήσεις κάτω από τις αντίστοιχες ερωτήσεις..

  142. Ο/Η vioannis λέει:

    Γιώργο αυτά που γράφεις στα δύο τελευταία μηνύματα δεν απέρρεαν από τα προηγούμενα. Τέλος πάντων, δεν νομίζω (ίσως και να κάνω λάθος), ότι το θέμα αντιμετωπίζεται με συναρτήσεις ή χειρισμούς φύλλου, ούτε από μία γενικής χρήσης μακροεντολή. Μόνο από κώδικα που θα γραφτεί «κουστούμι» για το αρχείο σου. Αλλά αυτό ξεφεύγει από τα όρια μιας απάντησης από το ιστολόγιο.

  143. Ο/Η Giannis λέει:

    K.Γιαννη ,θα ηθελα να ρωτησω για το σχετικο μην. παραπανω «Ιουνίου 21, 2014 στις 07:59»
    σχετικα με το αρχειο «skopelosexample».
    Εαν θελω να προσθεσω περισσοτερα πεδια (πεδιο 6,7,8)
    Πως το κανω?Πειραματιστηκα με τη λογικη μου αρκετα αλλαξα τις αναλογες τιμες ομως μου βγαζει #ref!

    Eυχαριστω

  144. Ο/Η vioannis λέει:

    Γιάννη, πρώτα θα προσθέσεις τα 3 επί πλέον πεδία (στήλες F,G,H ) στη βάση (πίνακα) του φύλλου ΚΩΔΙΚΟΙ και θα συμπληρώσεις με στοιχεία. Μετά επάνω στην κορδέλα επιλέγεις το μενού “Τύποι” στη συνέχεια “Διαχείριση ονομάτων”, θα ανοίξει ένα πλαίσιο με τα ονόματα, επιλέγεις το όνομα PinakasKodikon, και κάτω εκεί που λέει “Αναφορά σε” υπάρχει ο τύπος του ονόματος

    =OFFSET(ΚΩΔΙΚΟΙ!$A$1;0;0;COUNTA(ΚΩΔΙΚΟΙ!$A:$A);5) 
    

    άλλαξε το 5 στο τέλος του τύπου σε 8 και πάτα αριστερά το τσεκ (✔) και μετά “Κλείσιμο”.
    Αν δεν χρησιμοποιείς όνομα για να ορίσεις τον πίνακα, αλλά χρησιμοποιείς τους τύπους της δεύτερης ομάδας , πρέπει να αλλάξεις τον πίνακα από:

    ΚΩΔΙΚΟΙ!A1:E1000
    

    σε:

    ΚΩΔΙΚΟΙ!A1:H1000
    

    σε όλες τις vloοkup. Για να σου επιστραφεί τιμή από το 8ο πεδίο ο τύπος θα είναι:

    =VLOOKUP(D27;ΚΩΔΙΚΟΙ!A1:H1000;8;FALSE)
    
  145. Ο/Η Giannis λέει:

    Σε ευχαριστω!!Μετα απο τοσες ωρες που εσπασα το κεφαλι μου τα καταφερα,και μετα μπαινω και βλεπω την απαντηση η οποια ειναι οπως ακριβως οπως το εκανα,αλλα «κατα τυχη»!Σε ευχαριστω απλα!
    Κατι τελευταιο που θα θελα να ρωτησω και ΠΟΛΥ ΒΑΣΙΚΟ,πως μπορω να κανω scroll τις drop down list ,με τη ροδα του ποντικιου.
    Οταν η λιστα δεν ειναι 3-4 τιμες αλλα εκατονταδες βολευει αφανταστα.

  146. Ο/Η Giannis λέει:

    Θελω να ρωτησω στο excel,σχετικα με τη διαμορφωση των κελιων/δημιουργια πινακων κτλ,αν υπαρχει η δυνατοτητα στο ιδιο φυλλο,να μπορω μετα απο καποιες γραμμες να εχω νεες στηλες.

    Για παραδειγμα ανοιγοντας ενα φυλλο,απο τη γραμμη 1 εως την 7 να εχω τις αναλογες στηλες,και μετα απο την 8 γραμη και κατω να εχω αλλες στηλες.
    Eδω είναι ένα πρόχειρο παράδειγμα σε εικόνα από αυτό που εννοώ http://s30.postimg.org/kkzrng2dt/dbvdf.jpg

  147. Ο/Η vioannis λέει:

    Giannis
    Άνοιξε το πτυσσόμενο πλαίσιο της επικύρωσης δεδομένων.
    Μετακίνησε τον κέρσορα του ποντικιού στην δεξιά κατακόρυφη λωρίδα κύλισης και κάνε αριστερό ή δεξί κλικ πάνω της.
    Τώρα μπορείς να χρησιμοποιήσεις τη ροδέλα.
    Περιγράφω από excel 2010, αν θυμάμαι καλά είχαν ακουστεί παράπονα για τη λειτουργία αυτή σε παλιότερες εκδόσεις. Πρέπει όμως να δεις και τις ρυθμίσεις του ποντικιού σου στον Πίνακα ελέγχου του υπολογιστή σου. Μερικά ποντίκια απαιτούν ρύθμιση για την ροδέλα.
    Δες όμως και την πολύ χρήσιμη συντόμευση πληκτρολογίου που έστειλε ο φίλος Άρης εδώ όπου μπορείς να χρησιμοποιήσεις και τα πλήκτρα ,PageUp, PageDown, Home. Τη θεωρώ πιο βολική από τη ροδέλα.

  148. Ο/Η vioannis λέει:

    Για το άλλο ερώτημά σου, αυτό που βλέπω στην εικόνα, όχι. Αυτό που βλέπω μάλλον προέκυψε από κάποιο φωτογραφικό τρικ γιατί οι κάθετες γραμμές δεν έχουν αντιστοιχία. Δοκίμασε στο μενού «Προβολή» τις 3 μορφές «Σταθεροποίησης παραθύρων». Ίσως σε εξυπηρετήσουν.

  149. Ο/Η Giannis λέει:

    Δυστυχώς αλλα στο 2007 δεν δουλευει αυτος ο τροπος.Και απο τις ρυθμισεις του πινακα ελεγχου που εκανα καποιες αλλαγες αποτελεσμα δεν ειδα.Ελεγα μηπως υπηρχε κατι αλλο ωστε να δουλεψει.Για το αλλο ερωτημα,φυσικα προεκυψε απο καποιο φωτογραφικο τρικ,για να περιγραψω στο περιπου τι εννοω.Το προβλημα μου δεν ειναι θεμα προβολης.Εχω φτιαξει ενα φυλλο στο οποιο εχω διαμορφωσει ετσι τα κελια ωστε καποιες τιμες τους να πεφτουν ακριβως κατα την εκτυπωση,σε ενα προεκτυπωμενο εντυπο αποδειξης.Ομως καποιες τιμες δεν μπορω να τις ταιριαξω να πεσουν ακριβως σε καποια «κουτακια» του προεκτυπωμενου εντυπου.Ετσι αν μπορουσε να γινει κατι τετοιο θα ηταν απλα σωτηριο!
    ————————————
    Eπισης ενας αλλος τροπος με τον οποιο θα ηταν εφικτο,αυτο που θελω,αλλα δεν γνωριζω αν υπαρχει.Ειναι να εκανα εξαρχης τις στηλες μου στενες σε πλατος ωστε να πεφτουν οι τιμες εκει που πρεπει στις αναλογες γραμμες,και στις αναλογες γραμμες που θα με εξυπηρετουσε να ηταν μεγαλη σε πλατος η στηλη,να μπορουσα πχ να επιλεξω Β1,C1,D1,E1, και να υπηρχε μια επιλογη οπου θα εκανε ολα αυτα τα κελια σαν να ηταν ενα.
    ———————————–
    Eπανερχομαι η λυση βρεθηκε σε αυτο που ζηταω παραπανω με τη “συγχωνευση κελιων”.

  150. Ο/Η Giannis λέει:

    Καλησπερα.»δουλευω» τη vlookup,oπου απο το βιβλιο που ειχε αναρτηθει παραπανω skopelosexample.xls ,κανω καποιες διορθωσεις στα μετρα μου.
    Θελω να ρωτησω τα εξης:
    Το κελι που συμπληρωνετε αυτοματα εχει τη συναρτηση
    =VLOOKUP(D5;PinakasKodikon;2;FALSE)
    Θελω ομως καποιες φορες στο κελι αυτο να γραφω με το χερι τα δεδομενα μου,ομως εαν το κανω θα χαθει η συναρτηση.
    Γινετε να μπορω να γραφω και η συναρτηση να μη χανετε,ετσι ωστε οτι και να εχω γραψει ,πατωντας μετα μια επιλογη απο τη λιστα να υπαρχει η αυτοματη επικυρωση βαση απο τον πινακα μου?
    Επισης το κελι για το οποιο μιλαμε ,οταν δεν εχει δεδομενα απο τη λιστα εμφανιζει #Δ/Υ,υπαρχει τροπος να μενει κενο?(διοτι ειναι για εκτυπωση)

  151. Ο/Η vioannis λέει:

    Giannis
    Για το δεύτερο ερώτημα, του σφάλματος #Δ/Υ, για να το αντιμετωπίσεις τροποποίησε τη συνάρτηση έτσι:

    =IF(ISERROR(VLOOKUP(D5;PinakasKodikon;5;FALSE));"";VLOOKUP(D5;PinakasKodikon;5;FALSE))
    

    Αν δουλεύεις σε excel 2007 και άνω μπορείς να κάνεις την τροποποίηση με τη συνάρτηση iferror έτσι:

    =IFERROR(VLOOKUP(D5;PinakasKodikon;5;FALSE);"")
    

    (Ο πρώτος τύπος είναι συμβατός με όλες τις εκδόσεις excel, ο δεύτερος όχι)
    Για το πρώτο ερώτημα, φυσικά και δεν μπορείς να τα έχεις και τα δύο. Εδώ ισχύει κυριολεκτικά ότι δυο καρπούζια στην ίδια μασχάλη δεν χωράνε. Μπορείς να κάνεις όμως. ένα από τα παρακάτω: Φορτώνεις την εγγραφή της συνάρτησης σε μία μακροεντολή την οποία θα βάλεις τον καταγραφέα μακροεντολών να στη γράψει. Ξεκίνα τον καταγραφέα, επίλεξε το κελί που είναι γραμμένη η συνάρτηση, πάτα F2, πάτα Enter, σταμάτα τον καταγραφέα. Θα πάρεις μια μακρεντολή που θα μοιάζει σαν αυτή:

    Sub Μακροεντολή1()
    Range("H5").Select
    ActiveCell.FormulaR1C1 = _
    "=IF(ISERROR(VLOOKUP(RC[-4],PinakasKodikon,5,FALSE)),"""",VLOOKUP(RC[-4],PinakasKodikon,5,FALSE))"
    End Sub
    

    Κάθε φορά που θέλεις να ξαναγράψεις τη συνάρτηση στο κελί θα τρέχεις αυτή τη μάκρο. Το βρίσκεις υπερβολικό; Δίκιο έχεις, αν μάλιστα το βιβλίο excel δεν περιέχει άλλες μακροεντολές, δεν θα το μετατρέψεις σε .xlsm βιβλίο μόνο για αυτή τη μάκρο.
    Άλλη λύση, πιο λογική, είναι να φορτώσεις την συνάρτηση σε ένα όνομα. Εισάγεις, λοιπόν το όνομα:

    Συνάρτηση=IF(ISERROR(VLOOKUP(Φύλλο2!$D$5;PinakasKodikon;5;FALSE));"";VLOOKUP(Φύλλο2!$D$5;PinakasKodikon;5;FALSE))
    

    (Όταν θα εισάγεις το όνομα θα έχεις επιλεγμένο το κελί στο οποίο θα εισάγεται η συνάρτηση). Τώρα, κάθε φορά που θα θέλεις τη συνάρτηση στο κελί θα γράφεις:

    =Συνάρτηση
    

    και όχι τον μεγάλο τύπο. Ή θα επιλέγεις το κελί, θα πατάς F3, και από τη λίστα των ονομάτων θα επιλέγεις “ Συνάρτηση”.

  152. Ο/Η Giannis λέει:

    Η συναρτηση
    =IFERROR(VLOOKUP(D5;PinakasKodikon;5;FALSE);»»)
    δουλευει αψογα.
    Οσον αναφορα το πρωτο ερωτημα,δεν καταφερα να εφαρμοσω αυτο που λες με την μακροεντολη,αλλα ουτε το δευτερο(διοτι δεν ξερω πως να φορτωσω τη συναρτηση σε ενα ονομα!)
    Στη πορεια ομως σκεφτηκα αν θα μπορουσε να γινει κατι πιο απλο ,θα εξυπηρετουσε εξησου.

    Εχοντας στο κελι Ε5 τη συναρτηση =IFERROR(VLOOKUP(D5;PinakasKodikon;5;FALSE);»») ,ολα καλως οταν ειναι κενο το D5 εξαφανιζετε το #Δ/Υ.
    Θα μπορουσε ομως να γινει η εξης τροποποιηση?
    Να συνεχισει ως εχει ομως εαν γραψω μια οποιαδηποτε τιμη κατι στο D5 (δηλαδη μια τιμη εκτος λιστας)το Ε5 να μη μενει κενο αλλα να μου βγαζει παντα π.χ. 00000

  153. Ο/Η vioannis λέει:

    Δες πως έχουν εισαχθεί τα ονόματα ΚΟΔΙΚΟΙ και PinakasKodikon, με τον ίδιο ακριβώς τρόπο. Δες λεπτομέρειες για τα ονόματα εδώ:
    http://office.microsoft.com/el-gr/excel-help/HA010342417.aspx

  154. Ο/Η Giannis λέει:

    Το καταφερα,ομως η αληθεια δεν ειναι πολυ βολικο.
    Αν μπορουσε να γινει αυτο που γραφω πιο κατω,θα ηταν το καλυτερο.

  155. Ο/Η vioannis λέει:

    Giannis
    Επειδή με έχεις μπερδέψει, ας ξεμπερδευτούμε:
    Α) κελί D5 κενό ή κελί D5 τιμή εκτός λίστας, τότε να έχεις επιστροφή κενό:

    =IFERROR(VLOOKUP(D5;PinakasKodikon;5;FALSE);"")
    

    B) κελί D5 κενό ή κελί D5 τιμή εκτός λίστας, τότε να έχεις επιστροφή “0000”:

    =IFERROR(VLOOKUP(D5;PinakasKodikon;5;FALSE);"0000")
    

    Γ) κελί D5 κενό να έχεις επιστροφή κενό και αν κελί D5 τιμή εκτός λίστας να έχεις επιστροφή “0000”:

    =IF(D5="";"";IFERROR(VLOOKUP(D5;PinakasKodikon;5;FALSE);"0000"))
    
  156. Ο/Η Giannis λέει:

    Έπεσες μέσα,στο Γ) !! Αυτό ακριβώς ήθελα.
    Ειλικρινά δεν ξέρω πως να σε ευχαριστήσω!!

  157. Ο/Η ΝΙΚΟΣ λέει:

    ΚΑΛΗΜΕΡΑ Θα ήθελα και εγώ τα φώτα σου .
    Σχετικά άσχετος με excel έχω σε ένα φύλλο εργασίας σε ένα κελί
    ΠΕΡΙΓΡΑΦΗ ΕΙΔΟΥΣ και σε ένα δίπλα ΑΞΙΑ ΕΙΔΟΥΣ τώρα έχω κάνει μια λίστα σε ένα άλλο κελί με επικύρωση και μου εμφανίζει όλες τις ΠΕΡΙΓΡΑΦΕΣ ΕΙΔΟΥΣ
    Αλλά θέλω ταυτόχρονα οταν επιλεγω καποιο στο διπλανό κελί να μου εμφανίζει και την ΑΞΙΑ πως μπορεί να γίνει αυτό .
    Ευχαριστώ εκ τον πρότερων

  158. Ο/Η vioannis λέει:

    Νίκο, μπορεί να γίνει με τη συνάρτηση VLOOKUP. Δες το ίδιο θέμα εδώ. Κατέβασε το παράδειγμα στο βιβλίο skopelosexample.xls Αν δεν σε διαφωτίσει το παράδειγμα ξαναγράψε λέγοντας σε πoιές ακριβώς στήλες και κελιά είναι η ΠΕΡΙΓΡΑΦΗ ΕΙΔΟΥΣ και η ΑΞΙΑ ΕΙΔΟΥΣ (πχ F5:F150) και θα σου γράψω ακριβώς τον τύπο.

  159. Ο/Η ΝΙΚΟΣ λέει:

    ΠΕΡΙΓΡΑΦΗ ΕΙΔΟΥΣ ΣΤΟ Η I J ΠΕΡΙΓΡΑΦΗ ΕΙΔΟΥΣ ΞΑΙ ΣΤΟ L Η ΑΞΙΑ
    Ειμαι λιγο ασχετος σε κουραζω λιγο ….
    ευχαριστω παντος ……………………

  160. Ο/Η vioannis λέει:

    Νίκο
    Μάλλον εννοείς η ΠΕΡΙΓΡΑΦΗ ΕΙΔΟΥΣ στη στήλη Η, στις στήλες Ι, J, K διάφορα άλλα και στη στήλη L η ΑΞΙΑ. Υποθέτω ακόμα ότι οι γραμμές είναι από την 1 έως 100. Ας πούμε ακόμα ότι την επικύρωση είναι στο κελί Q1. Στο κελί R1 γράψε τον τύπο:

    =VLOOKUP(Q1;$H$1:$L$100;5;FALSE) 
    

    Ανάλυση:
    Q1 είναι η ΠΕΡΙΓΡΑΦΗ ΕΙΔΟΥΣ για την οποία ψάχνεις την ΑΞΙΑ.
    H1:L100 είναι ο πίνακας με τα δεδομένα σου, όπου υποχρεωτικά η πρώτη στήλη είναι η ΠΕΡΙΓΡΑΦΗ ΕΙΔΟΥΣ και περιλαμβάνει όσες στήλες προς τα δεξιά θέλεις. (Γράφεις τον πίνακα μέσα σε δολάρια, έτσι: $H$1:$L$100, για να μην μεταβάλλεται αν χρειάζεται να αντιγράψεις τον τύπο και σε άλλα κελιά).
    5, διότι στον πίνακα η στήλη με τις ΑΞΙΕΣ είναι η πέμπτη.
    FALSE, γιατί ψάχνουμε για ακριβές ταίριασμα ΕΙΔΟΥΣ-ΑΞΙΑΣ
    Δες αν θες, σε αυτό εδώ το άρθρο περιγραφή της συνάρτησης VLOOKUP από την Microsoft.

  161. Ο/Η ΝΙΚΟΣ λέει:

    Είπαμε είμαι λίγο gaga στο θέμα excel
    Έχω κάνει κάποιες τροποποιήσεις για να με καταλάβεις καλυτέρα
    Λοιπόν από φύλλο 1 έχω σε στήλη Α2εως Α15 ΠΕΡΙΓΡΑΦΗ ΕΙΔΟΥΣ
    Και στη διπλανή στήλη Β2 έως Β15 Τις ανάλογες τιμές από κάθε Α
    Τώρα σε Άλλο φύλλο 2
    Έχω κάνει
    Β2 Α/Α
    C2 ΗΜΕΡΟΝΗΝΙΑ
    D2 ΠΕΛΑΤΗΣ
    Ε2 ΠΕΡΙΓΡΑΦΗ ΕΙΔΟΥΣ
    F2 TEM
    G2 TIMH
    H2 ΣΥΝΟΛΟ

    ΜΕ Επικύρωση στο Ε2 παίρνω τις περιγραφές από το Φύλλο 1 σε Λίστα και επιλέγω όποιο θέλω .
    Αυτό που θέλω να κάνω είναι κάθε φορά που επιλέγω στο Ε2 ΚΑΤΙ να μου εμφανίζει στο G2
    Την ανάλογη τιμή .

    Ευχαριστώ εκ τον πρότερων και συγγνώμη για την ταλαιπωρία ….

  162. Ο/Η vioannis λέει:

    Η καλή περιγραφή, κάνει τον καλό το φίλο Νίκο. Στο κελί G2 γράψε τον τύπο

    =VLOOKUP(E2;Φύλλο1!$A$2:$B$15;2;FALSE)
    

    και αντίγραψέ τον προς τα κάτω (σύρε τον) στη στήλη G όσο θέλεις ή χρειάζεται.
    Μάλιστα, επειδή όσο τα κελιά της στήλης Ε είναι κενά, για να μην εμφανίζεται στην στήλη G το ενοχλητικό #Δ/Υ, αντί για τον παραπάνω τύπο γράψε τον:

    =IFERROR(VLOOKUP(E2;Φύλλο1!$A$2:$B$15;2;FALSE);"")
    

    Αυτός ο τύπος όσο τα κελιά της Ε είναι κενά, επιστρέφει στην G κενό.
    Σημείωση, αν δουλεύεις σε excel 2003 και παλαιότερο ο τελευταίος αυτός τύπος πρέπει να γραφτεί:

    =IF(ISERROR(VLOOKUP(E2;Φύλλο1!$A$2:$B$15;2;FALSE));"";VLOOKUP(E2;Φύλλο1!$A$2:$B$15;2;FALSE))
    

    Και μην ανησυχείς, με θάρρος και θράσος (sic) να ρωτάς ότι θέλεις. Όλοι γκαγκά γεννηθήκαμε.

  163. Ο/Η NIKOS λέει:

    Δεν έχω λόγια να περιγράψω αυτό που νιώθω σας ΕΥΧΑΡΙΣΤΩ ! ! !
    ΔΟΥΛΕΥΕΙ ΤΕΛΕΙΑ …….

  164. Ο/Η ΝΙΚΟΣ λέει:

    Ευχαριστώ –Ευχαριστώ –Ευχαριστώ
    Και κάτι τελευταίο …. Στο Η2 ΣΥΝΟΛΟ κάνει την πράξη =f2( ΤΕΜ)*Ε2(ΤΙΜΗ)
    Όταν είναι όμως κενό μου εμφανίζει #ΤΙΜΗ! Και μου πως μπορώ να μην εμφανίζεται ?

  165. Ο/Η vioannis λέει:

    ΝΙΚΟ, πάλι με τη βοήθεια της συνάρτησης IFERROR

    =IFERROR(G2*F2;"")
    

    ή με τη βοήθεια της συνάρτησης IF, να αφήνουμε να εμφανίζεται το γινόμενο G2*F2, μόνο αν και τα δύο κελιά G2, F2 έχουν συμπληρωθεί με τιμές:

    =IF(AND(ISNUMBER(F2);ISNUMBER(G2));F2*G2;"")
    

    Και λίγο πιο απλά:

    =IF(AND(F2>0;G2>0);F2*G2;"")
    
  166. Ο/Η ΝΙΚΟΣ λέει:

    ΕΝΑ ΜΕΓΑΛΟ ΕΥΧΑΡΙΣΤΩ ΚΑΙ ΤΙΠΟΤΕ ΑΛΛΟ …..
    Τελικα εβαλα την =IF(AND(ISNUMBER(F2);ISNUMBER(G2));F2*G2;»»)……
    εχει γινει τελειο ………
    thanks !!!! thanks!!!thanks

  167. Ο/Η Παναγιώτης λέει:

    Είμαι φίλος στο παιχνίδι ΠΑΜΕ ΣΤΟΙΧΗΜΑ και θελω να επεξεργάζομαι τα αποτελέσματα (σκορ) σε ΦΥΛΛΟ EXCEL .ΑΝΤΙΜΕΤΩΠΙΖΩ ΤΟ ΕΞΗΣ ΠΡΟΒΛΗΜΑ : Κατά την αντιγραφη και επικόλληση ενός κουπονιού με όλους τους αγώνες από την ιστοσελίδα του ΟΠΑΠ σε δικό μου φυλλο παρουσιαζονται κάποια σκορ ΜΕ ΤΗ ΜΟΡΦΗ ΗΜΕΡΑΣ ΚΑΙ ΜΗΝΑ Π.Χ ΤΟ ΣΚΟΡ 2-1 ΓΙΝΕΤΑΙ 2 ΙΑΝΟΥΑΡΙΟΥ. Yπάρχει καποιος τροπος να εχω σε ενα κελι ενα τετοιο σκορ ???
    Ευχαριστώ

  168. Ο/Η vioannis λέει:

    Παναγιώτη, πριν (πριν και όχι μετά) κάνεις επικόλληση, μορφοποίησε τις στήλες που θα πέσουν τα σκορ, σε κείμενο. Μετά κάνε επικόλληση και κατά προτίμηση ειδική επικόλληση-Κείμενο. Πιο καλά θα σου απαντούσα αν έβλεπα τη μορφή που έχουν τα κουπόνια που αντιγράφεις. Στείλε μια διεύθυνση αν θέλεις, γιατί από excel κάτι ξέρω, από στοίχημα τίποτα.

  169. Ο/Η Παναγιώτης λέει:

    Το έκανα και δούλεψε ευχαριστώ. Αν δεν γινομαι κουραστικός θα ηθελα να μου πειτε μια συναρτηση που να ελέγχει αποτελεσματα ποδοσφαιρικων αγωνων με μορφή κειμένου (0-0,1-0,2-0 π.χ) τοποθετημενα σε μια στηλη (ενα αποτέλεσμα ανα κελί της στήλης)και να επιστρέφει σε μια άλλη στήλη το σημείο του αγώνα (1,2,Χ).
    Δηλαδή οταν βλέπει στο κελι της μιας στηλης ισοπαλα αποτελεσματα 0-0,1-1, 2-2 να επιστρεφει στην αλλη στηλη παντα το γραμμα Χ. Ενω οταν βλέπει νικες γηπεδουχου ομαδας 1-0,2-0 κλπ να επιστρεφει στην αλλη στηλη παντα τον αριθμο 1.

  170. Ο/Η Παναγιώτης λέει:

    Κυριε Γιαννη ενα παραδειγμα προσφατης σελιδας που αντιγραφεται στο Excel ειναι η http://www.opap.gr/web/guest/praktoreio-football#d-3713. Με τον τροπο που μου ειπατε εχω το κουπονι με τα αποτελέσματα σε μορφή κειμενου. Αν μπορουσατε να μου δωσετε και μια συναρτηση για ελεγχο . Για να σας διευκολυνω τα πιθανα αποτελεσματα που μπορει να ελεγχει ειναι περιπου 50 ενω τα σημεια τα οποια θα επιστρεφει ειναι παντα τρία (1,Χ, 2).

  171. Ο/Η vioannis λέει:

    Παναγιώτη
    Για ένα σκορ χωρισμένο πάντα με παύλα (-) που είναι γραμμένο στο κελί Α1 οι δύο παρακάτω τύποι θα επιστρέψουν ο πρώτος τα γκολ της πρώτης ομάδας και ο δεύτερος της δεύτερης

    =TRIM(LEFT(SUBSTITUTE(TRIM(A1);"-";REPT(" ";LEN(TRIM(A1))));LEN(TRIM(A1))))
    =TRIM(RIGHT(SUBSTITUTE(TRIM(A1);"-";REPT(" ";LEN(TRIM(A1))));LEN(TRIM(A1))))
    

    Αν το σκορ είναι 3-2 ο πρώτος θα επιστρέφει 3 και ο δεύτερος 2
    Αν με τη σειρά τους οι τύποι αυτοί είναι γραμμένοι στα κελιά Β1 και C1 αντίστοιχα, τότε στο κελί D1 γράψε τον τύπο

    =IF(B1=C1;"X";IF(B1>C1;"1";"2"))
    

    που θα σου επιστρέψει 1,2 ή Χ ανάλογα με το σκορ. Οι δύο προηγούμενοι τύποι μπορούν να ενσωματωθούν στον τρίτο αλλά θα προκύψει ένας μάλλον πολύ μεγάλος και δύσχρηστος τύπος. Φυσικά εσύ το σκορ θα το έχεις σε άλλη στήλη και όχι στην Α, (εμένα, αντιγράφοντας από την διεύθυνση που έστειλες μου ήρθε το σκορ στη στήλη Q) προσαρμόζεις λοιπόν κατάλληλα.

  172. Ο/Η Παναγιώτης λέει:

    Κύριε Γιάννη….ΒΟΗΘΕΙΑ,
    Θέλω να κωδικοποιήσω τα ονόματα των πελατών μου και ψαχνω την κατάλληλη συνάτηση.
    Δηλ. Στην στήλη Β1:Β150 έχω τα επίθετα των πελατών με Λατινικούς Κεφαλαίους χαρακτήρες, στην στήλη C1:C150 τα ονόματα τους ,
    και ζητάω στην στήλη «Α»να έχω 3 Λατινικούς Κεφαλαίους χαρακτήρες
    ( 2 χαρακτήρες από την στήλη «Β» Ένα σύμφωνο και Ένα φωνήεν,
    και ακόμη Ένα Λατινικό Κεφαλαίο χαρακτήρα από την στήλη «C» .
    Αυτοί οι τρείς χαρακτήρες, λοιπόν, να εμφανίζονται στην στήλη «Α» όπως προείπα.
    Ευχαριστώ τα μάλα.

  173. Ο/Η vioannis λέει:

    Παναγιώτη, από το επίθετο οποιοδήποτε σύμφωνο και οποιοδήποτε φωνήεν; Και με ποια σειρά; Πάντα πρώτο το σύμφωνο; Σχημάτισε τα 2 γράμματα που θέλεις στα παρακάτω επίθετα για να καταλάβω:
    VARNEZIS
    MPRAVOS
    TRELOS
    IABERIS
    ALEKSIOY
    Και από το όνομα ποιο γράμμα; Το πρώτο;

  174. Ο/Η Παναγιώτης λέει:

    Καλημέρα καλή εβδομάδα και καλό Μήνα,
    Δεν με ενδιαφέρει από το επίθετο ποιο γράμμα θα είναι πρώτο ή δεύτερο ( να έχουμε υπ’ όψη μας ότι έχουμε ονόματα με πέντε χαρακτήρες) Θα έλεγα σύμφωνα που θα δίνουν ήχο.
    Από την στήλη των ονομάτων θέλω ένα φωνήεν, δεν με νοιάζει η σειρά.
    Θέλω, όμως, τους χαρακτήρες που θα μου δίνει, να ΜΗΝ ΕΙΝΑΙ ΙΔΙΟΙ με τους προηγούμενους,
    Βλέπε πίνακα παρακάτω.
    ΕΠΙΘΕΤΑ ΟΝΟΜΑΤΑ ΚΩΔ. ΠΕΛΑΤ
    VARNEZIS TAKIS V A T
    MPRAVOS NTIMIS R A M
    TRELOS DORIS R O D
    IABERIS NIKOS B I N
    Η αυτή στήλη να μου δίνει πρώτα ένα Σύμφωνο και μετά το φωνήεν Απ’ δω να έχω ένα σύμφωνο δεν με ενδιαφέρει η σειρά. Αυτό που θέλω να μου δίνει μια λέξη που θα προφέρεται εύκολα, μην στραμπουλίξουμε την γλώσσα μας

    Όπου δεν είναι εφικτό να επεμβαίνω Manual να δίνω – γράφω κατά την εκτίμησή μου, εγώ το κωδικό.
    Ότι κιαν Γίνει Ένα πολύ μεγάλο ευχαριστώ

  175. Ο/Η vioannis λέει:

    Καλό μήνα και για σένα Παναγιώτη και για όλους τους φίλους του ιστολογίου.
    Κανονικά, για όλα αυτά που περιγράφεις, θα χρειαζόταν ένας αρκετά μεγάλος κώδικας που εκτός των άλλων, θα χρειαζόταν ίσως αλγόριθμους τύπου Soundex: http://en.wikipedia.org/wiki/Soundex
    Αλλά ας κρατήσουμε τα πράγματα λίγο πιο απλά, με ένα μείγμα συναρτήσεων φύλλου και χειρισμών με το χέρι.
    Σε μία άδεια στήλη έστω την Μ1:Μ5 γράψε τα φωνήεντα: A,E,I,O,U
    Σε μία άλλη στήλη γράψε τα σύμφωνα εξαιρώντας αυτά που θεωρείς δύσκολα στην προφορά ή που εκτιμάς ότι θα δημιουργούν σύγχυση προφοράς.
    Εγώ στη στήλη Ν1:Ν15 έγραψα τα: B, C,D, F, K, L,M, N, P, R, S,T, V, X,Z και άφησα απέξω τα G, H,J,Q, W,Y. Αυτό το αλλάζεις όπως θέλεις.
    Τώρα οι παρακάτω συναρτήσεις επιστρέφουν αντίστοιχα:
    > Το πρώτο σύμφωνο του επιθέτου (από τα σύμφωνα που δέχεσαι)
    > Το πρώτο φωνήεν του επιθέτου
    > Το πρώτο σύμφωνο του ονόματος (από τα σύμφωνα που δέχεσαι)
    (Τα επίθετα βρίσκονται στη στήλη Β και τα ονόματα στη στήλη C, όπως είπες)

    =MID(B1;MIN(IFERROR(FIND($N$1:$N$15;B1);""));1)
    =MID(B1;MIN(IFERROR(FIND($M$1:$M$5;B1);""));1)
    =MID(C1;MIN(IFERROR(FIND($N$1:$N$15;C1);""));1)
    

    Οι συναρτήσεις αυτές είναι Ctrl+Shift+Enter συναρτήσεις–πίνακες ενός κελιού. Για να εισάγεις μία “συνάρτηση – πίνακα ενός κελιού”: Γράφεις τη συνάρτηση στο κελί, μετά πατάς F2 και μετά πατάς Ctrl+Shift+Enter. Μόλις εισάγεις την συνάρτηση με Ctrl+Shift+Enter, το excel περικλείει τη συνάρτηση σε άγκιστρα { }. Δες για τις Ctrl+Shift+Enter συναρτήσεις το σχετικό σημείωμα του ιστολογίου.
    Δεν μένει παρά να ενώσουμε όλες τις παραπάνω επιστροφές γραμμάτων σε μία συνάρτηση. Για αυτό θα μας βοηθήσει η συνάρτηση CONCATENATE. Έτσι στο κελί Α1 γράψε τον παρακάτω τύπο, ο όποιος επιστρέφει κωδικούς στη μορφή που θέλεις:

    =CONCATENATE(MID(B1;MIN(IFERROR(FIND($N$1:$N$15;B1);""));1);MID(B1;MIN(IFERROR(FIND($M$1:$M$5;B1);""));1);MID(C1;MIN(IFERROR(FIND($N$1:$N$15;C1);""));1))
    

    Φυσικά και αυτή η συνάρτηση είναι Ctrl+Shift+Enter.
    Παραδείγματα
    VARNEZIS TAKIS=VAT
    PAPAS NTIMIS=PAN
    TRELOS DORIS=TED
    IABERIS NIKOS=BIN
    ALEKSIOY ALEKOS=LAL
    KRASSAS IOANNIS=KAN
    Τώρα, για να αποφύγεις διπλούς κωδικούς, βάλε την συνάρτηση COUNTIF να τους παρακολουθεί. Σε μία άλλη στήλη στο πρώτο κελί γράψε τη συνάρτηση:

    =COUNTIF($A$1:A1;A1)
    

    και αντίγραψε προς τα κάτω. Όσο η COUNTIF επιστρέφει 1, όλα είναι εντάξει, αν επιστρέψει αριθμό μεγαλύτερο του 1, άλλαξε τον κωδικό χειριστικά. Χειριστικά επίσης θα χρειαστεί να δημιουργήσεις τους κωδικούς σε κάποιες ακραίες περιπτώσεις όπου το επίθετο ή το όνομα περιέχει μόνο σύμφωνα από αυτά που εξαίρεσες. Στην περίπτωση αυτή η συνάρτηση επιστρέφει το σφάλμα #ΤΙΜΗ!
    Αν σε έχω μπερδέψει, κατέβασε να δεις ένα παράδειγμα στο φύλλο CodFromName.xlsx

  176. Ο/Η ΣΤΕΦΑΝΟΣ λέει:

    Κύριε Γιάννη καλησπέρα…
    Έχω μια φάρμα και διατηρώ στο excel ενα ειδοσ αρχειου για τα έξοδα απο τις τροφές των ζώων και την διατροφική τουσ πορεία.
    Στο 1ο φύλλο καταχωρώ α/α, ημερομηνια, περιγραφή τροφής (π.χ. Φυραμα για Μοσχίδα + Κουνελίνη), κατάστημα αγοράς, αρ, αποδειξεις, ποσό αποδειξεις, και τα μερικά σύνολα της αποδειξεις ανα ζώο (π.χ. το ποσο των 30€ καποιασ αποδειξεις μπορεί να προκύπτει απο τροφεσ 15€ για τα αγριογουρουνα, 10€ για τα αλογα, 5€ για τα περιστερια).
    Σε αλλα φύλλα εχω ξεχωριστα, ανα ζώο, αρχείο οπού καταχωρώντασ καποια στοιχεια απο το 1ο φύλλο μπορώ να παρατηρήσω την διατροφικη πορεία του ζώου.
    Όμωσ κάθε φορα με την αγορα τροφών πρέπει να περναω τα ίδια στοιχει σε διάφορα φύλλα….
    Υπάρχει τροποσ π.χ. καταχωρώντας στο 1ο φύλλο την περιγραφή τησ τροφήσ π.χ. Φύραμα Μοσχίδασ + Κουνελίνη να ενημερώνονται τα αντιστοιχα φύλλα τησ Μοσχιδασ και των Κουνελιών με τα στοιχεια του 1ου φύλλου που αφορουν τις στήλεσ τησ ημερομηνιας αγοράς, το ειδοσ τροφήσ, και το μερικό σύνολο που αντιστοιχεί στο ζώο……?
    Ευχαριστώ εκ τον προτέρων……..

  177. Ο/Η vioannis λέει:

    Στέφανε, η ενημέρωση ενός φύλλου από δεδομένα άλλου φύλλου μπορεί να γίνει στο excel με πολλούς τρόπους. Εξαρτάται από τον τρόπο που έχεις τοποθετήσει τα δεδομένα σε κάθε φύλλο. Συνήθως πρώτα αποφασίζουμε τον τρόπο αλληλοενημέρωσης των φύλλων και μετά τοποθετούμε κατάλληλα τα στοιχεία. Γενικά πάντως για να ενημερώσεις μια βάση (πίνακα) από μία άλλη η πιο χρήσιμη συνάρτηση είναι η vlookup. Δες παραπάνω στην ίδια σελίδα, στις 20 και 21 Ιουνίου 2014 σε συζήτηση με φίλο, ένα χαρακτηριστικό παράδειγμα της συνάρτησης και κατέβασε από εκεί το αρχείο skopelosexample.xls για να δεις πως δουλεύει.

  178. Ο/Η ΣΤΕΦΑΝΟΣ λέει:

    Κύριε Γιάννη ευχαριστώ για τον χρόνο σας και την βοήθειά σας….. θα πάρω το θάρρος να σας ρωτήσω αν υπάρχει τρόπος από κάποιες λέξεις κλειδιά που έχω καταχωρήσει σε κελί ένος φύλλου, να ενημερώνονται κελιά σε κάποια άλλα φύλλα. Δηλ. αν στο κείμενο ενός κελιού υπάρχει η λέξη «Περιστέρια» και η λέξη «Κουνέλια» τότε οι εγγραφές αυτής της σειράς να αντιγράφονται στα αντίστοιχα φύλλα.Δεν ξέρω αν έγινα κατανοητός. Μπορώ να σας στείλω το αρχείο μου σε email.
    Σας ευχαριστώ για μία ακόμη φορά…..

  179. Ο/Η vioannis λέει:

    Στέφανε, κάνε δεξί κλικ πάνω στο κελί που θέλεις να αντιγράψεις. Από το μενού που θα εμφανιστεί, επίλεξε: Αντιγραφή. Πήγαινε τώρα στο άλλο φύλλο, κάνε δεξί κλικ στο κελί που θέλεις, θα εμφανιστεί το ίδιο μενού, τώρα επίλεξε: Ειδική Επικόλληση, μετά: Επικόλληση Σύνδεσης και μετά: ΟΚ. Τώρα βλέπεις στο κελί την τιμή του αρχικού κελιού, αλλά στην γραμμή των τύπων βλέπεις κάτι σαν αυτό: =Φύλλο1!$A$8. Τα κελιά είναι με τον τρόπο αυτό συνδεδεμένα. Αν αλλάξεις την τιμή του αρχικού κελιού, θα αλλάξει και αυτό. Η διασύνδεση μπορεί να γίνει και για πολλά κελιά μαζί, όχι μόνο για ένα-ένα. Δες εδώ μια πιο αναλυτική περιγραφή για μαζική δημιουργία συνδέσεων (τις περιπτώσεις Α, Β και Β1)

  180. Ο/Η Stef Farm λέει:

    Κύριε Γιάννη Καλημέρα……..
    …………………………………..

  181. Ο/Η vioannis λέει:

    Stef Farm, Πρέπει να επαναλάβεις το σχόλιό σου, διότι όπως βλέπεις έφτασε σε μη αναγνώσιμη μορφή. Αν το μέσο που χρησιμοποιείς δεν δίνει τη δυνατότητα αλλαγής της κωδικοποίησης των ελληνικών χαρακτήρων, χρησιμοποίησε αγγλικούς.

  182. Ο/Η ΣΤΕΦΑΝΟΣ λέει:

    Κύριε Γιάννη Καλησπέρα……..
    Πιθανόν να μην σας έδωσα να καταλάβεται, τι ακριβώς θέλω να κάνω…..
    π.χ. έχω ένα φύλλο (ΠΑΡΑΣΤΑΤΙΚΑ) με τις στήλες Α(Α/Α), Β(ΗΜΕΡΟΜΗΝΙΑ), C(ΠΕΡΙΓΡΑΦΗ), D(ΚΑΤΑΣΤΗΜΑ), E(ΑΡ. ΠΑΡΑΣΤΑΤΙΚΟΥ), F(ΠΟΣΟ ΑΠΟΔΕΙΞΕΙΣ), G(ΑΛΟΓΑ), Η(ΣΚΥΛΙΑ), κ.λ.π.. Σε άλλα φύλλα με ονομασίες των ζώων (ΑΛΟΓΑ), (ΣΚΥΛΙΑ),…… έχω τις ίδιες στήλες συν κάποιες ακόμα.
    Θέλω, εφόσον στο κελί της περιγραφής C(ΠΕΡΙΓΡΑΦΗ) στο φύλλο (ΠΑΡΑΣΤΑΤΙΚΑ), αναφέρονται κάποιες λέξεις «κλειδιά». πχ ΦΥΡΑΜΑ «ΑΛΟΓΑ» + ΤΡΟΦΗ «ΣΚΥΛΙΑ» + …… οι εγγραφές απο το φύλλο (ΠΑΡΑΣΤΑΤΙΚΑ) να αντιγράφονται στο αντίστοιχο φύλλο του ζώου (ΑΛΟΓΑ), (ΣΚΥΛΙΑ), …….
    Έχω τον τύπο =IF(FIND(«ΑΛΟΓΑ»,ΠΑΡΑΣΤΑΤΙΚΑ!$C5)0,ΠΑΡΑΣΤΑΤΙΚΑ!Β5,»»)
    Το πρόβλημα που μου δημιουργεί είναι ότι αν σε μια περιγραφή δεν αναφέρεται κάποια λέξη κλειδί (σύνηθες) π.χ. «ΑΛΟΓΑ» τότε στο φύλλο ΑΛΟΓΑ αφήνει κενή γραμμή με σφάλμα τιμή #ΤΙΜΗ!
    Υπάρχει τρόπος ώστε να ενημερώνονται μόνο εκείνα τα φύλλα που αναφέρονται στην «ΠΕΡΙΓΡΑΦΗ» του φύλλου «ΠΑΡΑΣΤΑΤΙΚΑ» με τις λέξεις κλειδιά, χωρίς να αφήνουν κενές σειρές στα φύλλα που δεν αναφέρονται?
    Υπάρχει άλλος τρόπος περα του τύπου που έχω?

    Συγνώμη αν έγινα κουραστικός….
    Σας ευχαριστώ για το χρόνο σας και το ενδιαφέρον…..

  183. Ο/Η vioannis λέει:

    Φίλε Στέφανε τώρα έγινες κατανοητός. Με συναρτήσεις φύλλου αυτό που ζητάς δεν είναι δυνατό. Μια απλή λύση είναι να κρατήσεις την εργασία σου όπως την κάνεις και τις κενές γραμμές ή τις γραμμές που περιέχουν μόνο σφάλματα, να αναθέσεις σε μία μακροεντολή να τις διαγράφει, μαζικά και γρήγορα. Η παρακάτω μακροεντολή διαγράφει όλα τα σφάλματα στην επιλεγμένη περιοχή του φύλλου και στη συνέχεια όσες γραμμές απομένουν εντελώς κενές διαγράφονται και αυτές. Οι γραμμές που περιέχουν κελιά με περιεχόμενο που δεν είναι σφάλμα, δεν επηρεάζονται. Παράδειγμα, επιλέγεις την περιοχή Α2:J50 η οποία στις γραμμές 5, 7 και 12 έχουν μόνο σφάλματα. Τρέχεις τη μάκρο και οι γραμμές αυτές διαγράφονται και η περιοχή συμπυκνώνεται και δεν αφήνει κενά. Πρόσεχε ότι οι γραμμές θα διαγραφούν ολόκληρες, πέρα-πέρα. Ο έλεγχος αν είναι κενές, γίνεται μόνο στην επιλεγμένη περιοχή.
    Ο κώδικας:

    Sub DeleteErrorsAndEmtyRows()
    Dim rng As Range
    Dim i As Long
    Set rng = Intersect(Selection, ActiveSheet.UsedRange)
    rng.Select
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    On Error Resume Next
    Selection.SpecialCells(xlCellTypeFormulas, 16).ClearContents
    On Error GoTo 0
    For i = Selection.Rows.Count To 1 Step -1
    If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
    Selection.Rows(i).EntireRow.Delete
    End If
    Next i
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    End Sub
    

    Μια πιο συστηματική λύση είναι η παρακάτω:
    Ενημερώνεις το φύλλο ΠΑΡΑΣΤΑΤΙΚΑ με τις νέες εγγραφές. Όταν ολοκληρώσεις τις επιλέγεις τις νέες αυτές εγγραφές και τρέχεις την παρακάτω μάκρο. Αυτή θα ψάξει στη στήλη C της επιλεγμένης περιοχής με την ΠΕΡΙΓΡΑΦΗ και σε όποιο κελί της C βρει τη λέξη ΑΛΟΓΑ, θα πάρει (αντιγράψει) όλη την εγγραφή και θα την τοποθετήσει κάτω από τις άλλες στο φύλλο ΑΛΟΓΑ. Το ίδιο θα κάνει με τις εγγραφές για τα ΣΚΥΛΙΑ, με τις ΓΑΤΕΣ κλπ. Θα πάει δηλαδή κάθε ζώο στο μαντρί του, δηλαδή στο φύλλο του, με τη σειρά το ένα κάτω από το άλλο και κάτω από προηγούμενες εγγραφές που έγιναν προηγούμενες ημέρες. Απαραίτητες προϋποθέσεις είναι : α) να επιλέγεις περιοχή που ξεκινά από κελί της στήλης Α, β) να υπάρχουν στο βιβλίο τα φύλλα ΑΛΟΓΑ, ΣΚΥΛΙΑ, ΓΑΤΕΣ κλπ. γ) Οι ίδιες λέξεις με τα ονόματα των φύλλων να ανιχνεύονται στα κελιά της στήλης C. Για όποιες εγγραφές δεν βρεθεί το αντίστοιχο φύλλο δεν θα μεταφερθούν. Προς τα δεξιά, επιλέγεις όσες στήλες θέλεις. Όσες επιλέξεις, τόσες θα αντιγραφούν και τόσες θα επικολληθούν στα αντίστοιχα φύλλα.
    Ο κώδικας:

    Sub EveryAnimalInHisCage()
    Dim rw As Integer
    Dim pl As Integer
    Dim zo As Integer
    Dim col As Integer
    Dim lastrow As Long
    Dim rng As Range
    Dim W As Variant
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Set rng = Selection
    pl = rng.Rows.Count
    col = rng.Columns.Count
    If Not rng.Column = 1 Then GoTo telos
    W = Array("ΣΚΥΛΙΑ", "ΑΛΟΓΑ", "ΓΑΤΕΣ")
    On Error Resume Next
    For zo = LBound(W) To UBound(W)
    For rw = 1 To pl
    If InStr(rng(rw, "C").Value, W(zo)) > 0 Then
    Range(rng(rw, "A"), rng(rw, col)).Copy
    Sheets(W(zo)).Select
    lastrow = 1 + Cells(Rows.Count, "A").End(xlUp).Row
    Cells(lastrow, "A").Select
    ActiveSheet.Paste
    End If
    Next
    Next
    Application.CutCopyMode = False
    telos:
    On Error GoTo 0
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    End Sub
    

    Στον παραπάνω κώδικα πρέπει να συμπληρώσεις αυτή τη γραμμή:

     W = Array("ΣΚΥΛΙΑ", "ΑΛΟΓΑ", "ΓΑΤΕΣ")   
    

    με τα υπόλοιπα ονόματα που έχουν τα φύλλα σου, παράδειγμα:

     W = Array("ΣΚΥΛΙΑ", "ΑΛΟΓΑ", "ΓΑΤΕΣ", "ΚΟΥΝΕΛΙΑ", "ΠΡΟΒΑΤΑ", "ΑΓΕΛΑΔΕΣ")
    

    Κατέβασε το βιβλίο animals_farm.xls όπου έστησα ένα παράδειγμα με βάση την περιγραφή σου, για να δεις πως δουλεύει.

  184. Ο/Η Elias λέει:

    Γεια σας και καλη εβδομαδα
    Θα ηθελα να σας ρωτησω για καταργηση διπλοτυπων τιμων σε μια στηλη .Συγκεκριμενα σε μια στηλη πχ κωδικοι,να καταργηθουν οι διπλοτυπες εγγραφες αλλα παραληλα στη επομενη στηλη που ειναι τα τεμαχια του καθε κωδικου να βγαινει το αθροισμα των τεμαχιων για καθε κωδικο.Δηλ.καθε κωδικος να εμφανιζεται μια φορα μονο και διπλα το συνολο των τεμαχιων.
    Ευχαριστω πολυ .

  185. Ο/Η vioannis λέει:

    Elias, Αν οι κωδικοί είναι στη στήλη Α2:Α100 και τα ποσά στη στήλη Β2:Β100, τότε σε μία άδεια στήλη, ας πούμε τη C, στο κελί C2 γράψε τον τύπο

    =SUMIF($A$2:$A$100;A2;$B$2:$B$100)
    

    και αντίγραψέ τον έως το κελί C100. Ο τύπος αυτός θα αθροίσει δίπλα σε κάθε κωδικό όλα τα ποσά που αντιστοιχούν στον κωδικό αυτό. Τώρα αντίγραψε τη στήλη C και κάνε «Ειδική Επικόλληση» – «Τιμές» πάνω στη στήλη Β. Τώρα μπορείς να διαγράψεις τη στήλη C και να κάνεις διαγραφή των διπλοτύπων κωδικών με το εργαλείο «Κατάργηση διπλοτύπων».

  186. Ο/Η Elias λέει:

    Σε ευχαριστω παρα πολυ
    Αυτο ακριβως ηθελα.

  187. Ο/Η ΓΙΑΝΝΗΣ λέει:

    Καλημέρα σας
    Ψάχνω να βρω λύσει στο εξής πρόβλημα που έχω στο excel
    Θέλω να βάλω φίλτρα αλλά σε πολλές στήλες μαζί για να σας δώσω να καταλάβετε είναι
    Όνομα έτος ηλικία έτος άλικα

    Γιατί πρόκειται για το ίδιο άτομα αλλά με διάφορα παιδιά
    Και όταν θέλω να αναζητήσω ποια άτομα έχουν ηλικία από 1 έως 5 πως μπορώ να κάνω φιλτράρισμα σε όλες τις στήλες μαζί ταυτόχρονα
    Ευχαριστώ πολύ

  188. Ο/Η vioannis λέει:

    Γιάννη, στη βάση της παρακάτω εικόνας, αν ορίσεις περιοχή κριτηρίων την Α1:F4, το σύνθετο φίλτρο θα σου επιστρέψει τις εγγραφές που έχουν τουλάχιστον ένα παιδί με ηλικία 1-5. Αυτό ζητάς;

  189. Ο/Η ΓΙΑΝΝΗΣ λέει:

    ΝΑΙ ΑΥΤΟ ΕΚΑΝΑ ΛΑΘΟΣ ΠΟΥ ΝΑ ΒΑΛΩ ΤΗΝ ΣΥΝΘΗΚΗ ΓΙΑ ΤΗΝ ΣΥΝΘΕΤΟ ΦΙΛΤΡΟ
    ΣΕ ΕΥΧΑΡΙΣΤΩ ΠΑΡΑ ΠΟΛΥ

  190. Ο/Η DimitrisL. λέει:

    Καλησπέρα σας και καλό μήνα…
    Καταρχάς να σας ευχαριστήσω και εγώ με την σειρά μου για την καταπληκτική δουλειά που κάνετε…
    Το πρόβλημα μου είναι σχετικά απλό και βρήκα ένα τρόπο σε προηγούμενο σχόλιο για το πως θα το ξεπεράσω, αλλά βάζω τον κώδικα όπως και στο παράδειγμα https://varlamis.wordpress.com/2011/08/22/choose_function/ » ‘ΑΡΙΣΤΕΡΌ’ VLOOKUP» αλλά μου δίνει πίσω την τιμή #Δ/Υ (Διόρθωση ενός σφάλματος #Δ/Υ: Αυτό το σφάλμα επισημαίνει ότι μια τιμή δεν είναι διαθέσιμη σε μια συνάρτηση ή έναν τύπο)
    … Δουλεύω στο ΕXCEL ’97 γιατί αυτό έχει και ο λογιστής μου…όπως καταλάβατε θέλω να του πληκτρολογώ ένα όνομα και να μου βγάζει το Α.Φ.Μ. του…

  191. Ο/Η vioannis λέει:

    Καλό μήνα Δημήτρη. Για αριστερό VLOOKUP δες και εδώ,(την συζήτηση στις 28 Απρ 2014 στη σελίδα About), από όπου μπορείς να κατεβάσεις ένα αρχείο με παράδειγμα. Ακόμα δες αν δουλεύει ο τύπος αλλάζοντας τον σταθερό πίνακα {1;2} σε {1\2}. Ίσως να έχεις διαφορετικούς διαχωριστές στον υπολογιστή σου. Δες το σχετικό θέμα του ιστολογίου εδώ. Επίσης δοκίμασε για αριστερό VLOOKUP και τον παρακάτω τύπο:

    =INDEX(A1:A20;MATCH(D1;B1:B20;0))
    

    Όπου Α1:Α20 είναι η αριστερή στήλη (ΑΦΜ), Β1:Β20 η δεξιά στήλη (ΟΝΟΜΑΤΑ), και στο κελί D1 είναι η τιμή (ΟΝΟΜΑ) του οποίου αναζητάς το ΑΦΜ

  192. Ο/Η vasilis λέει:

    Καλημέρα γκουρού του excel. Έχω μια ερώτηση πρόκληση… Μπορώ να συνδυάσω κελί με εισαγωγή ήχου? Έχω ταμειακές ροές οπότε θέλω αν είναι αρνητικές να υπάρχει ηχητικό μήνυμα (τύπου ελέφαντας) ενώ αν είναι θετικές να υπάρχει χειροκρότημα.. Υπάρχει λύση?
    Ευχαριστώ

  193. Ο/Η vioannis λέει:

    Βασίλη, Πρόκληση δεν θα το έλεγα, γιατί είναι ένα θέμα λυμένο και μάλιστα από πραγματικό γκουρού του excel τον John Walkenbach. Δες το θέμα Playing A Sound Based On A Cell’s Value στις παρακάτω διευθύνσεις:
    http://spreadsheetpage.com/index.php/tip/playing_a_sound_based_on_a_cells_value/
    http://www.j-walk.com/ss/excel/tips/tip87.htm
    http://www.j-walk.com/ss/excel/tips/tip59.htm
    Και σε αυτή τη διεύθυνση:
    http://excelunusual.com/playing-sounds-in-excel-using-vba-part-1/
    θα βρεις να κατεβάσεις βιβλίο με παραδείγματα.

  194. Ο/Η DimitrisL. λέει:

    Καλησπέρα σας και πάλι…
    Η συνάρτηση δούλευε τέλεια απλά έβαζα τα πεδία ανάποδα.Το κατάλαβα αργότερα.Ευχαριστώ πολύ πάντως.
    Επειδή δεν έχω σχετική εμπειρία ή γνώσεις από το excel, και έχω μια καινούργια απορία που δεν μπορώ να λύσω, θα συνεχίσω να ρωτάω αν δεν γίνομαι πολύ κουραστικός.
    Θέλω μια συνάρτηση η οποία να μου μετράει το πλήθος των εγγραφών σε έναν πεδίο συγκεκριμένο π.χ. από το Α2 μέχρι το Α66.
    Για να γίνω πιο σαφής θέλω να μετρήσω πόσες εγγραφές έχω κάνει σε ένα συγκεκριμένο ΑΦΜ τον μήνα ΙΑΝΟΥΑΡΙΟ.
    Προσπαθώ να φτιάξω ένα πίνακα (όχι οριοθετημένο πίνακα) για να με βοηθάει για το ΚΠΟ στην εφορία. Τα δεδομένα θέλω να τα τραβάει από άλλο φύλλο εργασίας.
    Υπάρχει αυτή η δυνατότητα..?
    Διάβασα το CountOfWordsPerMonth.xlsx σε ένα παρόμοιο πρόβλημα που βρήκα στα σχόλια νωρίτερα αλλά μου δίνει εντελώς λάθος αποτελέσματα ο συγκεκριμένος κώδικας με σχεδόν πιστή αντιγραφή…
    ——————————–
    03/02/2015 01:16
    Καλησπέρα σας και πάλι.
    Τελικά βρήκα το πρόβλημα ποιο είναι. Μου «διαβάζει» τα δεδομένα και από τις στήλες που είναι αριστερότερα από την συνάρτηση για κάποιο λόγο. Πως μπορούμε να το διορθώσουμε αυτό..?
    ——————————
    03/02/2015 01:46
    Και κάτι τελευταίο που τώρα παρατήρησα δεν μου ξεχωρίζει τις ημερομηνίες…μου μετράει το πλήθος αλλά όχι στον Ιανουάριο μόνο όπως του ζήτησα σε όλους τους μήνες…

  195. Ο/Η vasilis λέει:

    ευχαριστώ για την άμεση, όπως πάντα, απάντηση

  196. Ο/Η Giannis λέει:

    Γεια σας ,θα ηθελα να κανω μια επειγουσα ερωτηση.
    Εχω φτιαξει ενα καταλογο με τιμες στο excel, με ποιο τροπο μπορω μαζικα,επιλεγοντας τα κελια με τις τιμες να τις τροποποιησω μαζικα ειτε μειων -ειτε συν ενα ποσο ,ειτε συν/μειων ενα ποσοστο.

    Για παραδειγμα 117 κελια οπου εχουν καποιες τιμες ,θελω να προσθεσω + 0,50 σε καθε τιμη.
    και 590 κελια οπου εχουν καποιες τιμες θελω να αυξηθουν κατα 10%.
    Εαν κατσω σε καθε μια να προσθετω +0.50 κ.ο.κ καηκα!

    Θα ηθελα τη βοηθεια σας .

    Ευχαριστω.

  197. Ο/Η vioannis λέει:

    Γιάννη, αφού βιάζεσαι ας προηγηθείς!
    α) Για να προσθέσεις 0,5:
    Γράψε σε ένα κελί (οποιοδήποτε) 0,5
    Επίλεξε το κελί αυτό και δεξί κλικ «αντιγραφή»
    Επίλεξε τα κελιά (τα 117) με τους αριθμούς
    Δεξί κλικ «Ειδική Επικόλληση», τσεκάρισε «Πρόσθεση» και πάτα ΟΚ.
    Είσαι έτοιμος, διάγραψε τώρα το 0,5 στο κελί που το έγραψες, είναι άχρηστο.
    Β) Για να αυξήσεις κατά 10%
    Γράψε σε ένα κελί (οποιοδήποτε) 1,1
    Επίλεξε το κελί αυτό και δεξί κλικ «αντιγραφή»
    Επίλεξε τα κελιά (τα 590) με τους αριθμούς
    Δεξί κλικ «Ειδική Επικόλληση», τσεκάρισε «Πολλαπλασιασμός» και πάτα ΟΚ.
    Είσαι έτοιμος, διάγραψε τώρα το 1,1 στο κελί που το έγραψες, είναι άχρηστο.

  198. Ο/Η Giannis λέει:

    Ευχαριστω πολυ για την απαντηση και κυριως για την αμμεση ανταποκριση.
    Ομως μου προκυπτει το εξης προβλημα.
    Τα 117/590 ειναι ολα τους κελια τα οποια ειναι συγχωνεμενα.
    Δηλαδη το καθε κελι πριν τη συγχωνευση ηταν 2 κελια τα οποια εκανα ενα.
    Κανοντας «ειδικη επικολληση» μου βγαζει :## ## ,και μου εχει χωρισει παλι τα κελια σε 2.
    (το καθε κελι εχει ## ).Πως διορθωνετε αυτο?

    Αυτο σε πρωτη μοιρα για να κανω τη δουλεια μου τωρα,
    σε δευτερη μοιρα τωρα,θα ηθελα μιας οι τιμες αλλαζουν συνεχως και θα ηθελα να το κανω οσο το δυνατο πιο ευχρηστο.
    Θα ηταν ιδανικο λοιπον αυτο το προσωρινο κελι (0,5)το οποιο κανω αντιγραφη,να ηταν ενα μονιμο κελι καπου στο φυλλο,οπου βαζοντας απλα και μονο τον αριθμο και το αντιστοιχο προσημο μπροστα να διορθωνε τα κελια αναλογα.
    Για παραδειγμα εαν εβαζα +0,50 να προσθετε 0,50 σε ολες τις τιμες ,εαν εβαζα – αντιστοιχα,αν εβαζα +10% κ.ο.κ.

  199. Ο/Η vioannis λέει:

    Δημήτρη, Για να μετρήσεις το πλήθος εμφάνισης μιας εγγραφής μέσα σε μία περιοχή εγγραφών υπάρχει η συνάρτηση COUNTIF, γράψε σε ένα κελί, έστω το Β1 το ΑΦΜ που αναζητάς και η παρακάτω συνάρτηση θα σου επιστρέψει το πλήθος εμφάνισης του, στη στήλη Α2:Α66

    =COUNTIF(A2:A66;B1)
    

    Φυσικά και υπάρχει τρόπος να τραβάμε δεδομένα από άλλο φύλλο, με δεκάδες τρόπους. Ο τρόπος και οι συναρτήσεις που θα χρησιμοποιηθούν εξαρτώνται από τη δομή των φύλλων σου και τι θέλεις να κάνεις. Έτσι δεν μπορώ να έχω απαντήσεις στα επόμενα ερωτήματά σου. Παράδειγμα ο παρακάτω τύπος μπορεί να γραφτεί στο Φύλλο1 και να ψάχνει σε δεδομένα στο φύλλο2 :

    =COUNTIF(Φύλλο2!A2:A66;B1)
    
  200. Ο/Η vioannis λέει:

    Γιάννη, να διαγράψεις τις συγχωνεύσεις και να επαναλάβεις την εργασία. Δημιουργούν πολλά προβλήματα και απαιτούν ιδιαίτερους χειρισμούς. Λογικά, αν αυξήσεις το πλάτος των στηλών θα εμφανιστεί τι κρύβουν τα πολλά # . Για το δεύτερο ερώτημά σου θα πρέπει να δημιουργήσεις μία βοηθητική στήλη όπου θα εμφανίζονται οι νέοι υπολογισμοί. Αν οι αριθμοί σου είναι στη στήλη Ε1:Ε100 και στο κελί Α1 θα γράφεις τη μεταβλητή (0,5 κλπ) τότε στο κελί F1 γράψε: =E1+$A$1 και αντίγραψε έως το κελί F100. Άλλαξε τον αριθμό στο Α1 και παρατήρησε τα αποτελέσματα.

  201. Ο/Η DimitrisL. λέει:

    Καλησπέρα σας και πάλι κε. Γιάννη
    Τελικά την βρήκα την λύση σε όλα τα προβλήματα που είχα κοιτάζοντας τα προηγούμενα σχόλια και παρατηρήσεις από προηγούμενα σχόλια.
    Χρησιμοποιόντας φίλτρο και τις
    «=SUMPRODUCT((Φύλλο1!$D$6:$D$1000=Φύλλο2!$A4)*(MONTH(Φύλλο1!$B$6:$B$1000)=MONTH(Φύλλο2!$C2)))» για να μετρήσω το πλήθος των καταχωρήσεων του συγκεκριμένου ΑΦΜ
    και
    «=VLOOKUP($A4;CHOOSE({1;2};Φύλλο1!$HY$2:$HY$66;Φύλλο1!$HV$2:$HV$66);2;FALSE)» για να κάνω την σύνδεση από το ένα φύλλο στο άλλο και να εμφανίζει και την επωνυμία…
    Δλδ. πληκτρολογόντας το ΑΦΜ μου δίνει επωνυμία και πλήθος εγγραφών από ένα σύνολο ημερομηνιών για τον μήνα που του ζητάω π.χ. Ιανουάριος…
    Τώρα προσπαθώ να κάνω τα αθροίσματα (όχι το πλήθος των εγγραφών όπως νωρίτερα, αλλά τα πόσα)από το Φύλλο1 στο Φύλλο2 μόνο από τον Ιανουάριο…όχι από τους άλλους μήνες…προσπάθησα με SUMPRODUCT αλλά κάπου το χάνω…
    Αν υπάρχει κάποια συμβουλή ή κάποιο λίνκ να μου στείλετε που να βοηθάει γιατί έχω σπάσει το κεφάλι μου…

  202. Ο/Η vioannis λέει:

    Δημήτρη, θα σε παραπέμψω στο σημείωμα του ιστολογίου όπου περιγράφεται η άθροιση υπό όρους με τη βοήθεια της SUMPRODUCT.

  203. Ο/Η Κώστας λέει:

    Καλησπέρα σας
    Ψάχνω να βρω λύση στο εξής πρόβλημα που έχω στο excel
    Στο φύλλο 1 εχω μια σελίδα που εκτυπώνω με δεδομένα απο τα φύλλα 2,3,4,5. Ταυτόχρονα σε ενα κελί εκτος εκτύπωσης στο φύλλο 1 γραφω τον αριθμο 1-1000 που αντιστοιχει σε μια διαφορετική σελιδα και εκτυπώνω. Υπάρχει τρόπος να ξεκινώ με το 1 και αυτοματα να παει στο αλλο νουμερο με εκτυπωση μαζι;

  204. Ο/Η vioannis λέει:

    Κώστα λες: «Ταυτόχρονα σε ένα κελί εκτός εκτύπωσης στο φύλλο 1 γράφω τον αριθμό 1-1000 που αντιστοιχεί σε μια διαφορετική σελίδα και εκτυπώνω» Πως ενεργοποιείται η εκτύπωση; Την ενεργοποιεί κάποια μακροεντολή; Δεν είναι σαφές πως συνδέονται οι αριθμοί 1-1000 με την εκτύπωση.

  205. Ο/Η Κώστας λέει:

    Γραφω τον αριθμο 1 enter print και πάλι απο την αρχη

  206. Ο/Η vioannis λέει:

    Κώστα, ναι, μπορείς να τυποποιήσεις τη διαδικασία με μια μακροεντολή. Η παρακάτω μακροεντολή αλλάζει την τιμή στο κελί Q1 από την τιμή 1 έως 35 και μετά από κάθε αλλαγή εκτυπώνει το τρέχον φύλλο. Κάθε 10 εκτυπώσεις σταματά την διαδικασία για 10 δευτερόλεπτα ώστε να δοθεί «ανάσα» στον buffer του εκτυπωτή. Φυσικά θα αλλάξεις το κελί Q1 στο δικό σου. ΠΡΟΣΟΧΉ: Για να μην σπαταλήσεις χαρτί, κάνε δοκιμές αλλάζοντας τη γραμμή του κώδικα

    ActiveSheet.PrintOut
    

    Με την:

    ActiveSheet.PrintPreview
    

    (Στις δοκιμές, μετά από κάθε προεπισκόπηση να πατάς το πλήκτρο “Κλείσιμο προεπισκόπησης”)
    Αν όλα πάνε καλά προχωράς στην κανονική εκτύπωση και ακόμα αλλάζεις τον αριθμό 35 σε 1000 ή σε όποιο αριθμό θέλεις.
    Ο κώδικας:

    Sub NumberingAndPrinting()
    Dim keli As Range
    Dim meter As Integer
    Set keli = ActiveSheet.Range("Q1")
    For meter = 1 To 35
    keli.Formula = meter
    ActiveSheet.PrintOut
    If meter Mod 10 = 0 Then
    Application.Wait (Now + TimeValue("0:00:10"))
    End If
    Next
    End Sub
    
  207. Ο/Η Κώστας λέει:

    Κύριε Γιάννη Χίλια ευχαριστώ να είσαι πάντα καλά.
    Το έκανα αμέσως και δούλεψε.
    Ευχαριστώ Πολύ!!!!!

  208. Ο/Η Ανδρέας Φεραδούρος λέει:

    Καλημέρα και συγχαρητήρια για τον ιστότοπο σας.
    Σας ανακάλυψα τυχαία ψάχνοντας στο διαδίκτυο και εντυπωσιάσθηκα από την γνώση του αντικειμένου, την αμεσότητα των απαντήσεων και το πλήθος των σχολίων.
    Θέλω να δημιουργήσω πολλαπλά αντίγραφα (30 ή 31 – όσες οι ημέρες κάθε μήνα) από το φύλο της 1ης ημέρας χωρίς να χρησιμοποιήσω την διαδικασία δημιουργίας αντιγράφου με ένα-ένα φύλο. Υπάρχει τρόπος?
    Ευχαριστώ εκ των προτέρων για τον χρόνο σας.

  209. Ο/Η stopyes λέει:

    Καλημερα κυριε Γιαννη.
    Εχω ενα προβλημα , εχω αντιγραψει αριθμους απο πινακα στο ιντερνετ στο εξελ 2010.Ομως αυτοι δεν μορφοποιουνται σαν αριθμοι και οταν βαλω SUM δεν φαινετε πουθενα.Οταν βαλω VALUE δειχνη στην αρχη ετσι «455331» και μετα γραφει ΤΙΜΗ σαν error.Αν πανω στο ιδιο κελι τον γραψω με το πληκτρολογιο εμφανιζετε κανονικα.Ομως δε φαινονται στην αρχη πουθενα αυτα τα » » για να τα παραληψω με καποια εντολη,και ειναι καπου 30 αριθμοι να τους γραφω εναν εναν απο πανω και δυσκολευομε και μπορεινα κανω καποιο λαθος.Με μορφοποιηση αντιγραφη επικοληση δεν αλλαζουν , υπαρχει μηπωςλυσει? Σας ευχαριστω για καποια απαντηση και καθως και για το χρονο σας.

  210. Ο/Η vioannis λέει:

    Ανδρέα, σου στέλνω 3 μακροεντολες που κάνουν αυτό που ζητάς. Όλες τις τρέχεις έχοντας ανοιχτό το φύλλο του οποίου θέλεις αντίγραφα. Η μάκρο μπορεί να είναι γραμμένη ή στο βιβλίο που σε ενδιαφέρει ή στο βιβλίο προσωπικών μακροεντολών. Η πρώτη εισάγει 30 (από 2 έως 31) φύλλα, αφήνοντας το excel να αποφασίσει για τα ονόματα φύλλων. Αλλάζεις για κάθε μήνα τον αριθμό 31 στον κατάλληλο. Η δεύτερη εισάγει τα φύλλα και δίνει ονόματα στα φύλλα 02Φεβ15, 03Φεβ15 κλπ. Αλλάζεις κάθε μήνα τις τιμές myMonth, myDays, myYear. Η τρίτη δίνει ονόματα όπως και η δεύτερη αλλά διαβάζει μια οποιαδήποτε ημερομηνία του μήνα που σε ενδιαφέρει και υπολογίζει μόνη της το μήνα, πόσες ημέρες έχει ο μήνας και το έτος. Αλλάζεις μόνο το κελί Α1 στην γραμμή Set keli = Range(«A1»). Στο κελί αυτό πρέπει να είναι μία οποιαδήποτε ημερομηνία του μήνα.Αν βάζεις ονόματα στα φύλλα με άλλη λογική, πες τον, ίσως μπορεί να τυποποιηθεί με μάκρο.

    Sub makro1()
    Dim d As Integer
    For d = 2 To 31
    ActiveSheet.Copy After:=ActiveSheet
    Next
    End Sub
    
    Sub makro2()
    On Error Resume Next
    Dim d As Integer
    Dim myMonth As String
    Dim myDays As Integer
    Dim myYear As String
    
    myMonth = "Ιαν"
    myDays = 31
    myYear = "15"
    
    For d = 2 To myDays
    ActiveSheet.Copy After:=ActiveSheet
    ActiveSheet.Name = Format(d, "00") & myMonth & myYear
    Next
    On Error GoTo 0
    End Sub
    
    
    Sub makro3()
    On Error Resume Next
    Dim d As Integer
    Dim myMonth As Integer
    Dim myDays As Integer
    Dim myYear As Integer
    Dim keli As Range
    
    Set keli = Range("A1")
    
    myMonth = VBA.Month(keli.Value)
    myYear = VBA.Year(keli.Value)
    myDays = VBA.DateSerial(myYear, 1 + myMonth, 1) - VBA.DateSerial(myYear, myMonth, 1)
    myYear = VBA.Year(keli.Value)
    For d = 2 To myDays
    ActiveSheet.Copy After:=ActiveSheet
    ActiveSheet.Name = Format(DateSerial(myYear, myMonth, d), "ddmmmyy")
    Next
    On Error GoTo 0
    End Sub
    
  211. Ο/Η vioannis λέει:

    Stopyes, Κάνε αντιγραφή επικόλληση πρώτα στο Σημειωματάριο (Notepad) και μετά αντιγραφή ξανά από εκεί. Ίσως αυτό λύσει το πρόβλημα, αν όχι πέρασε το κελί (έστω το Α1)με έναν τέτοιο αριθμό από το τεστ της συνάρτησης

    =CODE(LEFT(TRIM(A1)))
    

    Αν ο τύπος δεν επιστρέψει έναν αριθμό από 48-57 θα πει ότι υπάρχει ένας άσχετος χαρακτήρας στην αρχή του αριθμού. Εξάλειψέ τον με την συνάρτηση:

    =SUBSTITUTE(A1;CHAR(αριθμός);"")
    

    Όπου αριθμός είναι ο αριθμός που σου επέστρεψε η πρώτη.
    Για χαρακτήρες στο τέλος του αριθμού, αντίστοιχα με τις συναρτήσεις:

    =CODE(RIGHT(TRIM(A1)))
    =SUBSTITUTE(A1;CHAR(αριθμός);"")
    

    Αν αυτά δεν αποδώσουν στείλε με αντιγραφή(από το excel) κάποιους από τους αριθμούς

  212. Ο/Η stopyes λέει:

    Σε ευχαριστω για οσα μου εγραψες. Ειναι κειμενο ο αριθμος και εχει δυο ανω κομμα στην αρχη και στο τελος και φαινονται με το value μονο και μετα γραφει τιμη error ισως φαινονται σαν εικονα ενω στο κελι μοιαζει με αριθμο μαλλον δεν νομιζω για λυσει σε αυτο αφου δεν μπορεις να δεις το εξελ και το μυαλο μου ειναι μαλλον μικρο..Εγω βλεπω μονο αριθμους 482163 ,485206 αλλα απο κειμενο που κρυβει τα εισαγωγικα με ανω τελειες δεν ξερω αν υπαρχει ενημερωση παραπερα. Σε ευχαριστω για καθε απαντηση κυριε Γιαννη.

  213. Ο/Η vioannis λέει:

    Stopyes, αντίγραψε τους αριθμούς από εκεί που τους αντιγράφεις με τον τρόπο που τους αντιγράφεις. Στη συνέχεια επικόλλησε τους στο πλαίσιο του σχολίου και στείλε τους. Ή γράψε την διεύθυνση από όπου τους αντιγράφεις. Αν θέλεις η διεύθυνση να μην εμφανιστεί στο ιστολόγιο θα το φροντίσω.

  214. Ο/Η vioannis λέει:

    Φίλε stopyes και οι αριθμοί που έστειλες και αυτοί που πήρα από την διεύθυνση σου, εμένα μου επικολλούνται κανονικά σαν αριθμοί. Άρα δεν έχω να προτείνω τίποτα άλλο.

  215. Ο/Η stopyes λέει:

    Σε ευχαριστω.
    Μετα απο πολλα πειραματα που εκανα βρηκα μια λυσει. Τα αντεγραψα απο το σαιτ στο σημειωματαριο και απο εκει εκανα αντιγραφη και επικοληση στο εξελ και βγηκαν αριθμοι οπου πλεον γινονται κανονικα οι πραξεις.Θα δοκιμασω και σε αλλο pc να δω αν μου το κανει γιατι ειναι πολλη παραξενο με τοσες μορφοποιησεις να μην γυριζουν σε αριθμους.Επιτελους βρηκα ακρη.
    Σε υπερ ευχαριστω κυριε Γιαννη.

  216. Ο/Η vioannis λέει:

    Χαίρομαι αγαπητέ stopyes! Αυτό ακριβώς ήταν το πρώτο – πρώτο που σου πρότεινα χθες για λύση.

  217. Ο/Η Παναγιώτης λέει:

    Καλησπέρα σας, Χρόνια Πολλά και καλή Σαρακοστή,
    Συγχαρητήρια για την σελίδα σας και για τις άμεσες απαντήσεις που δίνετε στα προβλήματά μας,
    Για ακόμα μια φορά ζητάω την βοήθειά σας,
    Θέλω να κάνω μία μακροεντολή ,δηλ. ένα Button Command
    Έχω ένα βιβλίο Excel με πέντε φύλλα , στο πρώτο φύλλο (master) έχω όλα τα δεδομένα επάνω στα οποία εργάζονται τα υπόλοιπα, θέλω λοιπόν, σ’ αυτό το master Sheet να κάνω τέσσερα κουμπιά (μακροεντολές), αφού το πατάμε, όποτε απαιτηθεί, να εκτυπώνει μια περιοχή από το Β1 έως το Τ30 ανάλογα με το φύλλο, άλλο μέχρι το Κ25, και ούτω καθ’ εξής, δηλ. για κάθε φύλλο ξεχωριστά.
    Τι μπορώ να κάνω;
    Ευχαριστώ πολύ για την υπομονή σας κατά πρώτον και κατά δεύτερον τον χρόνο σας,
    Με εκτίμιση
    Παναγιώτης

  218. Ο/Η vioannis λέει:

    Παναγιώτη, Kάθε button θα αντιστοιχεί σε μία μακροεντολή σαν την παρακάτω. Πρέπει σε κάθε περίπτωση να αλλάζεις το φύλλο στο όποιο είναι τα κελιά που θέλεις να εκτυπώσεις και την περιοχή των κελιών, δηλαδή τα: Φύλλο2 και $A$1:$F$25

    Sub myPrint1()
    Dim aktSh As String
    aktSh = ActiveSheet.Name
    Application.ScreenUpdating = False
    Sheets("Φύλλο2").Select
    ActiveSheet.PageSetup.PrintArea = "$A$1:$F$25"
    ActiveWindow.SelectedSheets.PrintOut
    Sheets(aktSh).Select
    Application.ScreenUpdating = True
    End Sub
    
  219. Ο/Η Παναγιώτης λέει:

    πως μπορώ να κάνω το κουμπί , ώστε να κάνω paste και να ενεργοποιηθεί. Ευχαριστώ

  220. Ο/Η vioannis λέει:

    Παναγιώτη, Πρώτα θα εισάγεις τον κώδικα. Δες πως, στην απάντηση που έδωσα στη Γεωργία στις 20 Ιαν 15 στη σελίδα ‘Συζητήσεις’. Μετά γύρνα στο φύλλο , δεξί κλικ στο κουμπί, επιλέγεις ‘αντιστοίχιση μακροεντολής’ και διαλέγεις την μάκρο που θέλεις να αντιστοιχεί στο κουμπί.

  221. Ο/Η Ανδρέας Φεραδούρος λέει:

    Ευχαριστώ για την λύση και τον χρόνο σας.
    Καλή Σαρακοστή!

  222. Ο/Η Δημήτριος Ούτος λέει:

    Καλησπέρα και απο μένα και καλή σαρακοστή.
    Θα ήθελα την πολύ χρησιμη βοήθειά σας.
    Μέσα σε κελι κειμένου του excel περιέχει πληροφορίες και κάπου υπαρχει και ενα email ή μια ιστοσελίδα. Πώς μπορώ σε διπλανό κελί να πάρω μόνο το κείμενο του email & σε άλλο κελί της ιστοσελίδας.
    Ευχαριστώ πολύ προκαταβολικά.

  223. Ο/Η vioannis λέει:

    Δημήτρη, Με την προϋπόθεση ότι το κείμενο του email είναι σαφώς διαχωρισμένο (με κενά) από το υπόλοιπο κείμενο του κελιού Α1, ο παρακάτω τύπος θα το αποσπάσει.

    =TRIM(MID(SUBSTITUTE(" "&A1;" ";REPT(" "; 100));FIND("@";SUBSTITUTE(" "&A1;" ";REPT(" "; 100)))-50;150))
    

    Στα παρακάτω παραδείγματα θα δουλέψει:

    Ααααα ββββ xxxxx@ttt.com γγγγγγγ δδδδδδδ
    xxxxx@ttt.com  ααααα ββββ, δδδ εεεεε
    αααα βββββ γγγγγ δδ xxxxx@ttt.com
    

    Όχι όμως σε αυτό:

    Ααααα ββββ xxxxx@ttt.comγγγγγγγ δδδδδδδ
    

    όπου μετά το com δεν υπάρχει κενό.
    Ο τύπος μπόρεσε να γραφτεί διότι τα email έχουν οπωσδήποτε τον χαρακτήρα @, δεν περιέχουν κενά και έχουν σχετικά μικρό πλήθος χαρακτήρων.Δεν τον δοκίμασα εξαντλητικά, αυτό το αφήνω πάνω σου. Πες μου για τυχόν προβλήματα.
    Αν το κείμενο δεν περιέχει email θα επιστρέψει ένα σφάλμα. Αυτό δεν είναι πρόβλημα. Επιλέγεις την περιοχή των τύπων και: Εύρεση , Μετάβαση ειδικά σε, Τύποι, Σφάλματα, επιλέγονται όλα και με το delete του πληκτρολογίου τα διαγράφεις όλα μαζί.
    Οι διευθύνσεις σελίδων δεν είναι το ίδιο, παρουσιάζουν δυσκολίες. Δεν έχουν όλες ένα κοινό χαρακτηριστικό και μερικές έχουν απρόσμενα μεγάλο μήκος. Ο παρακάτω τύπος, για όσες διευθύνσεις έχουν τους χαρακτήρες :// και είναι έως 300 χαρακτήρες πιστεύω θα δουλέψει. Πες μου αποτελέσματα και παρατηρήσεις

    =TRIM(MID(SUBSTITUTE(" "&A1;" ";REPT(" "; 300));FIND("://";SUBSTITUTE(" "&A1;" ";REPT(" "; 300)))-50;300))
    
  224. Ο/Η Hellen λέει:

    Καλημέρα σας, θα ήθελα να μας ζητήσω βοήθεια για να μου πείτε με ποιο τρόπο και ποιες φόρμουλες της excel να χρησιμοποιήσω για να δουλέψει το πιο κάτω.
    Θέλω να επιλέγω στην κυψέλη V11 ένα προϊόν από 6 προϊόντα επιλογής. Στην συνέχεια εάν επιλέξω το προϊόν 1 να πρασινίζουν οι κυψέλες V11, W11, Y11, Z11, AA11. Ακολούθως να μπορώ να γράψω ελεύθερα στο κουτάκι W11 ενώ στα άλλα τρία οι απαντήσεις να είναι από επιλογής Α, Β και Γ. Οι επιλογές να βρίσκονται σε ξεχωριστό φύλλο στην excel.
    Εάν όμως επιλέξω το προϊόν 2 στην κυψέλη V11 να γίνετε ροζ και να γίνονται ροζ οι κυψέλες V11, W11, Y11, Z11 με το W11 ελεύθερης γραφής ενώ για τις κυψέλες Y11, Z11 να γίνεται επιλογή από επιλογή Δ και Ε.
    Σας ευχαριστώ,
    Hellen

  225. Ο/Η Δημήτριος Ούτος λέει:

    Σας ευχαριστώ πολύ για την άμεση ανταπόκριση σας. Ναι αποδίδει τα στοιχεία που θέλω.
    συνηθως πρίν το email υπάρχει η λέξη «email:xxxxxx@cccc.gr» οπότε μου το φέρνει ολόκληρο. Πως μπορώ να το αποκόψω και να δινει καθαρό μόνο το xxxxxx@cccc.gr.
    Το ίδιο κάνει και στο διεύθυνση : web:www.xxxxx.gr και μου δίνει και την λέξη web. Μήπως μπορεί να μην την εμφανίζει ;
    Ευχαριστώ πολύ για τον χρόνο σας.

  226. Ο/Η vioannis λέει:

    Hellen, δες αυτό που ζήτησες στο παράδειγμα HELLENexample.xls. Χρειάστηκαν, όπως καταλαβαίνεις, να γίνουν Μορφοποιήσεις υπό όρους, Επικυρώσεις δεδομένων, να εισαχθούν καθορισμένα ονόματα και κάποιες συναρτήσεις. Θα τα βρεις όλα στο παράδειγμα σε λειτουργία και με σύντομη περιγραφή. Για όποια διευκρίνιση επανέρχεσαι.

  227. Ο/Η vioannis λέει:

    Δημήτρη, Χρησιμοποίησε αντίστοιχα τους τύπους:

    =TRIM(SUBSTITUTE(C1;"email:";"";1))
    =TRIM(SUBSTITUTE(C1;"web:";"";1))
    

    Όπου C1 είναι το επιστρεφόμενο από τους προηγούμενους

  228. Ο/Η gavrielell λέει:

    Ευχαριστώ για την βοήθεια και την άμεση ανταπόκριση. Θα τα μελετήσω!

  229. Ο/Η Δημήτριος Ούτος λέει:

    Σας ευχαριστώ πολύ, αποδίδει τα στοιχεία που θέλω.

  230. Ο/Η Theofilos λέει:

    Καλησπέρα συγχαρητήρια για την καλή δουλειά που κάνετε θα ήθελα να ρωτήσω έχω δημιουργήσει στο libre office μια φόρμα τιμολογίου και θα ήθελα όταν το τυπώνω ο αύξων αριθμός του να αλλάζει αυτόματα καθώς και αν γίνεται με την εκτύπωση να κρατάει και ένα αντίγραφο για εμένα !!!!!
    Ευχαριστώ πολύ προκαταβολικά !!!

  231. Ο/Η vioannis λέει:

    Θεόφιλε, δες στη σελίδα ‘Μικρά και ίσως χρήσιμα’ του ιστολογίου το θέμα (13) ‘Δημιουργία μετρητή για παραστατικά’. Δεν γνωρίζω όμως αν υπάρχει συμβατότητα με το libre office

  232. Ο/Η Theofilos λέει:

    Καλησπέρα ευχαριστώ για την άμεση απάντηση !!!
    Δυστυχώς δεν δούλεψε μου επιστρέφει κάποιο σφάλμα του libre office(509 Λείπει τελεστής) , ίσως να είναι και δικό μου λάθος δεν είμαι τόσο εξειδικευμένος.
    Ευχαριστώ για το χρόνο σας .

  233. Ο/Η vioannis λέει:

    Όπως διάβασα εδώ: Οι μακροεντολές VBA δεν τρέχουν σε LibreOffice, πρέπει πρώτα να μετατραπούν και να προσαρμοστούν.

  234. Ο/Η Theofilos λέει:

    Ευχαριστώ για το ενδιαφέρον θα το κοιτάξω !!!!
    Μπορεί κάτι να καταφέρω !!!!!
    Προς το παρών κάνω πειραματισμούς !!!

  235. Ο/Η gavrielell λέει:

    Χαίρεται!!

    Επανέρχομαι με απορίες στο θέμα που σας έχω ξαναποστείλει. Δεν έχω καταφέρει να χρησιμοποιήσω σωστά στις φόρμολες για αυτό δοκιμάζω να γράψω ίσως πιο κατανοητά, αυτή την φορά. Το έχω σε excel αλλά δεν ξέρω πως να σας το προωθήσω.

    Τίτλοι στις κυψέλες V8 Προιόντα, W8 Όνομα, X8 Αριθμός,Y8 Τύπος,Z8 Τύπος Προιόντος, AA8 Περιέχει;, AB8 Ετικέτα, AC8 Τύπος Χ, AD8 Χώρα και AE8 Τύπος ΧΧ

    Στο συγγεκριμένο excel θα ήθελα να υπήρχε επιλογή από το V9-V308 ως εξής;
    Στο V9 να μπορώ να επιλέξω από την κατηγορία Προιόντα από 1 -6
    Εάν επιλέξω από κατηγορία Προιόντα το Προιόν 1 να γίνονται πράσινες οι κυψέλες V9, Y9, Z9 και ΑΑ9
    Η Κυψέλη Υ9 να δίνει επιλογή από Τύπο από 1-15
    Η Κυψέλη Z9 να δίνει επιλογή από Τύπο προιόντος 1 από 1-16
    Η Κυψέλη ΑΑ9 να δίνει επιλογή από Περιέχει ( με επιλογή ΝΑΙ/ΌΧΙ)

    Εάν όμως στο V9 επιλέξω από την κατηγορία Προιόντα από 1 -6
    το Προιόν 2, οι κυψέλες V9 και Z9 να γίνονται ροζ
    Η Κυψέλη Z9 να δίνει επιλογή από Τύπο προιόντος 2 από 1-11

    Εάν όμως στο V9 επιλέξω από την κατηγορία Προιόντα από 1 -6
    το Προιόν 3, οι κυψέλες V9, Z9 και AB9 να γίνονται μωβ
    Η Κυψέλη Z9 να δίνει επιλογή από Τύπο προιόντος 3 από 1-10
    Η Κυψέλη ΑΒ9 να δίνει επιλογή από το Ετικέττα (ΝΑΙ/ΌΧΙ)

    Εάν όμως στο V9 επιλέξω από την κατηγορία Προιόντα από 1 -6
    το Προιόν 4, οι κυψέλες V9, Z9 και AC9 να γίνονται χακί
    Η Κυψέλη Z9 να δίνει επιλογή από Τύπο προιόντος 3 από 1-12
    Η Κυψέλη ΑC9 να δίνει επιλογή από το Τύπο Χ με επιλογές 1-6

    Εάν όμως στο V9 επιλέξω από την κατηγορία Προιόντα από 1 -6
    το Προιόν 5, οι κυψέλες V9, Z9, AD9 και AE9 να γίνονται σκούρο πράσινο
    Η Κυψέλη Z9 να δίνει επιλογή από Τύπο προιόντος 5 από 1-2
    Η Κυψέλη ΑD9 να είναι ελεύθερη
    Η Κυψέλη ΑΕ9 να δίνει επιλογή από Τύπο ΧΧ από 1-4

    Εάν όμως στο V9 επιλέξω από την κατηγορία Προιόντα από 1 -6
    το Προιόν 6, οι κυψέλες V9, Z9 και AΑ9 να γίνονται σκούρο μωβ
    Η Κυψέλη Z9 να δίνει επιλογή από Τύπο προιόντος 6 από 1-14
    Η Κυψέλη ΑΑ9 να δίνει επιλογή από Περιέχει ( με επιλογή ΝΑΙ/ΌΧΙ)

    Οι κύριες απορίες μου είναι:
    1, πως μπορεί ανάλογα με το προιόν επιλογής να χρωματίζονται οι ανάλογες στήλες με διαφορετικό χώμα και
    2, στον Τύπο προιόντος πώς γίνεται ανάλογα με το προιόν να διαλέγω από 6 διαφορετικές επιλογές

    Ελπίζώ να κατάφερα να εξηγήσω τι χρειάζομαι ¨)
    Ευχαριστώ εκ των προτέρων

  236. Ο/Η Nikos λέει:

    .κ. Βαρλάμη καλησπέρα σας

    Ψάχνοντας για λύση στο πρόβλημα μου έφτασα μέχρι εδώ.Το ιστολόγιό σας είναι πραγματικά
    μία εγκυκλοπαίδεια του excel πάρα πολύ διαφωτιστικό και αξιόλογο και η προσπάθεια που
    κάνετε εσείς ειλικρινά αξιέπαινη.
    Επικοινωνώ μαζί σας για ένα πρόβλημα που έχω σχετικά με το EXCEL
    Είμαι φιλόλογος σε ένα σχολείο στην Θεσσαλονίκη και τώρα με την λήξη του Β’ τριμήνου που
    θα δώσουμε βαθμολογία παρατήρησα ότι θα μπορούσαμε να καταχωρίσουμε πολύ πιο
    γρήγορα – χωρίς «διπλοεγγραφές» εξ αιτίας λαθών – την βαθμολογία των μαθητών στην
    σχολική πλατφόρμα αν είχαμε κατάλληλα διαμορφωμένο ένα αρχείο EXCEL για κάθε
    εκπαιδευτικό.
    Το πρόβλημά μας τώρα είναι το εξής:
    Έχουμε δημιουργήσει ένα γενικό βιβλίο (ΣΧΟΛΕΙΟ.xls) με όλα τα στοιχεία των μαθητών, όπως
    Τάξη, Τμήμα, Όνομα, Επίθετο, Όνομα Πατρός κλπ.
    Μέσα σε αυτό υπάρχουν περίπου 27 φύλλα – ένα φύλλο για κάθε τμήμα. που το κάθε φύλλο
    έχει σαν όνομα το όνομα του τμήματος και μέσα περιέχει ένα πίνακα με 30 γραμμές με τα
    ονόματα των μαθητών του τμήματος
    Δηλαδή

    Α1 Α2 Α3 Α4 Β1 Β2 Β3 Β4 κλπ

    Το φύλλο Α1 είναι το τμήμα Α1 και μέσα σε αυτό περιέχονται οι μαθητές του συγκεκριμένου
    τμήματος. Δηλαδή έχουμε φτιάξει αυτό το γενικό βιβλίο ΣΧΟΛΕΙΟ.xls που περιέχει ολόκληρο
    το σχολείο
    Επίσης μέσα σε αυτό υπάρχει και ένα φύλλο που το ονομάζουμε «ΔΙΔΑΣΚΑΛΙΕΣ»
    Μέσα στο ΔΙΔΑΣΚΑΛΙΕΣ περιέχεται ένας πίνακας με 3 στήλες.
    Η στήλη Α περιέχει όλα τα τμήματα
    Η στήλη Β περιέχει όλα τα μαθήματα
    Η στήλη C περιέχει όλα τα ονόματα των καθηγητών που διδάσκουν το κάθε μάθημα
    Π.Χ. ο παρακάτω πίνακας

    Α Β C
    —————————————————-
    Α1 ΘΡΗΣΚΕΥΤΙΚΑ ΟΝΟΜΑ1
    Α2 ΘΡΗΣΚΕΥΤΙΚΑ ΟΝΟΜΑ1
    Β1 ΘΡΗΣΚΕΥΤΙΚΑ ΟΝΟΜΑ1
    Α1 ΙΣΤΟΡΙΑ ΟΝΟΜΑ 2
    Α2 ΙΣΤΟΡΙΑ ΟΝΟΜΑ 2
    Γ1 ΑΡΧΑΙΑ ΟΝΟΜΑ2
    Γ2 ΤΟΠ. ΙΣΤΟΡΙΑ ΟΝΟΜΑ2
    Α1 ΑΓΓΛΙΚΑ ΟΝΟΜΑ3
    Β4 ΑΓΓΛΙΚΑ ΟΝΟΜΑ4
    Β2 ΑΓΓΛΙΚΑ ΟΝΟΜΑ4

    Θέλουμε ΝΑ ΑΝΤΙΓΡΑΦΕΙ το βασικό βιβλίο στο δίσκο με όλα τα φύλλα του και να το μετονομάζει
    στο όνομα του εκπαιδευτικού π.χ ΟΝΟΜΑ1.xls και μετά να διαγράφει όλα τα φύλλα εκτός από
    εκείνα που ανήκουν στο τμήμα που διδάσκει ο συγκεκριμένος καθηγητής ! και στα δε υπόλοιπα
    που έμειναν θα τα κάνει μετονομασία με συνδυασμό της στήλης Α και Β.
    Και για να γίνω κατανοητός στο παράδειγμα που έχουμε
    Κάνει αντιγραφή ολόκληρου του βασικού βιβλίου ΣΧΟΛΕΙΟ.xls στον σκληρό με ονομασία
    ONOMA1.xls Η αντιγραφή αν είναι δυνατόν να γίνεται σε μια προκαθορισμένη θέση και κατόπιν
    κάνει μετονομασία του φύλλου
    Α1 σε Α1-θΡΗΣΚΕΥΤΙΚΑ το
    Α2 σε Α2-ΘΡΗΣΚΕΥΤΙΚΑ το
    Β1 σε Β1-ΘΡΗΣΚΕΥΤΙΚΑ

    Για τον εκπαιδευτικό ΟΝΟΜΑ2 το φύλλο
    Α1 σε Α1-ΙΣΤΟΡΙΑ το
    Α2 σε Α2-ΙΣΤΟΡΙΑ το
    Γ1 σε Γ1-ΑΡΧΑΙΑ το
    Γ2 σε Γ2-ΤΟΠ.ΙΣΤΟΡΙΑ
    κλπ

    Το βασικό βιβλίο μένει ως έχει γιατί αυτό περιέχει
    όλο το σχολείο και από εκεί παράγονται όλα τα άλλα
    Σας ευχαριστώ
    καλό βράδυ
    ΝΙΚΟΣ

  237. Ο/Η vioannis λέει:

    Gavrielell, δεν μπορείς να στείλεις και να ανεβάσεις excel βιβλίο στο ιστολόγιο. και διότι δεν δίνει η wordpress που μας φιλοξενεί αυτή τη δυνατότητα στους επισκέπτες, και γιατί δεν είναι σωστό. Θα καταντούσε το ιστολόγιο αποθήκη βιβλίων, που κανένας τρίτος δεν θα άνοιγε. Σκοπός εδώ, είναι να συζητάμε ανοιχτά ορισμένα θέματα και να τα παρακολουθούν όλοι. Φωτογραφίες μπορείς να στείλεις, αν τις ανεβάσεις κάπου στο δίκτυο και στείλεις την διεύθυνση. Στην περίπτωσή σου δεν χρειάζεται, γιατί αυτό που περιγράφεις είναι πολύπλοκο μεν, αλλά κατανοητό. Λοιπόν απαντώ στις απορίες σου:
    (1), πως μπορεί ανάλογα με το προϊόν επιλογής να χρωματίζονται οι ανάλογες στήλες με διαφορετικό χώμα; Με μορφοποίηση υπό όρους. Παράδειγμα, για την πρώτη που περιγράφεις (την πράσινη), επιλέγεις τα κελιά V9, Y9, Z9 και ΑΑ9 και από το κεντρικό μενού επίλεξε ‘Μορφοποίηση υπό όρους’ και στη συνέχεια ‘Δημιουργία κανόνα.. ‘. Ανοίγει η καρτέλα: ‘Δημιουργία κανόνα μορφοποίησης’ και επίλεξε: ‘Χρήση τύπου για τον καθορισμό των κελιών που θα μορφοποιηθούν’ και στο πλαίσιο: ‘Μορφοποίηση τιμών όπου ο τύπος είναι αληθής’ γράψε τον τύπο:

    =$V$9="Προιόν1"
    

    Στη συνέχεια επιλέξτε το πλήκτρο ‘Μορφοποίηση’ και από την καρτέλα ‘Γέμισμα’ διαλέγεις ένα πράσινο χρώμα. Πατήστε ΟΚ και ξανά ΟΚ και έχεις έτσι ολοκληρώσει τη μορφοποίηση.
    (2) στον Τύπο προϊόντος πώς γίνεται ανάλογα με το προϊόν να διαλέγω από 6 διαφορετικές επιλογές; Αυτό το θέμα έχει αναλυτικά περιγραφτεί στο σημείωμα του ιστολογίου Φιλτραρισμένη επικύρωση (δεδομένα σε ομάδες)

  238. Ο/Η vioannis λέει:

    Νίκο, η σαφήνειά σου στην περιγραφή απλοποιεί τα πράγματα, σε ένα θέμα που από πρώτη ανάγνωση μοιάζει δύσκολο. Θα έχεις πολύ σύντομα την πρότασή μου.

  239. Ο/Η Giannis λέει:

    Γεια σας,θελω να ρωτησω πως μπορω φτιαξω (αν μη τι αλλο ισως να το βρω ετοιμο)ενα ημερολογιο στο excel.Ενα «οριζοντιο» ομως ημερολογιο.
    Οριζοντιο δηλαδη,να απεικονιζοντε ολοι οι μηνες σε μια οριζοντια γραμμη στη οθονη ,απο τα αριστερα στα δεξια.(Θα μπορουσε να ονομαστει και γραμμικο!)
    Δηλαδη τερμα αριστερα να βρισκετε ο Ιανουαριος 1-2-3-4 κ.ο.κ σε κελια εως τερμα δεξια που θα ειναι ο Δεκεμβριος.Και φυσικα να ειναι ενεργο δηλαδη καθε μερα να αλλαζει το κελι να γινετε παραδειγμα κοκκινο χρωμα.

  240. Ο/Η vioannis λέει:

    Νίκο, άνοιξε το πλαίσιο για να δεις και να αντιγράψεις τον κώδικα.

    Sub school()
    If Not ActiveWorkbook.Name = "ΣΧΟΛΕΙΟ.xls" Then GoTo telos
    ActiveWorkbook.Save
    Dim UniqueTeacher() As Variant
    Dim i As Integer, j As Integer
    Dim ut As Integer
    Dim pl As Integer, shpl As Integer
    Dim LastStr As String
    Dim myPath As String
    
    myPath = ActiveWorkbook.Path
    LastStr = chr(95) & chr(95)
    
    On Error GoTo telos
    
    Application.ScreenUpdating = False
    Sheets("ΔΙΔΑΣΚΑΛΙΕΣ").Select
    UniqueTeacher = UniqueValue(Range("C2:C500"))
    
    For ut = LBound(UniqueTeacher) To UBound(UniqueTeacher)
    
    ActiveWorkbook.SaveAs filename:= _
    myPath & "\" & UniqueTeacher(ut) & ".xls"
    Sheets("ΔΙΔΑΣΚΑΛΙΕΣ").Select
    pl = Application.WorksheetFunction.CountA(Range("A:A"))
    For i = 2 To pl
    If Range("C" & i).Value = UniqueTeacher(ut) Then
    Sheets(Range("A" & i).Value).Name = _
    Range("A" & i).Value & "-" & Range("B" & i).Value & LastStr
    End If
    Next
    
    shpl = ActiveWorkbook.Sheets.Count
    Application.DisplayAlerts = False
    For j = shpl To 1 Step -1
    If Right(Sheets(j).Name, 2) <> LastStr Then
    Application.DisplayAlerts = False
    Sheets(j).Delete
    Application.DisplayAlerts = True
    End If
    Next
    
    shpl = ActiveWorkbook.Sheets.Count
    For j = 1 To shpl
    Sheets(j).Name = VBA.Replace(Sheets(j).Name, LastStr, "")
    Next
    
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Workbooks.Open filename:=myPath & "\ΣΧΟΛΕΙΟ.xls"
      
    Next ut
    telos:
    Application.ScreenUpdating = True
    End Sub
    
    Private Function UniqueValue(ByVal perioxi As Range) As Variant
    Dim keli As Range
    Dim Syllogi As New Collection
    Dim i As Long
    Dim Varray() As Variant
    Set perioxi = Intersect(perioxi, ActiveSheet.UsedRange)
     On Error Resume Next
    For Each keli In perioxi
    If keli.Value <> "" Then
    Syllogi.Add keli.Value, CStr(keli.Value)
    End If
    Next keli
    On Error GoTo 0
    If Syllogi.Count = 0 Then UniqueValue = "": GoTo telos
    ReDim Varray(1 To Syllogi.Count)
    For i = 1 To Syllogi.Count
    Varray(i) = Syllogi(i)
    Next i
    UniqueValue = Varray
    telos:
    End Function
    

    Τον κώδικα πρέπει να γράψεις σε ένα module του personal βιβλίου. Μόνο από εκεί τρέχει. Θα δουλέψει αν τον γράψεις σε module του βιβλίου ΣΧΟΛΕΙΟ.xls, αλλά επειδή τα βιβλία των καθηγητών που δημιουργεί είναι αντίγραφά του, θα έχουν και αυτά φορτωμένα τον κώδικα, πράγμα που δεν το θέλεις.
    Ο κώδικας τρέχει με τις παρακάτω παραδοχές:
    Α) Το μητρικό βιβλίο λέγεται ΣΧΟΛΕΙΟ.xls. Αν αυτό δεν ισχύει πρέπει να διορθώσεις τις δύο εμφανίσεις του ονόματος στον κώδικα.
    Β) Το φύλλο ΔΙΔΑΣΚΑΛΙΕΣ, λέγεται πράγματι έτσι . Αν αυτό δεν ισχύει, και εδώ πρέπει να διορθώσεις τις δύο εμφανίσεις του ονόματος στον κώδικα.
    Γ) Στο φύλλο ΔΙΔΑΣΚΑΛΙΕΣ η δομή των στηλών Α,Β,C είναι αντίστοιχα: Α: ΤΜΗΜΑΤΑ, Β: ΜΑΘΗΜΑΤΑ, C: ΚΑΘΗΓΗΤΕΣ. Στην πρώτη γραμμή οι ετικέτες αυτές, και από την δεύτερη γραμμή και κάτω τα δεδομένα χωρίς κενά κελιά ενδιάμεσα. Μετά το τέλος του καταλόγου οι στήλες να είναι κενές. Η υπόλοιπη δομή του φύλλου είναι αδιάφορη. Προσάρμοσε τις στήλες A, B, C στη περιγραφή, γιατί γίνονται πολλές αναφορές στον κώδικα στη δομή αυτή, και δεν είναι εύκολο να διορθωθεί ο κώδικας.
    Δ) Εξασφάλισε ότι τα ονόματα των φύλλων και η στήλη ΤΜΗΜΑΤΑ, έχουν γραφτεί με τον ίδιο ακριβώς τρόπο (πχ το Α έχει γραφτεί παντού με ελληνικό πληκτρολόγιο ή με αγγλικό. αλλά όχι και με τα δύο. Και ακόμα στις εγγραφές Α1, Α2 κλπ δεν υπάρχουν άσκοπα κενά εμπρός ή πίσω ή ανάμεσα) Αυτά μπορούσα να τα εξασφαλίσω με κώδικα, αλλά θα τραβούσε σε μήκος και δεν είναι αυτό το ζητούμενο.
    Ε) Τα παραγόμενα βιβλία των καθηγητών θα γραφτούν στον ίδιο φάκελο που βρίσκεται το βιβλίο ΣΧΟΛΕΙΟ.xls. Κάνε δοκιμές με ένα αντίγραφο του μητρικού σε ένα νέο άδειο φάκελο για να δεις τα αποτελέσματα. Πες μου αν δούλεψε.

  241. Ο/Η vioannis λέει:

    Γιάννη, αυτό που ζητάς είναι εύκολο στο excel. Σε ένα νέο άδειο φύλλο στο κελί Α1 γράψε 1/1/15 και στο κελί Β1 γράψε 2/1/15. Κατόπιν επίλεξε τα δύο αυτά κελιά και μορφοποίησε τα, με μια μορφή ημερομηνίας που θέλεις, πιο καλά με μια μορφή που δίνει και την ημέρα της εβδομάδος. Κατόπιν επίλεξε πάλι τα κελιά Α1 και Β1 και σύρε έως το κελί ΝΑ1. Έχεις έτσι και τις 365 μέρες του 2015.
    Πιο εύκολα: στο κελί Α1 γράψε 1/1/2015. Επίλεξε όλη τη γραμμή 1 από το κουμπί με αριθμό 1 αριστερά. Από το κεντρικό μενού επίλεξε ‘Συμπλήρωση’ στη συνέχεια ‘Σειρά’ και φρόντισε η καρτέλα ‘Σειρά’ που θα εμφανιστεί, να είναι συμπληρωμένη όπως η εικόνα, και πάτα ΟΚ

    Για να εμφανίζεται με άλλο χρώμα η τρέχουσα ημερομηνία χρειάζεσαι μορφοποίηση με όρους. Επίλεξε τα κελιά Α1 έως ΝΑ1 (ή όλη τη γραμμή 1) και κάνε μορφοποίηση με τύπο:

    =A1=TODAY()
    

    Για το πώς θα εισάγεις τη μορφοποίηση με τύπο δες αμέσως πιο πάνω την απάντησή μου στην Gavrielell.
    Αν θέλεις ένα τμήμα της στήλης της τρέχουσας ημερομηνίας να χρωματίζεται , και όχι μόνο το κελί της πρώτης γραμμής, τότε επίλεξε όλες τια γραμμές που σε ενδιαφέρουν (από τους αριθμούς τους αριστερά) και κάνε μορφοποίηση με τύπο:

    =A$1=TODAY()
    

    Βλέπεις ότι τη διαφορά κάνει, το τι επιλέγεις και ένα…. δολάριο!
    Αν θέλεις να χρωματίζεται διαφορετικά ο τρέχον μήνας στην πρώτη γραμμή, ο τύπος είναι:

    =MONTH(A1)=MONTH(TODAY())
    

    Και αν θέλεις να χρωματίζεται διαφορετικά η τρέχουσα εβδομάδα (Δευτέρα έως Κυριακή) ο τύπος είναι λίγο πιο μεγάλος:

    =AND(TODAY()>=A1+1-WEEKDAY(A1;2);TODAY()<=A1+7-WEEKDAY(A1;2))
    

    Μπορείς να έχεις και τις τρεις μορφοποιήσεις (με διαφορετικό βέβαια χρώμα η κάθε μία), αρκεί να τις γράψεις με την παρακάτω σειρά, πρώτα για τον μήνα, μετά για την εβδομάδα και τέλος για την ημέρα.

  242. Ο/Η Nikos λέει:

    κ. Γιάννη
    Καλησπέρα σας,
    Μόλις τώρα έκανα μία δοκιμή σχετικά με τον κώδικα για το «ΣΧΟΛΕΙΟ» που μου στείλατε.

    ΑΠΟΤΕΛΕΣΜΑΤΑ:
    Δημιουργεί ΜΟΝΟΝ το πρώτο όνομα του πίνακα και κανένα άλλο…!!!
    ΔΗΛΑΔΗ παίρνει τον πρώτο καθηγητή τα μαθήματα που έχει και τα τμήματα,
    δημιουργεί σωστά το αρχείο EXCEL στον δίσκο αλλά εκεί σταματάει…

    Δεν συνεχίζει για τον επόμενο καθηγητή…!!!

    Άλλαξα και την σειρά δηλαδή έβαλα άλλο όνομα καθηγητή πρώτο αλλά πάλι τα ίδια,
    δημιουργεί μόνον τον πρώτο.
    Επίσης παρατήρησα ότι οπουδήποτε και να εντοπίσει μέσα στην λίστα τον συγκεκριμένο καθηγητή πολύ σωστά το έχετε προγραμματίσει να παίρνει για αυτόν όλες τις εγγραφές
    (Δηλαδή ψάχνει όλο τον πίνακα)
    Πάντως πέρα από τα άλλα αυτό που δημιουργεί από ότι είδα είναι σωστό και στο περιεχόμενο και στην δομή…!!!

    Κάτι ακόμα που μάλλον είναι δική μου παράληψη, και σας ζητώ συγγνώμη για αυτό, είναι ότι αν υπάρξουν διπλές γραμμές ίδιες και στις 3 στήλες (άρα διπλοεγγραφές) για οποιονδήποτε καθηγητή αυτές θα πρέπει να αγνοούνται (Θα κρατάει μόνο την μία) γιατί αλλιώς εδώ συναντάμε ένα ασυμβίβαστο:
    Δεν είναι δυνατόν να κάνει ο ίδιος καθηγητής το ίδιο μάθημα στο ίδιο τμήμα δύο φορές.
    Βέβαια αυτό μπορούμε να το εξαλείψουμε αν δώσουμε την κατάλληλη ΠΡΟΣΟΧΗ κατά την εισαγωγή των δεδομένων, δηλαδή την ώρα που πληκτρολογούμε – δημιουργούμε τον πίνακα στο φύλλο ΔΙΔΑΣΚΑΛΙΕΣ.
    Δυστυχώς όμως αυτό το λάθος συνέβη κατά την προηγούμενη περίοδο…

    Σας ευχαριστώ πολύ
    καλό σας βράδυ
    ΝιΚΟΣ

  243. Ο/Η vioannis λέει:

    Νίκο, Τις διπλοεγγραφές θα τις απομακρύνεις από τον πίνακα. Αυτό είναι απαραίτητο. Υποθέτοντας τις στήλες D και Ε κενές, στα κελία D2 και Ε2 γράψε αντίστοιχα τους τύπους:

    =A2&B2&C2
    =COUNTIF(D2:$D$2;D2)
    

    και θα τους αντιγράψεις έως το τέλος . Όπου στη στήλη D εμφανίζεται αριθμός μεγαλύτερος του 1 είναι διπλοεγγραφή και θα την διαγράψεις ή θα την απομακρύνεις προσωρινά. Μετά από αυτό κάνε νέα δοκιμή.

  244. Ο/Η gavrielell λέει:

    Γίαννη σας ευχαριστώ πολύ για την βοήθεια σας και τις απαντήσεις που μου δώσατε. Θα ήθελα να μου συστήσετε κάποιο βοήθημα ή βιβλίο για να μάθω την αγγλική excel και προγραμματισμό.
    Σας ευχαριστώ εκ των προτέρων
    Hellen

  245. Ο/Η vioannis λέει:

    gavrielell, Η αγγλόφωνη βιβλιογραφία είναι τεράστια. Αν διαβάζεις με άνεση αγγλικά εδώ http://it-ebooks.info/ θα βρεις πολλά βιβλία για να κατεβάσεις. Γράψε στην αναζήτηση excel ή vba και θα βρεις πολλούς τίτλους. Αν δουλεύεις σε 2010 ή 2013 συνιστώ το ‘Excel 2010 Bible’ του John Walkenbach, θα το βρεις εδώ http://it-ebooks.info/book/1106/
    Για την vba, ένα καλογραμμένο πολύ κατανοητό για αρχάριο και συστηματικό είναι το ‘Excel VBA 24-Hour Trainer’ του Tom Urtis, θα το βρεις εδώ http://it-ebooks.info/book/3046/
    Η ελληνική βιβλιογραφία συστηματικά αναφέρεται στα excel με ελληνικά μενού . Για τις λειτουργίες φύλλου διάλεξε, στην έκδοση που δουλεύεις, ένα αναλυτικό βιβλίο. Απέφυγε βιβλία του τύπου: το excel σε 10 λεπτά,ή με μια ματιά ή όλο το office σε ένα βιβλίο και παρόμοια. Η γνώμη μου είναι ότι η σειρά των βιβλίων ‘Το excel Βήμα-Βήμα’ που νομίζω υπάρχουν για όλες τις εκδόσεις excel, είναι πολύ καλή για ένα νέο χρήστη. Τις προτάσεις μου για πιο προχωρημένη μελέτη και για vba (στην ελληνική γλώσσα), θα τις βρεις σε παλιότερη απάντηση μου εδώ.

  246. Ο/Η gavrielell λέει:

    Γιάννη σας είμαι ευγνώμων και χαίρομαι πολύ για την βοήθεια σας, μου αρέσει πολύ η excel και θα ήθελα να την μάθω. Σε αυτή την ιστοσελίδα μόνο πέρνουμε ή μπορούμε να κάνουμε κι εμείς κάτι για έσας ή για την ομάδα σας;

  247. Ο/Η vioannis λέει:

    Πολύ καλά θα κάνεις gavrielell. Το excel είναι πολύ καλό εργαλείο, σχεδόν ότι δουλειά και να κάνεις θα το συναντάς και η καλή γνώση του, είναι δύναμη. Σε ευχαριστώ για την πρόθεση σου να βοηθήσεις, αλλά δεν υπάρχει ομάδα εδώ, είναι κάτι σαν one man show, απλά ένα προσωπικό χόμπι, μην νιώθεις υποχρέωση. Καλή επιτυχία στη προσπάθειά σου.

  248. Ο/Η ΕΛΕΝΗ λέει:

    κ. Γιάννη
    Καλημέρα σας

    Θα ήθελα να με βοηθήσετε σε ένα πρόβλημα που προσπαθώ να λύσω σχετικά με το excel
    Εργάζομαι στην οικογενειακή επιχείρηση και συχνά χρειαζόμαστε να στείλουμε στους πελάτες
    μας ένα έντυπο – ενημέρωση σχετικά με το υπόλοιπο των οφειλών τους.
    Το λογιστικό πρόγραμμα που έχουμε εξάγει ένα λογιστικό φύλλο που εκτός των άλλων
    πληροφοριών που στην παρούσα φάση δεν μας ενδιαφέρουν έχει όλα εκείνα τα στοιχεία
    που εμείς χρειαζόμαστε

    Συγκεκριμένα είναι:
    Στην πρώτη στήλη έχει το κωδικό πελάτη (αδιάφορο)
    στην δεύτερη έχει την διεύθυνση του (αδιάφορο-υπάρχει εξ.πρόγραμμα εκτύπωης ετικετών)
    στην τρίτη έχει την ΕΠΩΝΥΜΙΑ (η εμπορική ονομασία της επιχείρησης)
    στην τέταρτη έχει το ΟΝΟΜΑ (μονον αν ειναι ατομικη επειχείρηση, αλλιώς είναι κενο)
    στην πέμπτη έχει τον ΠΩΛΗΤΗ (ποιός είναι ο υπεύθυνος πωλητής που τον βλέπει)
    στην έκτη έχει το ΣΥΝ.ΟΦΕΙΛΗΣ (συνολικό ποσό που οφείλει)
    στην έβδομη έχει το ΠΟΣΟ-ΤΕΛ.ΔΟΣΗΣ (ποσό της τελευταίας δόσης που έδωσε) κλπ
    Εμάς μας ικανοποιούν απο και την τρίτη έως και την έβδομη στήλη οι 5 αυτές στήλες περιέχουν όλα τα στοιχεία που χρειαζόμαστε οι 2 πριν στήλες και οι υπόλοιπες μετά την έβδομη προς το παρόν μας είναι αδιάφορες.

    Δηλαδή είναι κάπως έτσι

    C D E F G
    ΕΠΩΝΥΜΟ ΟΝΟΜΑ ΠΩΛΗΤΗΣ ΣΥΝ.ΟΦΕΙΛΗΣ ΠΟΣΟ-ΤΕΛ.ΔΟΣΗΣ

    Επειδή αυτή η διαδικασία γίνεται κάθε 15 μέρες και παίρνει πολύ χρόνο και γίνονται και πολλά
    λάθη σκέφτηκα αν θα ήταν δυνατόν να το κάνω αυτό αυτόματα μέσα από το πρόγραμμα Excel
    με κάποια συνάρτηση, αφού έχω στα χέρια μου το αρχείο – εγώ το λέω ΟΦΕΙΛΕΣ – και είναι αυτό
    που μου βγάζει το λογιστικό πρόγραμμά μου, επίσης έχω φτιάξει και μια κοινή φόρμα σαν
    δεύτερο φύλλο μέσα στο ίδιο αρχείο ΟΦΕΙΛΕΣ που την λέω ΦΟΡΜΑ με όλα τα πεδία που με
    ενδιαφέρουν να είναι κενά.
    Πώς θα μπορούσα με κάποια συνάρτηση από το excel να παίρνει γραμμή – γραμμή με αντιστοιχία
    τα στοιχεία που μας ενδιαφέρουν και να τα «βάζει» στην κοινή φόρμα στις σωστές «θέσεις» τους που έχω αφήσει κενές όταν την σχεδίαζα, και μετά να τα εκτυπώνει στον εκτυπωτή για να τα βάλουμε, άλλα στους φακέλους και άλλα να τα στείλουμε με mail;
    Έτσι και θα με βοηθήσει πάρα πολύ και δεν θα γίνονται λάθη, αν ξέρετε κάτι ή κάποια συνάρτηση που το κάνει αυτό πείτε μου σας παρακαλώ.!

    Σας ευχαριστώ
    ΕΛΕΝΗ

  249. Ο/Η vioannis λέει:

    Το πρόβλημα σου Ελένη δεν λύνεται με συναρτήσεις φύλλου. Απαιτεί λίγο αλλά εύκολο κώδικα vba. O κώδικας θα διαβάζει μία- μία τις εγγραφές (πχ από σειρά 112 ως 250, εσύ θα το ορίζεις αυτό), και θα τις στέλνει στο φύλλο ΦΟΡΜΑ και θα την εκτυπώνει. Θα πάρει πρώτα τα στοιχεία της σειράς 112, μετά θα γυρίζει για να πάρει την επόμενη εγγραφή κλπ έως την τελευταία (την 250). Πες μου αν αυτό πράγματι ζητάς και θα περιμένεις 1-2 ημέρες. Είναι ενδιαφέρον θέμα.

  250. Ο/Η XRHSTOS λέει:

    ΚΑΛΗΣΠΕΡΑ ΕΧΩ ΑΝΑ ΠΡΟΒΛΗΜΑΤΑΚΗ ΣΕ ΕΝΑ ΦΥΛΛΟ EXCEL ΠΟΥ ΠΕΡΝΑΩ ΑΠΟΔΕΙΞΗΣ ΠΑΤΩΝΤΑΣ ΓΙΑ ΚΑΤΑΧΩΡΗΣΗΣ ΜΟΥ ΒΓΑΖΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΜΥΝΗΜΑ RUN TIME ERROR 9

  251. Ο/Η ΕΛΕΝΗ λέει:

    κ. Γιάννη
    Σας ευχαριστώ για την ανταπόκρισή σας στο πρόβλημά μου.
    Δεν ξέρετε πόσο πολύ θα με βοηθήσουν για την δουλειά μου
    οι γνώσεις σας στο Excel.
    Βλέπετε οι δικές μου φτάνουν μέχρι εκεί που μάθαμε στο
    σχολείο και ό,τι και όσο μετέπειτα έχω προσπαθήσει
    μόνη μου να βελτιωθώ για τις απαιτήσεις της δουλειάς
    και των καθημερινών αναγκών μου.
    Όπως περιγράφετε την λύση του προβλήματός μου
    παραπάνω μάλλον πρακτικά κάτι τέτοιο αναζητώ.

    Θα ξεκινάει από την αρχή και θα πηγαίνει μέχρι το τέλος;
    ή εγώ θα πρέπει να του λέω κάθε φορά από που θα
    αρχίζει και που θα τελειώνει;

    Επίσης αφού τα εκτυπώσει θα μπορεί μετά και να τα
    αποθηκεύσει σε ένα φάκελο στον δίσκο για να κρατάω
    και αρχείο ή δεν γίνεται αυτό ή γίνεται μόνο το ένα
    ή μπορούν να γίνονται και οι δύο ενέργειες;

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

    Σας ευχαριστώ
    ΕΛΕΝΗ

  252. Ο/Η vioannis λέει:

    Χρήστο, προφανώς κάποιες μακροεντολές τρέχουν στο βιβλίο σου. Το σφάλμα 9 συνήθως εμφανίζεται όταν η μακροεντολή ψάχνει να βρει ένα στοιχείο μιας συλλογής και δεν το βρίσκει. Παράδειγμα ένα στοιχειό ενός πίνακα που δεν υπάρχει, ένα φύλλο στο βιβλίο που δεν υπάρχει (γιατί κάποιος το μετονόμασε ή το διέγραψε). Αλλά, μόνο αυτός που έγραψε τον κώδικα μπορεί να εντοπίσει που ακριβώς είναι το πρόβλημα.

  253. Ο/Η vioannis λέει:

    Ελένη εσύ θα του λες που να αρχίσει και που να τελειώσει. Γίνεται και εκτύπωση και αποθήκευση.

  254. Ο/Η Theodoros λέει:

    Καλημέρα σας,
    Έχω ένα πίνακα με δεδομένα (Α:Τ) και θέλω να εξάγω απο αυτόν σε διαφορετικό σημείο συγκεκριμένα κελία Α2, Α7, Α12, Α17 κτλ, Β2, Β7, Β12, Β17 κτλ. Όλα ακολουθούν το ίδιο «pattern»
    δηλαδή. Πως μπορώ δηλαδή να παίρνω σε μια στήλη το Α2, απο κάτω το Α7 (Α2+5) από κάτω το Α12 (Α7+5) κτλ. Με drag μου βγάζει φυσικά Α2, Α3, Α4 κτλ. Μπορώ να κάνω κάτι; Μέχρι στιγμής τα αντιγράφω όλα και απλά μετά τα κάνω sort με διάφορο του 0 (γιατί τα Α3, Α4, Α5, Α6 είναι 0).

    Ευχαριστώ εκ των πρωτέρων

  255. Ο/Η vioannis λέει:

    Θεόδωρε, Υπάρχουν πολλές λύσεις για το πρόβλημά σου. Θα περιγράψω δύο από αυτές.
    Α) Πήγαινε στην πρώτη άδεια στήλη δεξιά του πίνακά σου (φαντάζομαι είναι η U) και στο κελί U1 γράψε τον τύπο

    =MOD(ROW();5)
    

    Αντίγραψε αυτόν τον τύπο κάτω-κάτω στη στήλη U, έως την τελευταία γραμμή του πίνακα. Παρατήρησε ότι στις γραμμές 2,7,12,17…. η συνάρτηση αυτή επιστρέφει τον ίδιο πάντα αριθμό (2). Επίλεξε τώρα όλο τον πίνακα μαζί με την U, και φιλτράρισε ως προς τον αριθμό 2. Αντίγραψε την φιλτραρισμένη περιοχή και επικόλλησε τη όπου θέλεις. Μετά ακύρωσε το φίλτρο και διάγραψε τη στήλη U ή κράτησε τη για μελλοντική χρήση. (Σημείωση: Αν κατά την αντιγραφή της φιλτραρισμένης περιοχής, αντιγράφονται και μη φιλτραρισμένες γραμμές, τότε ακολούθησε τα παρακάτω βήματα: Μετά το φίλτρο επίλεξε όλη την φιλτραρισμένη περιοχή του πίνακα και μόνο αυτή. Πάτα F5 στο πληκτρολόγιο, στο πλαίσιο ‘Μετάβαση σε…’ που θα εμφανιστεί επίλεξε ‘Ειδικά σε…’ και στη συνέχεια επίλεξε ‘Εμφανή κελιά μόνο’ και πάτα ΟΚ. Τώρα προχώρα στην αντιγραφή και επικόλληση)

    Β) Σε μία άδεια στήλη ας πούμε πάλι στην U, στο πρώτο κελί U1 γράψε τον αριθμό 2. Στο κελί U2 γράψε τον τύπο:

    =U1+5
    

    και αντίγραψέ τον προς τα κάτω. Θα παραχθούν στη στήλη U οι αριθμοί 2,7,12,17….
    Στην πρώτη γραμμή διπλανών στηλών γράψε τους τύπους:

    =INDIRECT("A"&U1)
    =INDIRECT("B"&U1)
    =INDIRECT("C"&U1)
    ………………………
    =INDIRECT("T"&U1)
    

    Οι τύποι αυτοί θα επιστρέψουν όλη τη γραμμή 2 του πίνακα. Αντίγραψέ τους προς τα κάτω και θα έχεις τις γραμμές 7,12,17…κλπ του πίνακα.
    Η μέθοδος αυτή έχει το πλεονέκτημα (ή μειονέκτημα, ανάλογα τι επιδιώκεις) να κρατά τα νέα κελιά σε διασύνδεση με τα αρχικά. Με κάθε αλλαγή στα αρχικά κελιά ενημερώνονται αμέσως τα νέα. Ακόμα άλλαξε τον αριθμό 2 στο κελί U1, και παρατήρησε τις αλλαγές.
    Γ) Και μία τρίτη, αν οι σειρές που θα μεταφέρεις είναι λίγες. Επίλεξε τη γραμμή Α2:Τ2, κράτα το Ctrl πατημένο με το ένα χέρι και με το άλλο συνέχισε να επιλέγεις τις υπόλοιπες γραμμές Α7:Τ7, μετά Α12:Τ12 κλπ. Όταν διαλέξεις και την τελευταία δεξί κλικ, επιλέγεις αντιγραφή, άσε το Ctrl, κλικ εκεί που θες να τα πας, δεξί κλικ, ειδική επικόλληση και επιλέγεις ‘Παράλειψη κενών’. Αν στα κελιά που αντέγραψες υπάρχουν συναρτήσεις πρέπει επιπλέον να επιλέξεις και ‘Τιμές’

  256. Ο/Η vioannis λέει:

    Ελένη,το πρόβλημα που βάζεις(15/3/15) κανονικά λύνεται από τη «Συγχώνευση αλληλογραφίας» (Mail Merge) στο Word. Η φόρμα (επιστολή) ετοιμάζεται στο Word και η λίστα των παραληπτών είναι σε μία βάση της Access ή σε ένα φύλλο του Excel. Δες στις παρακάτω διευθύνσεις:
    https://support.microsoft.com/en-us/kb/318118/el
    https://support.microsoft.com/en-us/kb/294693/el
    Εσύ έχεις ετοιμάσει τη φόρμα σε ένα φύλλο του excel, έχεις αφήσει κενά κάποια κελιά, τα κελιά αυτά θα ενημερώνεται από έναν πίνακα που βρίσκεται σε ένα άλλο φύλλο, κάθε εγγραφή (γραμμή) του πίνακα θα παράγει ένα νέο έγγραφο το οποίο θα εκτυπώνεται και θα αποθηκεύεται. Ο κώδικας που θα χρειαστείς και περιγραφή για να τον προσαρμόσεις , στο τέλος.
    Σε μία πιο λάιτ, χειριστική λύση του προβλήματος, χωρίς κώδικα, θα μπορούσε ο πίνακας να δομηθεί κατάλληλα και να ενημερώνει τα κελιά της φόρμας με την vlookup. Παράδειγμα: Η δομή του πίνακα είναι:
    Α/Α-Όνομα-Διεύθυνση -Ποσό
    Ονομάζετε τον πίνακα table
    Στη φόρμα, στα κελιά που πρέπει να γραφτεί το όνομα διεύθυνση και το ποσό γράφετε αντίστοιχα τους τύπους:

    =VLOOKUP(Φύλλο1!$A$1;table;2;FALSE)
    =VLOOKUP(Φύλλο1!$A$1;table;3;FALSE)
    =VLOOKUP(Φύλλο1!$A$1;table;4;FALSE)
    

    Για να ετοιμάσετε τη φόρμα για την εγγραφή 45
    45-Νικολάου Νίκος-Διάκου 12 -123,00€
    θα πληκτρολογείτε στο κελί Α1 τον Α/Α 45 και τα κελιά στη φόρμα θα ενημερώνεται. Η αποθήκευση και η εκτύπωση θα γίνεται στη συνέχεια χειριστικά. Είναι λύση για να παραχθούν λίγες μόνο φόρμες.
    Από την άλλη, ο κώδικας μπορεί να δώσει λύση σε ποιο σύνθετες περιπτώσεις , όπως να αντλούνται στοιχεία από πολλούς πίνακες σε διαφορετικά φύλλα ή (και) να ενημερώνονται διαφορετικές φόρμες ταυτόχρονα, παράδειγμα φόρμες σε διαφορετικές γλώσσες ανάλογα με την εθνικότητα του πελάτη κλπ. Ο κώδικας που ακολουθεί είναι για μία φόρμα και ένα πίνακα.

    Sub Update_Print_and_Save_Forma()
    
    Dim master As String
    Dim forma As String
    Dim myPath As String
    Dim newPath As String
    Dim newBook As String
    Dim Extension As String
    Dim first As Long
    Dim last As Long
    Dim rw As Long
    Dim pl As Long
    Dim Varr(1 To 7) As Variant
    
    master = "Φύλλο1"
    forma = "ΦΟΡΜΑ"
    myPath = ActiveWorkbook.Path
    newPath = myPath & "\" & Format(Date, "yyyymmdd") & "_" & Format(Now, "hhmmss")
    If Val(Application.Version) < 12 Then
        Extension = ".xls"
        Else
        Extension = ".xlsx"
    End If
    
    Worksheets(master).Activate
    pl = Selection.SpecialCells(xlCellTypeLastCell).Row
    first = Application.InputBox(Prompt:="Αρχίζω από τη γραμμή", Default:=0, Type:=1)
        If first <= 0 Then GoTo telos
        If first > pl Then GoTo telos
    last = Application.InputBox(Prompt:="Τελειώνω με τη γραμμή", Default:=0, Type:=1)
        If last <= 0 Then GoTo telos
        If last > pl Then last = pl
        If first > last Then GoTo telos
    
    MkDir newPath
    
    Application.ScreenUpdating = False
    
    Worksheets(master).Activate
    For rw = first To last
    Varr(1) = Cells(rw, "C").Value
    Varr(2) = Cells(rw, "D").Value
    Varr(3) = Cells(rw, "E").Value
    Varr(4) = Cells(rw, "F").Value
    Varr(5) = Cells(rw, "G").Value
    Varr(6) = Cells(rw, "H").Value
    Varr(7) = Cells(rw, "I").Value
    
    If Varr(1) = "" Then GoTo nextRW
    If Varr(5) < 10 Then GoTo nextRW
    
    With Sheets(forma)
        .Range("b1") = Varr(1)
        .Range("b2") = Varr(2)
        .Range("b3") = Varr(3)
        .Range("b4") = Varr(4)
        .Range("b5") = Varr(5)
        .Range("b6") = Varr(6)
        .Range("b7") = Varr(7)
    End With
    newBook = Varr(1) & "_" & Varr(2)
    Sheets(forma).Copy
    ChDir myPath
    ActiveWorkbook.SaveAs filename:=newPath & "\" & newBook & Extension
    'ActiveWorkbook.SaveAs filename:=newPath & "\" & newBook & ".xls", FileFormat:=xlExcel8
    'ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, filename:=newPath & "\" & newBook & ".pdf"
    
    ActiveWindow.SelectedSheets.PrintPreview
    'ActiveWindow.SelectedSheets.PrintOut Copies:=1
    'Application.Wait (Now + TimeValue("0:00:3"))
    
    ActiveWorkbook.Close SaveChanges:=False
    nextRW:
    Next rw
    
    Worksheets(master).Activate
    telos:
    Application.ScreenUpdating = True
    End Sub
    

    3-13: Δηλώσεις.
    15-23: Ορισμοί. Φύλλο1 είναι το φύλλο με τον πίνακα. 19-23: ελέγχεται η έκδοση του excel που δουλεύετε και καθορίζεται το extension
    25-33: Ζητείται από τον χρήστη η πρώτη και η τελευταία γραμμή και γίνεται ένας βασικός έλεγχος για τους αριθμούς γραμμών.
    35: Στον φάκελο που είναι αποθηκευμένο το excel βιβλίο που δουλεύετε, δημιουργείται ένας υποφάκελος με όνομα «εεεεμμηη_ωωλλδδ» ο οποίος θα φιλοξενήσει τα βιβλία .xls ή .xlsx ή .pdf που θα δημιουργήσετε.
    37: Σταθεροποίηση οθόνης.
    39-47: Συλλογή στοιχείων από τον πίνακα του Φύλλου1. Οι διευθύνσεις κελιών είναι ενδεικτικές. Προσθέστε ή αφαίρεστε όσα κελιά θέλετε και μετά τροποποιήστε τη δήλωση για τον πίνακα Varr(1 To 7) ανάλογα στη γραμμή 13.
    49-50: Πιθανά θα πρέπει να ελέγξετε αν κάποιες από τις μεταβλητές τιμές ικανοποιούν κάποια κριτήρια για να ολοκληρωθεί η δημιουργία αυτής της φόρμας. πχ, ίσως το ποσό στο κελί G(rw) να πρέπει να είναι μεγαλύτερο του 10 η το κελί C(rw) δεν πρέπει να είναι κενό.
    52-60: Αφού μαζεύτηκαν όλα τα κατάλληλα στοιχεία από το Φύλλο1, αντιστοιχίστε τώρα στα κελιά που πρέπει στο φύλλο ΦΟΡΜΑ.
    61: Δημιουργία ονόματος αρχείου. Το όνομα του κάθε αρχείου θα σχηματίζεται από μια ή περισσότερες τιμές των κελιών του πίνακα Varr. Ίσως τα κελιά της στήλης C να περιέχουν επίθετα και της στήλης D μικρά ονόματα και θέλετε το όνομα του αρχείου να συνδυάζει αυτά τα δύο. Φροντίστε τα ονόματα των αρχείων να είναι μοναδικά για κάθε τρέξιμο της μακροεντολής.
    62-64: Αποθήκευση. Η σελίδα με την φόρμα αποθηκεύεται στον φάκελο που φτιάξαμε στην γραμμή 35 σαν χωριστό αρχείο(βιβλίο). Το αρχείο αποθηκεύεται σαν .xls ή .xlsx ανάλογα με την έκδοση excel στην οποία δουλεύετε.
    65: Αν τρέχετε τη μάκρο από excel 2007 ή νεότερο, αλλά θέλετε να παίρνετε αρχεία .xls, ενεργοποιείστε αυτή τη γραμμή κώδικα και ακυρώστε την 64.
    66: Αν θέλετε αρχεία σε μορφή .pdf (και το excel σας έχει τη δυνατότητα να αποθηκεύει στη μορφή αυτή) ενεργοποιείστε την 66 γραμμή κώδικα και ακυρώστε τις 64 και 65.
    68-69: Εκτυπώνει τη σελίδα με τη φόρμα. Την εκτύπωση κάνει η γραμμή 69, η οποία είναι απενεργοποιημένη για να μην σπαταλήσετε χαρτί στις δοκιμές. Στη θέση της είναι ενεργοποιημένη η 68 που κάνει ‘Προεπισκόπηση εκτύπωσης’. Για να δείτε διαδοχικά τα φύλλα πατήστε το πλήκτρο ‘Κλείσιμο Προεπισκόπησης εκτύπωσης’.
    70: Αν έχετε όχι πολύ γρήγορο εκτυπωτή, ή σκοπεύετε να εκτυπώσετε εκατοντάδες σελίδας, ίσως ήταν φρόνιμο θα δώσετε μια ‘ανάσα’ στον buffer. Η γραμμή αυτή δημιουργεί μία χρονοκαθυστέρηση 3 sec μεταξύ των εκτυπώσεων.
    Αν σκοπεύετε στήσετε ένα βιβλίο για να δοκιμάσετε τον κώδικα, θυμηθείτε πριν τον τρέξετε, να αποθηκεύσετε το βιβλίο.

  257. Ο/Η Theodoros λέει:

    Σας ευχαριστώ πάρα πολύ!

  258. Ο/Η ΕΛΕΝΗ λέει:

    κ. Γιάννη
    Καλημέρα σας, Εύχομαι να έχετε υγεία.
    Επικοινωνώ μαζί σας για ένα ακόμη μικρό πρόβλημα. Έχω δύο Βιβλία που το κάθε ένα έχει πολλά φύλλα μέσα…!!!
    Θέλω να μπορώ από το ένα βιβλίο να αντιγράψω όλα τα φύλλα που έχει μέσα στο άλλο βιβλίο
    και στην αρχή του. Δηλαδή έστω το βιβλίο ΑΠΟΘΗΚΕΣ που μέσα του έχει Φύλλο1, Φύλλο2, Φύλλο3, κλπ και το Βιβλίο
    ΠΡΟΜΗΘΕΙΕΣ που έχει μέσα του τα φύλλα Υλικά, Έλαια, Ξυλεία, Σιδηρικά, Πλαστικά, κλπ
    Θέλω ΟΛΑ τα φύλλα του ΑΠΟΘΗΚΕΣ να αντιγραφούν μέσα στο ΠΡΟΜΗΘΕΙΕΣ και μάλιστα στην αρχή του.
    ΔΗΛΑΔΗ
    Τελικά το βιβλίο ΠΡΟΜΗΘΕΙΕΣ θα έχει μέσα του τα Φύλλο1, φύλλο2, …. Υλικά, Έλαια, Ξυλεία κλπ
    Επίσης αν βρει ίδια φύλλα στο ΠΡΟΜΗΘΕΙΕΣ τότε να τα διαγράφει και να βάζει στην θέση τους τα άλλα που έρχονται από το ΑΠΟΘΗΚΕΣ.
    Σας ευχαριστώ πολύ
    με εκτίμηση
    ΕΛΕΝΗ

  259. Ο/Η ΚΩΣΤΗΣ λέει:

    ΓΕΙΑ ΣΑ ΚΙ ΑΠΟ ΜΕΝΑ
    ΕΧΩ ΑΝΑΓΚΗ ΑΠΟ ΜΙΑ ΣΥΝΑΡΤΗΣΗ.ΕΧΩ ΣΕ ΜΙΑ ΣΤΗΛΗ ΟΝΟΜΑΤΑ, Π.Χ.ΜΑΝΩΛΗΣ,ΓΙΩΡΓΟΣ,ΚΩΣΤΑΣ,ΓΙΑΝΝΗΣ, ΚΑΙ ΞΑΝΑ .ΜΑΝΩΛΗΣ,ΓΙΩΡΓΟΣ,ΚΩΣΤΑΣ,ΓΙΑΝΝΗΣ, ΚΑΙ ΞΑΝΑ (ΠΟΛΕΣ ΦΟΡΕΣ). ΘΕΛΩ ΜΙΑ ΣΥΝΑΡΤΗΣΗ ΠΟΥ ΝΑ ΜΟΥ ΔΩΣΕΙ ΣΕ ΜΙΑ ΑΛΛΗ ΣΤΗΛΗ ΟΛΑ ΤΑ ΟΝΟΜΑΤΑ ΓΡΑΜΜΕΝΑ ΜΟΝΟ ΜΙΑ ΦΟΡΑ.ΣΑΣ ΕΥΧΑΡΙΣΤΩ ΕΚ ΤΩΝ ΠΡΟΤΕΡΩΝ!!

  260. Ο/Η vioannis λέει:

    Αυτό Ελένη γίνετε χειριστικά, έχει τις κατάλληλες λειτουργίες το excel. Πρώτα ανοίγεις το βιβλίο Προμήθειες προς το οποίο θα πάνε τα φύλλα της Αποθήκης και μετά ανοίγεις το βιβλίο Αποθήκη. Δεξί κλικ σε μια ετικέτα φύλλου του ΑΠΟΘΗΚΗ (κάτω στην γραμμή των φύλλων), και πατάς ‘Επιλογή όλων των φύλλων’. Ξανά δεξί κλικ πάνω σε μία ετικέτα φύλλου και τώρα επιλέγεις ‘Μετακίνηση ή αντιγραφή’ . Ανοίγει το πλαίσιο της μετακίνησης ή αναγραφής και στο πλαίσιο ‘Στο βιβλίο’ επιλέγεις ΠΡΟΜΗΘΕΙΕΣ, δηλαδή το βιβλίο στο οποίο θέλεις να πάνε τα φύλλα, και στο πλαίσιο ‘Πριν από το φύλλο’ επιλέγεις τη θέση που θέλεις να πάνε πριν, ανάμεσα ή στο τέλος από τα φύλλα του βιβλίου ΠΡΟΜ. Αν τα φύλλα που μεταφέρονται, συναντήσουν στο βιβλίο που πάνε, φύλλα με την ίδια ετικέτα (όνομα), τότε αυτά που μεταφέρθηκαν αποκτούν έναν αριθμητικό δείκτη, πχ Φύλλο5(2).Διαλέγεις πιο θα κρατήσεις και πιο θα διαγράψεις, αν θέλεις να διαγράψεις.

  261. Ο/Η vioannis λέει:

    Κωστή, το πρόβλημα των μοναδικών τιμών έχει αντιμετωπιστεί στο ιστολόγιο και με μακροεντολή και με vba συνάρτηση. Δες το σημείωμα ‘Μοναδικές Τιμές. Μακροεντολή και Συνάρτηση’. Τις μοναδικές τιμές από μία στήλη επίσης μπορείς να πάρεις με Συγκεντρωτικό πίνακα (pivot). Δες το παράδειγμα με τις ποδοσφαιρικές ομάδες στην απάντησή μου στον Χρόνη στη σελίδα ‘Συζητήσεις’ (Μαρτίου 15, 2015, 21:15). Ακόμα μπορείς να χρησιμοποιήσεις το σύνθετο φίλτρο ή φίλτρο για προχωρημένους, όπως λέγεται στις νεώτερες εκδόσεις του excel. Την φόρμα που θα εμφανιστεί όταν καλέσεις το σύνθετο φίλτρο, θα την συμπληρώσεις όπως στην παρακάτω εικόνα, όπου υποθέτω ότι η στήλη με τα επαναλαμβανόμενα ονόματα είναι η Α1:Α200 και τις μοναδικές τιμές τις θέλεις από το κελί D1 και κάτω.

    .

  262. Ο/Η vioannis λέει:

    Απάντηση στον Μιχάλη Γκ.
    Μιχάλη, δεν ανέβασα στο ιστολόγιο, την αρκετά μεγάλη περιγραφή του προβλήματός σου. Ο λόγος είναι ότι προσπαθώ να κρατάω το ιστολόγιο κατανοητό και ενδιαφέρον για τους λίγους επισκέπτες και φίλους που έχει. Η ερώτησή σου είναι μεν κατανοητή αλλά περιγράφει ένα ιδικό και αρκετά πολύπλοκο θέμα. Στο ιστολόγιο προσπαθώ να συζητάμε θέματα με γενικότερο ενδιαφέρον. Από την άλλη, η μακροεντολή που ζητάς, είναι εφικτή, αλλά δεν μπορεί να γραφτεί από την περιγραφή και μόνο των βιβλίων, όσο καλή και αναλυτική και αν είναι η περιγραφή. Στη δική σου περίπτωση, όπως άλλωστε συχνά συμβαίνει, οι μάκρο πρέπει να γραφτούν πάνω στα βιβλία σου και για τα βιβλία σου. Σίγουρα πάντως η συζήτηση του θέματός σου ξεφεύγει από τα όρια του ιστολογίου.

  263. Ο/Η Δημήτρης λέει:

    Γιάννη γεια σου. Ζητώ και πάλι την βοήθειά σου, μετά από αρκετό καιρό. Έχω μία στήλη στην οποία προστίθενται συχνά νέες εγγραφές με αριθμούς. Αυτό που θέλω (αν είναι εφικτό) είναι μία συνάρτηση φύλου εργασίας (όχι με vba) που να μετρά τα κελιά από την τελευταία εγγραφή και προς τα επάνω, μέχρι να βρεθεί μία συγκεκριμένη τιμή, και να μου επιστρέφει το πόσα κελιά μέτρησε μέχρι να βρεθεί αυτή η τιμή. Σημειωτέον ότι τα δέκα πρώτα κελιά της στήλης είναι κενά ή περιέχουν άσχετα δεδομένα.
    Ευχαριστώ εκ των προτέρων!!

  264. Ο/Η vioannis λέει:

    Δημήτρη, Ο παρακάτω Ctrl+Shift+Enter τύπος θα επιστρέψει τη διαφορά των γραμμών μεταξύ της τελευταίας εγγραφής στη στήλη Α και της μοναδικής τιμής που αναζητάς στην ίδια στήλη. Η τιμή που αναζητάς είναι στο κελί Β1 ή τη γράφεις απ ευθείας στη συνάρτηση στη θέση του Β1, αν είναι αλφαριθμητικό σε εισαγωγικά.

    =MAX((1-ISBLANK(A:A))*ROW(A:A))-MAX((A:A=B1)*ROW(A:A))
    

    Αν η τιμή που αναζητάς δεν είναι μοναδική, ο παραπάνω τύπος θα επιστρέψει την διαφορά γραμμών μεταξύ της τελευταίας εγγραφής και της πρώτης (ψάχνοντας από κάτω προς τα πάνω) εμφάνισης της τιμής Β1
    Αν η τιμή που αναζητάς δεν είναι μοναδική, και αναζητάς την διαφορά γραμμών μεταξύ της τελευταίας εγγραφής και της πρώτης (ψάχνοντας από πάνω προς τα κάτω) εμφάνισης της τιμής Β1 τότε:

    =MAX((1-ISBLANK(A:A))*ROW(A:A))-MATCH(B1;A:A;0)
    

    επίσης Ctrl+Shift+Enter τύπος
    Σημείωσε ότι οι τύποι αυτοί ψάχνουν σε όλο το εύρος της στήλης Α, και αυτό τους κάνει βαρείς. Επίσης λόγου αυτού του εύρους δεν δουλεύουν σε excel 2003 ή παλαιότερο. Για αυτά τα excel πρέπει το όρισμα A:A στους τύπους αυτούς να αντικατασταθεί με A1:A65535. Πιο καλά λοιπόν αν δεν χρειάζεσαι όλο το εύρος A:A, εκτιμάς το πλήθος των μελλοντικών δεδομένων σου και περιορίζεις ανάλογα πχ A1:A50000

  265. Ο/Η Δημήτρης λέει:

    Γιάννη λειτουργεί τέλια!!!. Δεν έχω λόγια…. σε ευχαριστώ πολύ.

  266. Ο/Η Φιλιππος λέει:

    Γιαννη καλησπέρα, εχω ένα αρχειο excel , στην πρωτη στηλη έχει αυτοματη αριθμηση, στη δευτερη στηλη έχει ονοματεπωνυμο, το φυλλο εργασίας ειναι συνδεδεμενο με barcode, χρησημοποιων τον εκτυπωτη dymo label 450. Οταν διαλεγω το κελι με το ονομα και πηγαινω στα προσθετα μου βγαζει τον εκτυπωτη dymo και παταω να εκτυπωσω το ονομα σε label, Γινεται να εκτυπωθεί και κάτω από το όνομα η αυτόματη ρίθμηση από το διπλανο κελί στο ίδιο label?
    πχ να πατω στον Κωστα και να εκτυπώνεται αυτοματα Κωστας 1 κλπ.

  267. Ο/Η βαγγελης λέει:

    Θα ήθελα να κάνω μια ερώτηση.
    Έχω την δυνατότητα γράφοντας μια λέξη σε ένα κελί, να καταγράφεται η λέξη αυτή συγχρόνως σε άλλο κελί του ίδιου φύλλου, που θα ορίσω? Αν γίνεται θα ήμουν ευγνώμων να μου δείξεις τον τρόπο. Ευχαριστώ

  268. Ο/Η vioannis λέει:

    Βαγγέλη, Επίλεξε το κελί που θέλεις, δεξί κλικ, αντιγραφή. Πήγαινε στο άλλο κελί, στο ίδιο φύλλο ή σε άλλο φύλλο, δεξί κλικ, ειδική επικόλληση, επικόλληση σύνδεσης. Είσαι έτοιμος.

  269. Ο/Η βαγγελης λέει:

    Σε ευχαριστώ πάρα πάρα πολύ. Έχω εκπλαγεί με την άμεση βοήθεια.
    ————————–
    Έχω ακόμα μια ερώτηση συνέχεια της προηγούμενης Εάν αντί για λέξη έχω αριθμό και θέλω ενώ γράφω σε ένα κελί τον αριθμό αυτό να μετατρέπεται σε άλλο κελί που θα ορίσω ο ίδιος αριθμός σε κείμενο (ολογράφως) γίνεται?

  270. Ο/Η vioannis λέει:

    Βαγγέλη, δες εδώ και εδώ

  271. Ο/Η βαγγελης λέει:

    Καλημερα. Τα ειχα διαβασει (συνάρτηση TextNumber – HellasEuro ), αλλα δεν μπορεσα να καταλαβω πως και που θα εισαγαγω τον κώδικα της συνάρτησης . Ειχα εγκατεστημενο το excel 2002 και εγκαταστησα το 2007, μηπως και εχει την συναρτηση αυτη ενσωματωμενη. Ομως δεν την εχει.

  272. Ο/Η vioannis λέει:

    Φίλε Βαγγέλη, οι ερωτήσεις σου δείχνουν ότι είσαι εντελώς αρχάριος στο excel και δείχνουν ακόμα ότι έχεις πρόθεση να ασχοληθείς σοβαρά μαζί του. Το πρώτο δεν είναι κακό, όλοι υπήρξαμε αρχάριοι. Για το δεύτερο σε συγχαίρω, όταν ολοκληρώσεις ένα πρώτο γύρω γνώσεων, θα καταλάβεις ότι έχεις στα χέρια σου ένα πολύτιμο εργαλείο. Αλλά το excel δεν είναι πρόγραμμα του τύπου θα μου δείξουν λίγο και μετά θα το ψάξω μόνος μου. Για να ξεκινήσεις σωστά πρέπει να αφιερώσεις χρόνο και να το διδαχτείς συστηματικά με τη βοήθεια ενός βιβλίου, κάπως αναλυτικού, για την έκδοση 2007 που έχεις. Στην ερώτησή σου τώρα. Οι συναρτήσεις TextNumber και HellasEuro λέγονται vba συναρτήσεις ή συναρτήσεις χρήστη (ενώ οι ενσωματωμένες συναρτήσεις του excel λέγονται συναρτήσεις φύλλου) και γράφονται από τον ίδιο τον χρήστη για τις ειδικές ανάγκες της εργασίας του. Πέρασε τον κώδικα αυτών των συναρτήσεων στο βιβλίο προσωπικών μακροεντολών. Δες πως στην επίσημη βοήθεια για το excel 2007 στο θέμα:‘Αντιγραφή μακροεντολών σε Βιβλίο προσωπικών μακροεντολών’. Μετά θα βρεις τις συναρτήσεις αυτές από το μενού: Τύποι, Εισαγωγή συνάρτησης , Επιλογή κατηγορίας, Συναρτήσεις χρήστη.

  273. Ο/Η Μάριος λέει:

    Γιάννη καλησπέρα για πολλοστή φορά σ’ευχαριστώ για τις πολύτιμες συμβουλές σου. Για να μην κουράσω μπαίνω στο θέμα.Σ’ ένα φύλο excel (office 07) και στα κελιά Α1,Β1,C1,D1………AA1 και ούτω καθεξής πληκτρολογώ αντίστοιχα αριθμούς 1,2,3,4…………..27 κλπ.Σε κάποια άλλα κελιά(2-10 στον αριθμό) του φύλλου εκτός των στηλών που αναφέρονται οι αριθμοί τρέχω την συνάρτηση RANDBETWEEN η οποία δουλεύει πατώντας τα πλήκτρα F9 ή DEL.Γίνεται κάθε φορά που πατώντας ένα από τα δύο προαναφερόμενα πλήκτρα και για όση ώρα παραμένει πατημένο εφόσον αλλάζουν τα κελιά που περιέχουν την RANDBETWEEN να φαίνονται οι αλλαγές αυτές με κάποιο σύμβολο (θα προτιμούσα με το αγγλικό λ » l » αν γίνεται) στην αντίστοιχη στήλη του αριθμού όσες φορές και αν επαναλαμβάνεται ο ίδιος αριθμός στην στήλη του; Γίνεται αυτό με κάποια macro;
    Ευχαριστώ με φιλικούς χαιρετισμούς
    Μάριος

  274. Ο/Η vioannis λέει:

    Όχι Μάριε, δεν μπορώ να φανταστώ τον τρόπο ώστε να καλείται μια μάκρο μεταξύ διαδοχικών πατημάτων ενός πλήκτρου. Μπορεί όμως η μάκρο να καλείται και να κάνει αυτή τα πατήματα F9. Όσα θέλεις. Ποια είναι όμως η κεντρική ιδέα του προβλήματος; Δεν την έχω πιάσει. Θέλεις να αποκλείσεις διπλότυπα της RANDBETWEEN; Αν ναι, για αυτό υπάρχει η RANDBETWEENplus εδώ

  275. Ο/Η Μάριος λέει:

    Το πρόβλημα είναι ότι θέλω να εμφανίζονται οι τυχαίοι αριθμοί που επιλέγει η RANDBETWEEN από το εύρος που εγώ έχω καθορίσει. Ο κάθε ένας και για όσες φορές πατηθεί κάποιο πλήκτρο ή κάποιο κουμπί στο excelφυλο κατακόρυφα στα κελιά κάτω από τον αριθμό στην συγκεκριμένη στήλη του. Έτσι θα έχω τη δυνατότητα με την συνάρτηση frequency να υπολογίζω την συχνότητα που εμφανίζεται κάποιος αριθμός.

  276. Ο/Η ΝΙΚΟΣ ΤΑΛΕΑΣ λέει:

    Κύριε Γιάννη θα σας παρακαλούσα αν δεν σας είναι δύσκολο να μου δωσετε μια λύση στο εξής:προκειμένου να αθροίσω τα δεδομένα στηλών από διαφορετικά exel , σε μια στηλη διαφορετικού exel (όπου έχω τα σύνολα μου) ,βάζω = στο πρώτο κελι του τελικού exel ,πηγαίνω στα αντιστοιχα πρώτα κελιά που θέλω οι τιμές τους να μεταφέρονται προστιθεμενες στο τελικο και δημιουργώ την συνάρτηση.Πράγματι η ενέργεια αυτή έχει το σωστο αποτέλεσμα. Οταν όμως αυτην την συνάρτηση προσπαθώ να την μεταφέρω σε ολες τις γραμμες της συγκεκριμένης στήλης ,ναι μεν αυτή μεταφέρεται ,αλλά ως αντιγραφή του πρώτου κελιού και όχι με βαση την αντιστοιχία μεταξύ των συντεταγμένων των κελιών,δηλαδη ενω το πρωτο τελικό κελί έχει συνάρτηση πχ με συντεταγμενες C1 , το απο κάτω κελί έχει πάλι την ίδια συνάρτηση με τις ιδιες συντεταγμένες ενω θα έπρεπε να έχει την ίδια μεν συνάρτηση αλλα με συντεταγμένη C2 ,το από κάτω C3 κλπ.Πρέπει να σας πω πως αυτό το καταφέρνω όταν πρόκειται για φύλλα που βρίσκονται στο ίδιο exel. Ευχαριστώ εκ των προτέρων για τον χρόνο σας.

  277. Ο/Η vioannis λέει:

    Νίκο, Πριν την μεταφορά του τύπου προς τα κάτω, διάγραψε τους χαρακτήρες δολαρίου ($) από τις διευθύνσεις των κελιών, δηλαδή ένα τέτοιο τύπο:

    =[Βιβλίο1]Φύλλο1!$B$4+[Βιβλίο2]Φύλλο1!$G$11
    

    Γράψτον έτσι:

    =[Βιβλίο1]Φύλλο1!B4+[Βιβλίο2]Φύλλο1!G11
    

    Δες για τις σχετικές, τις απόλυτες και τις μεικτές αναφορές σε κελιά στη βοήθεια για το excel εδώ.

  278. Ο/Η Νικος Ταλεας λέει:

    Κυριε Γιαννη δεν ξερω για ποιο λογο επιλεξατε να βοηθατε ολους εμας τους αδαεις που ζηταμε την βοηθεια σας, ομολογω ομως οτι ειστε αξιος συγχαρητηριων για την γνωση και την διαθεση σας . Ευχαριστω εκ των προτερων και πριν ακομα δοκιμασω την λυση που μου προτεινατε. Να ειστε καλα.

  279. Ο/Η Μάριος λέει:

    Γιάννη καλημέρα και πάλι δοκίμασα την RANDBETWEENplus και δουλεύει άψογα όμως με ποιον τρόπο, εαν τα ορίσματα της συνάρτησης φαίνονται σε αντίστοιχες στήλες στην ίδια γραμμή, θα μπορούσε κάθε φορά που γίνεται υπολογισμός να εμφανίζονται τα αποτελέσματα της συνάρτησης κάτω από τα κελιά των ίδιων αριθμών που είναι τοποθετημένοι στις παραπάνω στήλες όπως ανέφερα; Ευχαριστώ εκ των προτέρων και περιμένω νέα σου.

  280. Ο/Η vioannis λέει:

    Μάριε η RANDBETWEENplus σαν συνάρτηση πίνακας πολλών κελιών (Ctrl+Shift+Enter συνάρτηση) δεν έχει πλαστικότητα, τα αποτελέσματα της θα τα εμφανίζει σε συνεχόμενα κελιά κάθετα ή οριζόντια. Αυτό δεν αλλάζει. Εκτός αν τα αντικαταστήσεις με τιμές (αξίες) και μετακινήσεις τις αξίες. Ετοιμαζόμουν όμως να σου γράψω σχετικά με το προηγούμενο σχόλιο σου. Δώσε αν θέλεις ένα αναλυτικό παράδειγμα για μία στήλη, βήμα – βήμα με διευθύνσεις κελιών αριθμούς και συναρτήσεις. Νομίζω ότι όλη η εργασία μπορεί να τυποποιηθεί με μάκρο. Ίσως …

  281. Ο/Η Μάριος λέει:

    Ευχαριστώ για την άμεση ανταπόκριση!. θα προσπαθήσω να φέρω παράδειγμα. Ας πούμε ότι στα κελιά B1 εως και AT1 βρίσκονται οι αριθμοί από 1 εως 45 (στο A1 έχω γράψει την ένδειξη A/A ) όπου Α/Α είναι ο αύξων αριθμός των τυχαίων εγγραφών που θα προκύπτουν από την συνάρτηση RANDBETWEENplus. Διευκρινίζω πως οι τυχαίοι αριθμοί που θα δίνει η συνάρτηση θα είναι 5 από τους 45 και θέλω να εμφανίζονται κάθε φορά από κάτω από τα κελιά των αρχικών. π.χ αν η συνάρτηση επιλέξει τους 5,15,26,33,41 αυτοί θα πρέπει να εμφανίζονται αντίστοιχα στα κελιά F2,P2,AA2,AH2,AP2 για την πρώτη επιλογή. Στην επόμενη επιλογή αν π.χ είναι οι ίδιοι αριθμοί θα πρέπει να εμφανιστούν στα από κάτω κελιά ακριβώς F3,P3,AA3,AH3,AP3 και ούτω καθεξής. επίσης για κάθε σειρά εγγραφής θα πρέπει να γίνεται αυτόματη αρίθμηση και αν γίνονται όλα αυτά θα ήθελα να μπορώ να καθαρίζω όλο το ιστορικό από τα κελιά A2 εως AT60000.

  282. Ο/Η Μάριος λέει:

    Γιάννη αν θυμάσαι στο πιο προηγούμενο μήνυμα μου σου έκανα λόγο για το μικρό αγγλικό γράμμα ελ (l ). αυτό το είπα γιατί εαν γίνεται οι αριθμοί στο ιστορικό να φαίνονται με αυτό το γράμμα γιατί κάνοντάς του μορφοποίηση με γραμματοσειρά wingdings αποτυπώνεται ως μαύρο ή ότι άλλο χρώμα θέλω κυκλικό σημείο. ( καθαρά θέμα desing) Βέβαια με κάτι τέτοιο δεν μπορώ να έχω με την frrequency την εμφάνιση της συχνότητας των αριθμών ή μήπως μπορώ;

  283. Ο/Η Νίκος λέει:

    Γιάννη καλησπέρα,
    Εχεις την ευγενη καλοσύνη να με βοηθήσεις στο παρακάτω πρόβλημα ;
    Σε ενα φυλλο έχω δημιουργήσει ενα ημερολόγιο ενος μήνα ημέρα ημέρα, οπου οι ημερομηνίες εμφανίζονται στην γραμμή 8 ( πχ Α8 = 1/6/2015, Β8 = 2/6/2015 κλπ) Πως μπορώ να κάνω την στήλη της ημέρας που βρίσκομαι να γινεται πχ κίτρινη ;
    στο παραπανω παραδειγμα η στηλη F σημερα θα εμφανιζόταν κίτρινη, ενω αυριο θα κιτρίνιζε η στήλη G
    Εχω προσπαθήσει με Conditional Formatting – χρησιμοποιω αγγλικο office 2013 – με την εντολή =H$8=TODAY() αλλά αυτο δουλευει μονο για την συγκεκριμένη ημέρα και οχι αυτόματα για κάθε ημέρα….

  284. Ο/Η vioannis λέει:

    Νίκο σωστός είναι o τύπος, έχει όμως σημασία και ποια περιοχή του φύλλου έχεις επιλέξει όταν εισάγεις τον τύπο της μορφοποίησης υπό όρους.
    Λοιπόν, επίλεξε όλο το φύλλο ή ολόκληρες τις στήλες που περιέχουν τις ημερομηνίες και καθώς είναι επιλεγμένη η περιοχή, εισάγεις μορφοποίηση υπό όρους (ΜΥΟ) με τύπο

    =A$8=TODAY()
    

    Άλλη λύση είναι να έχεις επιλεγμένη μόνο τη στήλη Α και να εισάγεις τη ΜΥΟ με τον παραπάνω τύπο, και μετά να μεταφέρεις την ΜΥΟ και στις άλλες στήλες, με το πινέλο της μορφοποίησης. Αυτός ο τρόπος έχει το μειονέκτημα ότι μεταφέρει όχι μόνο τη ΜΥΟ αλλά και κάθε άλλη μορφοποίηση και ίσως αυτό να μην το θέλεις.
    Σημείωση: Αν αλλάξεις προσωρινά την ημερομηνία του υπολογιστής σου για να δεις αν δουλεύει η ΜΥΟ που μόλις εισήγαγες, πρέπει για να το δεις, να πατήσεις F9, γιατί πρέπει να επαναϋπολογιστεί το φύλλο.

  285. Ο/Η vioannis λέει:

    Μάριε, δες εδώ το xls: randbetween_test_a και τα ξαναλέμε. Στην κάθε γραμμή βλέπεις με l τον αριθμό που έδωσε η randbetween . Αν δεις ll ή lll θα πει πως η ίδια πεντάδα κλήρωσης έδωσε δύο ή τρεις φορές τον ίδιο αριθμό. Ο μόνος τρόπος να μην συμβαίνει αυτό είναι αντί για την randbetween , να κληρώνουν οι πεντάδες με την randbetweeνplus.
    Συμπλήρωμα: Μάριε, αντιστοίχισε στο κουμπί την Sub RadTestA γιατί όταν ανέβασα το βιβλίο το ξέχασα.

  286. Ο/Η Νίκος λέει:

    Γιαννη σε ευχαριστώ πολύ
    Το καταφερα και δουλευει όπως ήθελα

  287. Ο/Η Μάριος λέει:

    Γιάννη σε ευχαριστώ πολύ απλά κατέβασα το αρχείο και δεν έχω προλάβει να το δω. θα το κάνω μάλλον αυριο με ηρεμία. πάντως σε ευχαριστώ πάρα πολύ.

  288. Ο/Η Ελευθερία Σ, λέει:

    κύριε Γιάννη καλησπέρα σας.
    Πώς θα μπορούσα τύπους σαν και αυτούς που αναγράφονται στην παρακάτω εργασία να τους μεταφέρω στο excel?
    http://www.stat-athens.aueb.gr/~karlis/Bivariate%20Poisson%20Regression.pdf
    Για όσους διαβάσουν αργότερα αυτή την ανάρτηση, η σύνταξη της απλής poisson είναι:
    έστω 2 ομάδες Α,Β με μέση τιμή επίτευξης γκολ 1,75 και 1,47 αντίστοιχα. Για να βρώ την πιθανότητα του τελικού αποτελέσματος 2-0. Χρησιμοποιώ τις συναρτήσεις
    για την ομαδα Α: poisson(2;1,75;false)
    για την ομαδα Β: poisson(2;1,75;false)

  289. Ο/Η vioannis λέει:

    Ελευθερία, σε όσες περιπτώσεις δεν σε καλύπτουν οι ενσωματωμένες στατιστικές συναρτήσεις μπορούν να γραφούν vba συναρτήσεις. Αλλά όπως καταλαβαίνεις, δεν είναι κάτι απλό… και μάλιστα για θέματα παλινδρόμησης. Πάντως για κάθε επιμέρους θέμα της μελέτης σου, θα βρεις αρκετές αναφορές στο δίκτυο. Ειδικά για θέματα παλινδρόμησης το excel έχει πολλά εργαλεία.

  290. Ο/Η Μάριος λέει:

    Γιάννη σχετικά με τις οδηγίες που μου έδωσες στο από 6-6-2015 μήνυμα (Μάριε, δες εδώ το xls: randbetween_test_a και τα ξαναλέμε. Στην κάθε γραμμή βλέπεις με l τον αριθμό που έδωσε η randbetween . Αν δεις ll ή lll θα πει πως η ίδια πεντάδα κλήρωσης έδωσε δύο ή τρεις φορές τον ίδιο αριθμό. Ο μόνος τρόπος να μην συμβαίνει αυτό είναι αντί για την randbetween , να κληρώνουν οι πεντάδες με την randbetweeνplus.
    Συμπλήρωμα: Μάριε, αντιστοίχισε στο κουμπί την Sub RadTestA γιατί όταν ανέβασα το βιβλίο το ξέχασα.) τα έκανα όλα όπως περιγράφεις και όλα οκ. Σε ευχαριστώ πάρα πολύ. Μπορεί όμως κατά τον ίδιο ακριβώς τρόπο να δουλέψει και η randbetweeνplus; (Προσπαθώ με κάποιο τρόπο να αποφύγω και τις διπλότυπες(Αν δεις ll ή lll ….) εγγραφές. Γίνεται αυτό ή…..άστα να πάνε!!!!

  291. Ο/Η vioannis λέει:

    Μάριε, γιατί αγχώνεσαι; Έτοιμο είναι, εδώ

  292. Ο/Η Μάριος λέει:

    Δεν έχω λόγια!!!Είσαι απλά καταπληκτικός!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  293. Ο/Η Τόνια Χ. λέει:

    Καλημέρα, έχω τον παρακάτω προβληματισμό και είπα να σας απασχολήσω και γω λίγο.
    Ευχαριστώ εκ των προτέρων.
    Σ ένα πίνακα θα ήθελα να δίνω σε συγκεκριμένο κελί μια τιμή και σε επόμενο κελί να μου υπολογίζει το εξής:
    Στο πρώτο κελί οι τιμές είναι από 100 έως 400 και θέλω για κάθε αύξηση +10 στις τιμές να μου προσθέτει +1 στο επόμενο κελί το οποίο ξεκινάει με μια σταθερά (0,7).
    Π.χ δίνω την τιμή 115 θέλω το επόμενο κελί να πάρει την τιμή 0,7+1.
    δηλαδή από 100 έως 110 η τιμή είναι 0,7
    από 110 έως 120 η τιμή είναι 0,7+1 κτλ

  294. Ο/Η Γιάννης Κ λέει:

    Μπαίνω για πρώτη φορά στην ιστοσελίδα και είμαι εντυπωσιασμένος από σένα!
    Μπορώ να επιτύχω το παρακάτω αποτέλεσμα;
    Σε κάποια κελιά της στήλης Α έχω τα δεδομένα: «λογαριασμός», «νέος λογαριασμός», «κατάλογος νέος», «κατάλογος» κλπ. Θέλω στα αντίστοιχα κελιά της στήλης Β να βγαίνει το εξής αποτέλεσμα: Αν στο αντίστοιχο κελί της στήλης Α υπάρχει η λέξη «νέος», τότε εμφάνισε «1», αλλιώς εμφάνισε «0». Γίνεται;
    Ευχαριστώ εκ των προτέρων.

  295. Ο/Η vioannis λέει:

    Τόνια, Ο τύπος που ζητάς είναι:

    =0,7+INT((A1-100)/10)
    

    ή ο τύπος:

    =0,7+INT((A1-100,0001)/10)+(A1=100)
    

    Η διαφορά τους είναι ότι ο πρώτος θεωρεί τα διαστήματα ως εξής:
    από και 100 έως 110-
    από και 110 έως και 120-
    από και 120 έως και 130- κλπ
    και ο δεύτερος :
    από 100 έως και 110
    από 110+ έως και 120
    από 120+ έως και 130 κλπ
    Αν οι τιμές 100 έως 400 είναι δεκαδικοί με περισσότερα από 3 δεκαδικά, τότε στον δεύτερο τύπο αύξησε ανάλογα τα δεκαδικά μηδενικά πχ 100,0000001

  296. Ο/Η vioannis λέει:

    Γιάννη Κ
    Η παρακάτω συνάρτηση

    =IF(ISNUMBER(SEARCH("ΝΕΟΣ";UPPER(LOWER(A1))));1;0)
    

    Ανιχνεύει σε οποιοδήποτε σημείο του κελιού είναι η λέξη ΝΕΟΣ και επιστρέφει 1.
    Δεν κάνει διάκριση κεφαλαίων πεζών και τονισμένων άτονων ακόμα και παρατονισμένων, δηλαδή ανιχνεύει όλες τις παρακάτω περιπτώσεις
    ΝΕΟΣ
    ΝΈΟΣ
    νεος
    νέος
    Νέος
    νέοσ
    νεός κλπ
    Σε μερικές εκδόσεις του 2007 ίσως ο τύπος να μην ανιχνεύσει τα τονισμένα γράμματα (σε κάποιες εκδόσεις του 2007, όχι σε όλες, υπάρχει διαφορετική συμπεριφορά των UPPER και LOWER) Για την περίπτωση αυτή κάνε χρήση του τύπου:

    =IF(OR(ISNUMBER(SEARCH("ΝΕΟΣ";UPPER(LOWER(A1))));ISNUMBER(SEARCH("ΝΈΟΣ";UPPER(LOWER(A1)))));1;0)
    

    (Το δεύτερο («ΝΈΟΣ») είναι τονισμένο)


    Γιάννη επανήλθα και απλοποίησα λίγο του τύπους

  297. Ο/Η Γιάννης Κ λέει:

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

  298. Ο/Η Βασιλης λέει:

    Καλημερα κυριε Γιαννη.
    Το προβλημα μου ειναι με τη μνημη στο εξελ.Πρωτα ειχα γραψει μια εντολη με τη κορδελα για αφαιρεση των κενων κελιων και εκανε μια ωρα να τη τρεξει και βρηκα αυτη την εντολη και κανει 2 λεπτα τωρα.(Application.ScreenUpdating = False ) Μετα ειχα το προβλημα οταν ειχα πολλα δεδομενα σε ενα εξελ αργουσε να το ανοιξει και μετα δεν λειτουργουσε καλα και βρηκα αυτο
    iNumber = 0
    lNumber = 0
    Set rRange = Nothing
    strName = vbNullString
    την αδειασε τη μνημη στο εξελ ολη αποτη καταλαβα αλλα καπου βρηκα και αυτην
    Application.CutCopyMode = False
    και δεν ξερω ακριβως τη κανει η καθε μια ξεχωριστα γιατι ξερω λιγο Αγγλικα.
    Θελω απο εσας μια καλυτερη επεξηγηση πανω σε αυτα και αν εχετε να προσθεσετε αλλα πανω
    στη μνημη στο εξελ και οταν ανοιγει και οταν λειτουργει.
    Σας ευχαριστω για οποια απαντηση σας.

  299. Ο/Η vioannis λέει:

    Α) Όταν τρέξεις μία μακροεντολή η οποία εκτελεί μετακινήσεις μέσα στο ίδιο φύλλο ή σε διαφορετικά φύλλα (πχ αντιγράφει από μία περιοχή και την επικολλά σε άλλη), η οθόνη παρακολουθεί αυτές τις μετακινήσεις. Αυτό κατά κανόνα δεν το θέλουμε γιατί και καθυστερεί τη μάκρο και ζαλίζει τα μάτια του χρήστη. Η εντολή Application.ScreenUpdating = False σταθεροποιεί την οθόνη και την αποτρέπει να παρακολουθεί τις μετακινήσεις της μάκρο. Τοποθετούμε την εντολή όπου είναι απαραίτητο στο κώδικα και πριν τελειώσει η μάκρο απαραίτητα επαναφέρουμε σε TRUE : Application.ScreenUpdating =True
    Η παρακάτω μάκρο στον δικό μου υπολογιστή, έκανε 6-πλάσιο χρόνο να τρέχει χωρίς την Application.ScreenUpdating = False

    Sub test()
    Dim t1 As Single
    Dim t2 As Single
    Dim i As Long
    t1 = Timer
    Application.ScreenUpdating = False
    For i = 1 To 5000
    Cells(i, 1).Select
    Selection = i
    Next
    t2 = Timer
    Application.ScreenUpdating = True
    MsgBox t2 - t1
    End Sub
    

    Β) Όταν εκτελείς αντιγραφή επικόλληση, είτε χειριστικά είτε μέσω μάκρο, ότι αντιγράφεις αποθηκεύεται προσωρινά στο πρόχειρο και αφού ολοκληρώσεις την επικόλληση, ένα πλαίσιο αναβοσβήνει γύρω από την περιοχή που αντέγραψες. Για να σταματήσει αυτό το αναβόσβημα και να ελευθερωθεί (αδειάσει) το πρόχειρο πατάς ESC. Το ισοδύναμο σε vba αυτό του πατήματος είναι η εντολή Application.CutCopyMode = False. Αν η μάκρο εκτελεί αλλεπάλληλες αντιγραφές–επικολλήσεις δεν χρειάζεται η εντολή κάθε φορά, αλλά μετά την τελευταία επικόλληση.
    Γ) Οι μεταβλητές inumber,rRange,strName είναι προφανώς, μεταβλητές Integer, Range και String αντίστοιχα, που δημιουργήθηκαν από αυτόν που έγραψε τον κώδικα και σε κάποια φάση της διαδικασίας τους απέδωσε μηδενικές τιμές γιατί έτσι απαίτησε ο κώδικάς του. Η απόδοση μηδενικής (ή αρχικής ή άδειας) τιμής σε μία μεταβλητή γίνεται με τρόπο που ορίζει η φύση της κάθε μεταβλητής και όπου κρίνεται σκόπιμο. Κατά κανόνα όταν εισάγεται μία μεταβλητή, έχει από τη φύση της μηδενική τιμή.
    Δ) Απαραίτητο για την καλή διαχείριση της μνήμης είναι να δηλώνεις στην αρχή του κώδικα σωστά τις μεταβλητές της ρουτίνας. (Τα Dim) Αν υπάρχει στο κώδικα μία μεταβλητή που παίρνει τιμές TRUE, FALSE πρέπει να οριστεί σαν Boolean, αν είναι αριθμός που μετρά αριθμούς γραμμών πρέπει να οριστεί σαν Long, αν αριθμούς στηλών σαν Integer, αν είναι κελί ή κελιά σαν Range, αλφαριθμητικό σαν String, έναν πίνακας(array)συνήθως σαν variant κλπ κλπ. Αν δεν το κάνεις, τότε όλες τις μεταβλητές η vba θα τις εκλάβει σαν variant και αυτό θα δεσμεύσει πολύ μνήμη. Για να εξασφαλίσεις ότι όλες οι μεταβλητές έχουν δηλωθεί, στην κορυφή του module να υπάρχει η δήλωση Option Explicit
    Ε) Υπάρχουν αξιόλογα βιβλία για την vba, με πολύ καλή ελληνική μετάφραση. Δες το σχόλιό μου εδώ. Εν τω μεταξύ μπορεί να έχουν κυκλοφορήσει στην αγορά και άλλα νέα βιβλία.

  300. Ο/Η stopyes λέει:

    Σας ευχαριστω κυριε Γιαννη.

  301. Ο/Η Τόνια Χ. λέει:

    Σας ευχαριστώ πολύ!

  302. Ο/Η Μιχαλης Μ λέει:

    Καλησπέρα Γιάννη και συγχαρητήρια για την άψογη δουλειά σου ….Θα ήθελα αν μπορείς να με βοηθήσεις …Σε μια στήλη έχω γραμμένους κάποιους κωδικούς με αυτό εδώ τον τρόπο : «111-2222-333» δηλ. τρία νούμερα «-» 4 νούμερα «-» και πάλι τρία… όμως υπάρχουν λάθη παραπάνω παυλες κ.α…Θα ήθελα να μου πεις εαν υπάρχει κάποιος τρόπος για να μου εμφανίζει αυτά τα λάθη χωρίς να τα ψάχνω ένα ένα γιατί είναι πάρα πολύ ….Θέλω δηλαδή μια IF αλλά να μετρά τον αριθμό χαρακτήρων του κελιού που είναι πάντα μαζί με τις πάυλες (12).Σε ευχαριστώ εκ των προτέρων…

  303. Ο/Η vioannis λέει:

    Μιχάλη, η συνάρτηση

    =LEN(A1) 
    

    επιστρέφει το πλήθος των χαρακτήρων που έχουν γραφτεί στο κελί Α1. Αν λοιπόν στο κελί Α1 έχεις τον κωδικό 111-2222-333, θα επιστρέψει 12. Ποιο καλά κάνε χρήση του τύπου:

    =LEN(TRIM(A1))
    

    Η TRIM πριν κάνει την καταμέτρηση η LEN, απαλείφει τα τυχόν κατά λάθος κενά στην αρχή και το τέλος του κωδικού.
    Και η παρακάτω συνάρτηση, ελέγχει αν στις θέσεις 4 και 9 του κωδικού, υπάρχει η παύλα(-) και επιστρέφει TRUE. Αν δεν βρει παύλα (-) ακριβώς σε αυτές τις θέσεις επιστρέφει FALSE

    =AND(MID(TRIM(A1);4;1)="-";MID(TRIM(A1);9;1)="-")
    

    Τέλος η παρακάτω συνάρτηση τα κάνει όλα: Ελέγχει αν ο κωδικός αποτελείται από 12 χαρακτήρες στην παρακάτω αλληλουχία: 3 αριθμοί, παύλα, 4 αριθμοί, παύλα,3 αριθμοί, και επιστρέφει TRUE. Αλλιώς επιστρέφει FALSE

    =AND(ISNUMBER(-LEFT(TRIM(A1);3));MID(TRIM(A1);4;1)="-";ISNUMBER(-MID(TRIM(A1);5;4));MID(TRIM(A1);9;1)="-";ISNUMBER(-RIGHT(TRIM(A1);3));LEN(TRIM(A1))=12)
    
  304. Ο/Η Μιχαλης Μ λέει:

    Ευχαριστώ για την πολύτιμη βοήθεια σου

  305. Ο/Η Nikos Gkikas λέει:

    Γιαννη καλησπερα , προσπαθω να γραψω (αντιγραψω το σωστο ) την vba απο το παραδειγμα σου <(16) Συνένωση πολλών κελιών σε ένα.> αλλα επειδη πρωτη φορα ασχολουμαι δεν τα καταφερνω .
    Το ζητουμενο ειναι οτι θελω να βαλω σε κελι (συνχωνεψω πολλα δεδομενα Αφμ με (;) αναμεσα τους .Μιλαω για πολλες εγγραφες πανω απο 500 αρα εντολες τυπου concatenate δεν εξυπηρετει
    Ευχαριστω προκαταβολικα

    Νικος

    πΧ
    ΑΦΜ
    11111111111 AΥΤΟ ΘΕΛΩ ΝΑ ΕΊΝΑΙ ΤΟ ΑΠΟΤΕΛΕΣΜΑ
    22222222222 11111111111;22222222222;3333333333;44444444444
    3333333333
    44444444444

  306. Ο/Η vioannis λέει:

    Νίκο, εγώ με την

    =JoinCells(A1:A800;";")
    

    συνένωσα 800 10-ψήφιους αριθμούς που ήταν γραμμένοι στα κελιά A1:A800 , χωρίς πρόβλημα. Βέβαια πήρα ένα κελί με 800×11= 8800 χαρακτήρες. Να σημειώσω ότι σε ένα κελί ο μέγιστος αριθμός χαρακτήρων που μπορεί να εισαχτεί είναι 32767, αλλά μόνο οι 1024 πρώτοι χαρακτήρες είναι ορατοί.
    Γράψε σε ένα κελί την συνάρτηση:

    =REPT("a";32768)
    

    Αυτή η συνάρτηση προσπαθεί να εισάγει σε ένα κελί 32768 χαρακτήρες , δεν μπορεί, και επιστρέφει το σφάλμα #ΤΙΜΗ!
    Διόρθωσε τη συνάρτηση αυτή σε:

    =REPT("a";32767)
    

    Το κελί θα γεμίσει με 32767 χαρακτήρες a. Δεν τους βλέπεις όμως όλους. Για να βεβαιωθείς, γ ράψε σε ένα κελί την συνάρτηση:

    =REPT("a";1023)&"12345"
    

    Η συνάρτηση αυτή εισάγει στο κελί που είναι γραμμένη,1028 χαρακτήρες (1023 a ακολουθούμενα από τους αριθμούς 12345). Όταν πας στο τέλος αυτής της εγγραφής, θα δεις ότι ο τελευταίος χαρακτήρας είναι το 1 (ο 1024ος χαρακτήρας). Οι χαρακτήρες μετά τον 1024ο, δηλαδή οι 2345 υπάρχουν στο κελί αλλά δεν φαίνονται. Μπορείς να τους δεις όλους μόνο στην γραμμή των τύπων (Κλικ στο κελί, F2, F9 και αφού το δεις Esc)
    Αν έχεις πρόβλημα με το πέρασμα του κώδικα της συνάρτησης στο βιβλίο σου, παρακάτω δίνω αναλυτικά βήματα για να εισάγεις τον κώδικα :
    – -Αν δουλεύεις σε excel 2007 και πάνω, άνοιξε το βιβλίο σου και αποθήκευσέ το σαν βιβλίο με δυνατότητα μακροεντολών. Αν το βιβλίο σου λέγεται ABCD θα αποθηκευτεί με όνομα ABCD.xlsm. Αν δουλεύεις σε excel 2003 και παλιότερο, αγνόησε αυτό το βήμα
    – – Με ανοιχτό το βιβλίο πάτησε τον συνδυασμό πλήκτρων ALT+F11. Θα εμφανιστεί ο επεξεργαστής της Visual Basic.
    – – Στο πάνω αριστερά παράθυρο Project-VBAProject, βρες το βιβλίο σου. Εδώ το βιβλίο θα λέγεται VBAProject(ABCD.xlsm) ή VBAProject(ABCD.xls).
    – – Κλικ στο τετράγωνο μπροστά στο όνομα ώστε να δείχνει πλην (-) και όχι συν (+) και κάνε κλικ πάνω στο όνομα VBAProject(ABCD.xlsm) για να το επιλέξεις. (γίνεται γαλάζιο)
    – – Άνοιξε το μενού Insert και κάνε κλίκ στην επιλογή module. Θα προστεθεί ένας φάκελος με όνομα module και μία σελίδα του φακέλου με όνομα module1
    – – Κάνε διπλό κλικ πάνω στο όνομα module1 και στη δεξιά μεγάλη λευκή περιοχή γράψε (καλλίτερα αντίγραψε και επικόλλησε) τον κώδικα της συνάρτησης.
    – – Όταν ολοκληρώσεις πατήστε ALT+Q για να κλείσει ο επεξεργαστής της Visual Basic και να ξαναγυρίσεις στο βιβλίο. Αποθήκευσε το βιβλίο και είσαι έτοιμος.
    Από τη στιγμή που εγκατέστησες την συνάρτηση, θα τη βρεις στο μενού Τύποι, Εισαγωγή συνάρτησης, Επιλογή κατηγορίας, Συναρτήσεις χρήστη. Ή αν δουλεύεις σε excel 2007 και άνω, άρχισε να γράφεις σε ένα κελί: =JoinCells και η συνάρτηση θα εμφανιστεί

  307. Ο/Η Nikos Gkikas λέει:

    Γιαννη ευχαριστω για την αμεσοτητα σου , αντιγραφω απλα οπως ειναι τον κωδικα δεν χρειαζεται να κανω αλλαγες τιποτα ?

  308. Ο/Η Nikos Gkikas λέει:

    Ευχαριστω πολυ δουλεψε μια χαρα !!!!! Συνεχισε την πολυ καλη δουλεια που κανεις

  309. Ο/Η Άδωνις Χρήστος Αντωνόπουλος λέει:

    Καλησπέρα, Έχω μια μεγάλη Ερώτηση. Θέλω όταν γράφω μια λέξει στην τάδε σειρά, να πιάνει όλη την σειρά αυτή,(ή τουλάχιστον όποια στήλη θέλω εγώ να πάρω από την συγκεκριμένη σειρά.) ΚΑΙ να μεταφέρει αυτά τα στοιχεία σε άλλο φυλλό του ίδιου βιβλίου. Πχ.
    ΓΑΛΑ 3.5% 1Λ – Τεμ 2 10 20,00 € BAR. Όταν βλέπει την Λέξη BAR να μεταφέρει τα στοιχεία αυτά ΓΑΛΑ 3.5% 1Λ – Τεμ 2 10 20,00 € Σε άλο υπολογιστικό φύλλο του ίδιο βιβλίου, όπου η ονομασία του Φύλλου θα είναι Bar.

  310. Ο/Η vioannis λέει:

    Άδωνι, φοβάμαι ότι η περιγραφή σου είναι πολύ γενική. Πρέπει να υποθέσω πολλά πράγματα. Αν ο χαρακτηρισμός Bar είναι ένα στοιχειό που εμφανίζεται σε μερικές μόνο από τις εγγραφές (σειρές) του πίνακα με τα δεδομένα σου, τότε μάλλον σε καλύπτει ο κώδικας που θα βρεις στο βιβλίο SplitField.xls στο σημείωμα του ιστολογίου: Φιλτράρισμα λίστας και δημιουργία φύλλων για όλες τις τιμές πεδίου

  311. Ο/Η Ανδρέας Φεραδούρος λέει:

    Κύριε Βαρλάμη καλησπέρα,
    ακόμη μια φορά προστρέχω στις γνώσεις σας.
    Σε μια περιοχή δεδομένων θέλω να προσθέσω μια στήλη που θα λαμβάνει μοναδικό κωδικό της μορφής: εεεε.#### (π.χ.: 2015.1001) που τα πρώτα 4 ψηφία αφορούν το έτος και τα 4 # τον αύξοντα αριθμό κάθε εγγραφής. Προσπάθησα από την μορφοποίηση κελιών, προσαρμογή μορφής αλλά δεν τα κατάφερα. Υπάρχει τρόπος?
    Ευχαριστώ εκ των προτέρων για τον χρόνο σας.

  312. Ο/Η vioannis λέει:

    Αντρέα, στη στήλη αυτή όρισε προσαρμοσμένη μορφοποίηση κελιών, με μορφή

    0000"."0000
    
  313. Ο/Η Ανδρέας Φεραδούρος λέει:

    Ευχαριστώ πολύ!

  314. Ο/Η Ειρήνη Γ. λέει:

    Κύριε Βαρλάμη καλησπέρα σας,
    θα ήθελα την βοήθειά σας σε ένα πρόβλημα.
    Σε ένα βιβλίο EXCEL 2003 έχω 4 φύλλα φύλλο 1, φύλλο 2, φύλλο 3 και φύλλο 4.
    Το 4ο φύλλο εμπεριέχει 6 στήλες και 110 γραμμές ως εξής:
    A- A/A, B- ΕΠΩΝΥΜΟ, C-ΟΝΟΜΑ, D- ΠΑΤΡΩΝΥΜΟ, E- ΑΦΜ, F- ΑΡ. ΚΥΚΛΟΦΟΡΙΑΣ/ ΜΕΣΟ.
    Το 1ο φύλλο είναι μια κατάσταση διακίνησης που περιέχει τις εξής στήλες:
    A- Α/Α, B- ΗΜΕΡΟΜΗΝΙΑ, C- ΕΠΩΝΥΜΟ, D- ΟΝΟΜΑ, E- ΠΑΤΡΩΝΥΜΟ, F-ΑΦΜ, G- ΑΡ. ΚΥΚΛΟΦΟΡΙΑΣ/ ΜΕΣΟ, H- ΕΙΔΟΣ, I- ΠΟΙΚΙΛΙΑ, J- ΠΟΣΟΤΗΤΑ, K- ΚΩΔΙΚΟΣ.
    Θα ήθελα να ρωτήσω αν υπάρχει τρόπος να επιλέγω τα ονόματα από το 4ο φύλλο αλλά ως λίστα στην κάθε γραμμή του 1ου φύλλου και αν γίνεται την κάθε γραμμή του 4ου φύλλου (εκτός του α/α) να την ομαδοποιήσουμε και να επικολλάτε όλη μαζί στα ξεχωριστά κελιά του 1ου φύλλου.

    Σας ευχαριστώ εκ των προτέρων.

    Περιμένω εναγωνίως την απάντησή σας,

  315. Ο/Η vioannis λέει:

    Ειρήνη το τμήμα της πρότασης ‘….αλλά ως λίστα στην κάθε γραμμή του 1ου φύλλου…’, δεν μου βγάζει νόημα. Αν εννοείς, να επιλέγεις επίθετα (ή γενικότερα εγγραφές, δηλαδή σειρές) από το Φύλλο4, είτε συνεχόμενες, είτε μη συνεχόμενες (με το Ctrl) και ολόκληρες αυτές οι εγγραφές να πηγαίνουν στο φύλλο1, κάτω από τις άλλες εγγραφές που περιέχει το φύλλο1, αλλά κάθε στοιχείο να πηγαίνει στη σωστή στήλη, γίνεται με λίγο κώδικα (μακροεντολή). Περιμένω την διευκρίνιση.

  316. Ο/Η Ειρήνη Γ. λέει:

    Κε Βαρλάμη ευχαριστώ για τον χρόνο σας τελικά βρήκα τη λύση μόνη μου με την VLOOKUP και εν ολίγοις τα κατάφερα. Να είστε καλά.

    Με τιμή,

    Ειρήνη Γ.

  317. Ο/Η vioannis λέει:

    Πολύ καλά έπραξες Ειρήνη.Η συνάρτηση vlookup είναι πολλαπλά χρήσιμη στο excel.

Τα σχόλια είναι απενεργοποιημένα.