Forum

Αναζήτηση στο ms-office.gr

Πάμε!

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 11-06-18, 17:25
Όνομα: ΔΗΜΗΤΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 01-08-2011
Μηνύματα: 33
Προεπιλογή Sum bold and red

Ποιό είναι το λάθος που έχει ο κώδικας ( το αρχείο είναι απο το διαδίκτυο) και δεν λειτουργεί;
Ευχαριστώ !
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm ΑΘΡΟΙΣΜΑ BOLD ΚΑΙ ΚΟΚΙΝΩΝ ΚΕΛΙΩΝ1.xlsm (14,8 KB, 9 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 11-06-18, 19:18
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 1.950
Προεπιλογή

Το σωστό είναι:

Κώδικας:
Sub SumBOLDRED()
    Dim LastRow As Long, i As Long, MySum As Double
    LastRow = Φύλλο1.Cells(Rows.Count, 1).End(xlUp).Row
    MySum = 0

    For i = 1 To LastRow
        If IsNumeric(Φύλλο1.Cells(i, 1)) And _
           Φύλλο1.Cells(i, 1).Font.Bold = True And _
           Φύλλο1.Cells(i, 1).Font.ColorIndex = 3 Then
            MySum = MySum + Cells(i, 1)
        End If
    Next i
    Φύλλο1.Range("k1").Value = MySum
End Sub
*Όπου Φύλλο1 το κωδικό όνομα φύλλου.
(Θα προτιμούσα να αλλαχθεί με κάτι σαν... Sht1)

**Αν θέλουμε να «τρέχει» σε κάθε ενεργό φύλλο, το αλλάζουμε με ActiveSheet.

Το σφάλμα, είναι στην γραμμή κώδικα, που βρίσκει την τελευταία γραμμή με «γεμάτο» κελί.

αντί
Κώδικας:
LastRow = Range("A1:A20").End(xlUp).Row
πρέπει
Κώδικας:
LastRow = Φύλλο1.Cells(Rows.Count, 1).End(xlUp).Row
***το MySum As Double είναι πολύ καλά στην μορφή που είναι,
διότι επιτρέπει μεγάλους αλλά και δεκαδικούς αριθμούς.
__________________
Spirosgr
spirostsiligiannis@gmail.com
Απάντηση με παράθεση
  #3  
Παλιά 11-06-18, 19:58
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 2.688
Προεπιλογή

Καλησπέρα

Και μια πρόταση, με συνάρτηση, στο συνημμένο.

Τη θεωρώ πιο ευέλικτη.

Αθροίζει τα κελιά που η γραμματοσειρά είναι είτε Bold είτε Red είτε και τα δύο.

Με μια μικρή αλλαγή στον κώδικα μπορεί να αθροίζει μόνο τα κελιά που η γραμματοσειρά είναι ταυτόχρονα και Bold και Red.
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm SumBoldOrRedCells.xlsm (17,8 KB, 15 εμφανίσεις)
Απάντηση με παράθεση
  #4  
Παλιά 11-06-18, 20:01
Όνομα: ΔΗΜΗΤΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 01-08-2011
Μηνύματα: 33
Προεπιλογή

Ευχαριστώ πολύ !
Να είστε καλά !
Απάντηση με παράθεση
  #5  
Παλιά 12-06-18, 06:56
Όνομα: ΔΗΜΗΤΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 01-08-2011
Μηνύματα: 33
Προεπιλογή

Καλημέρα !
Σπύρο τι εννοείς όταν λες ότι βρίσκει την τελευταία γραμμή με << γεμάτο>> κελί;
Ευχαριστώ πολύ!
Απάντηση με παράθεση
  #6  
Παλιά 12-06-18, 07:53
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 1.950
Προεπιλογή

Καλημέρα.
Η έκφραση:
Cells(Rows.Count, 1).End(xlUp).Row

που σε «ελεύθερη» μετάφραση γίνεται:
κελιά(γραμμές.μέτρησε, στην στήλη 1).πήγαινε στο τέλος των γραμμών(και
ανέβα προς τα πάνω).γραμμή


δίνεται σε μια μεταβλητή πχ LastRow =
την οποία ορίζουμε ως Long (Dim LastRow As Long)
να είναι δηλαδή μεγάλος ακέραιος και βρίσκει την τελευταία γραμμή μιας στήλης
που έχει δεδομένα (*βλέπε εικόνα)
Στην προκειμένη περίπτωση, θα επιστρέψει το 20 (γραμμή 20)
για να το χρησιμοποιήσουμε στον κώδικα μας και να πάρουμε την τιμή 200 για παράδειγμα
ή Cells(Rows.Count, 1).End(xlUp).Row+1
για να βάλουμε κάτι άλλο στο αμέσως πιο κάτω κενό κελί (γραμμή 21)
ή ότι άλλο ανάλογα με τις ανάγκες του κώδικα που χτίζουμε.

Η μέθοδος End(xlUp) μέσα στην έκφραση,
μας εξασφαλίζει το σωστό αποτέλεσμα,
καθώς σε σχέση με το αντίστοιχο End(xlDown)
θα παραβλέψει τα κενά κελιά της στήλης.
θα πάει στον πάτο του φύλλου και ανεβαίνοντας,
θα «τρακάρει» στο κελί της γραμμής 20,
πράγμα που είναι το ζητούμενο,
σε αντίθεση με το End(xlDown) που θα έδινε γραμμή 9, που δεν είναι το επιθυμητό.

Ακόμα
Με όμοιο τρόπο, μπορούμε να έχουμε και την τελευταία γεμάτη στήλη μιας περιοχής,
με την έκφραση:
LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
και εδώ το LastCol ορίζεται ως Long
Συνημμένα Thumbnails
Sum bold and red-screenshot_1.jpg  
__________________
Spirosgr
spirostsiligiannis@gmail.com
Απάντηση με παράθεση
  #7  
Παλιά 12-06-18, 15:33
Όνομα: ΔΗΜΗΤΡΗΣ
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 01-08-2011
Μηνύματα: 33
Προεπιλογή

Ευχαριστώ πολύ !
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[ Ερωτήματα ] Bold devcon Access - Ερωτήσεις / Απαντήσεις 9 23-09-11 17:26


Η ώρα είναι 03:54.