Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Γενικά] Μέτρηση κενών κελιών υπό όρους; (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/2691-metrisi-kenon-kelion-ypo-oroys.html)

Miltos100 19-09-13 11:11

Μέτρηση κενών κελιών υπό όρους;
 
Θέλω να μετρήσω πόσα κενά κελιά υπάρχουν σε μια στήλη μέχρι το πρώτο κελί που εμφανίζει δεδομένα δηλαδή:

1
κενό κελί
κενό κελί
1
κενό κελί
κενό κελί
κενό κελί
1

για το πάνω παράδειγμα θέλω να μου βγάζει τον αριθμό 3 διαβάζοντας τα κελιά από κάτω προς τα πάνω. Σημ. Τα κελιά στο παράδειγμα που χρησιμοποίησα έχουν σαν δεδομένα την τιμή 1.

ChrisGT7 20-09-13 09:21

Οι συναρτήσεις COUNT() και COUNTA() θα σε βοηθήσουν αρκετά σ' αυτό το πρόβλημα.

Η πρώτη, π.χ. COUNT(A1:A8) επιστρέφει το πλήθος των κελιών που περιέχουν αριθμό, δηλαδή 3 στο παράδειγμά σου.

Ενώ η δεύτερη, π.χ. COUNTA(A1:A8) επιστρέφει το πλήθος των κελιών που δεν είναι κενά (είτε κείμενο είτε αριθμό), άρα πάλι 3 είναι το αποτέλεσμα.

Αν όμως πρέπει να εξετάζεις τις τιμές που δέχεται η στήλη, τότε η COUNTIF() είναι η ιδανικότερη: COUNTIF(A1:A8;"=1"), όπου ελέγχει ποιες τιμές είναι ίσες με 1.

Spirosgr 20-09-13 22:17

Καλησπέρα
Κατ΄αρχήν να καλωσορίσουμε τον φίλο Ζώρζο στην παρέα μας
Παρ' όλο που η στατιστική παιχνιδιών δεν είναι η ειδικότητά μου και για να βοηθήσω και τον νέο μας φίλο Ζώρζο επειδή αυτό το ζητούμενο μπορεί να βρει εφαρμογή και αλλού θα πρότεινα λύση με VBA
Πιστεύω ότι το ζητούμενο είναι πόσα κενά κελιά υπάρχουν ανάμεσα στην τελευταία και την προτελευταία εγγραφή πράγμα που δεν γίνεται με τους τύπους COUNT.... που προτείνεις
(δεν γίνεται μόνο με αυτούς)
Αν αντιγράψουμε το παράδειγμα στην στήλη Α από A1 έως A8 για να γίνει κατανοητό
ζητάμε τα κενά κελιά μεταξύ A4 και A8
Η ερώτηση δεν είναι σαφής με τον τρόπο που διατυπώνεται
Ο Μίλτος δεν μας δίνει σημαντικές πληροφορίες στο ζητούμενό του
όπως αν η περιοχή A1:A8 είναι σταθερή ή μεταβάλλεται ή αν το τελευταίο κελί της περιοχής έχει πάντα δεδομένα ή θα μπορούσε να είναι και κενό
γι' αυτό βάλτε τον κώδικα

Κώδικας:

Sub Test()
    Selection = Cells(Rows.Count, 1).End(xlUp).Row - 1 _
              - Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1).End(xlUp).Row
End Sub

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

Μίλτο αν δεν σου κάνει κόπο μπορείς να συμπληρώσεις στο προφίλ σου τι έκδοση Office έχεις;

Miltos100 21-09-13 13:08

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

ChrisGT7 22-09-13 09:58

Ευχαριστώ για τη διόρθωση, Σπύρο! Διατύπωσα αρκετά διαφορετικά το πρόβλημα...

Θα ήθελα να κάνω την παρακάτω προσθήκη στον τύπο, αν μου επιτρέπεται:
Κώδικας:

Selection = Cells(Rows.Count, 1).End(xlUp).Row - 1 _
            - Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1).End(xlUp).Row _
            + IIf(Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1).End(xlUp).Value = "", 1, 0)

Αυτό γιατί το κελί Α1 υπολογίζεται πάντα ως κενό. Δηλαδή αν υπάρχει μονάχα στο κελί Α8 κείμενο, τότε ο προηγούμενος τύπος επέστρεφε 6 και όχι 7 όπως θα έπρεπε.

Spirosgr 22-09-13 12:03

Μπράβο φίλε μου!
Αν δεν υπάρχει κεφαλίδα τότε ναι η προσθήκη σου είναι απαραίτητη!
Και με τύπο από την Access .....

Thanosp 22-09-13 13:23

Καλησπέρα
Η μακροεντολή δίνει τιμές εφόσον η τελευταία τιμή είναι μία αν είναι δύο ή περισσότερες συνεχόμενες δίνει τιμή μηδέν.
Sub Test1()
Dim tel As long, arx As long
if Cells(Rows.Count, 1)<>"" then
tel=Rows.Count
else
tel = Cells(Rows.Count, 1).End(xlUp).Row
endif
If tel > 1 Then
Do
tel = tel - 1
Loop Until Cells(tel, 1) = "" Or tel = 1
arx = tel
Do
tel = tel - 1
Loop Until Cells(tel, 1) <> "" Or tel = 1
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 2, 1) = arx - tel
End If
End Sub
μία λύση και για τις δύο περιπτώσεις είναι ο παραπάνω κώδικας.
Θανάσης


Η ώρα είναι 23:39.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2