Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [VBA] Αναζήτηση δεδομένων ανάμεσα σε δύο ημερομηνίες

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

Κλειστό Θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 22-10-17, 05:43
Όνομα: Βασίλης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-09-2017
Μηνύματα: 12
Προεπιλογή Αναζήτηση δεδομένων ανάμεσα σε δύο ημερομηνίες

Πως μπορώ να κάνω αναζήτηση των δεδομένων μου ανάμεσα σε δύο ημερομηνίες και να μου εμφανίζεται έπειτα μια λίστα με όλα τα δεδομένα που έχουν περαστεί σε αυτές τι ημερομηνίες;
Π.χ θέλω να κάνω μια αναζήτηση από τις 10/8/2017 μέχρι και σήμερα και να μου εμφανίσει όλα τα δεδομένα από τότε μέχρι σήμερα.

Η αναζήτηση θέλω να γίνεται χρησιμοποιώντας VBA κώδικα .

Έχω κάνει βέβαια μια προεργασία αλλά δέχεται μόνο μια ημερομηνία (η οποία βρίσκεται στο κελί H1) και ψάχνω τρόπο για το πως θα προσθέσω και την δεύτερη (η οποία βρίσκεται στο κελί I1) στον κώδικα έτσι ώστε να μου εμφανίζει τα δεδομένα από την 1η ημερομηνία μέχρι και την 2η.

Κώδικας:
Sub finddata()

'ΕΔΩ ΚΑΝΟΥΜΕ ΑΝΑΖΗΤΗΣΗ ΜΙΑ ΗΜΕΡΟΜΗΝΙΑ ΠΟΥ ΕΧΟΥΜΕ ΟΡΙΣΕΙ
Dim hmeromhnia As String
Dim finalrow As Integer
Dim i As Integer

If ActiveSheet.Cells(1, 8) = "" Then
    MsgBox "Δεν έχετε επιλέξει ημερομηνία." & vbCrLf & "Επιλέξτε την και δοκιμάστε πάλι.", vbExclamation
    ActiveSheet.Cells(1, 8).Select
    Exit Sub
End If

Sheets("ΑΡΧΕΙΟ").Range("I7:N1048576").ClearContents

hmeromhnia = Sheets("ΑΡΧΕΙΟ").Range("H1").Value
finalrow = Sheets("ΑΡΧΕΙΟ").Range("C1048576").End(xlUp).Row

For i = 2 To finalrow
    If Cells(i, 3) = hmeromhnia Then
        Range(Cells(i, 1), Cells(i, 6)).Copy
        Range("I1048576").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
        End If
Next i
        

End Sub
Γνωρίζει κανείς;

(Έψαξα και στο site αλλά από αυτά που βρήκα δεν μπόρεσα να καταλάβω κάτι.)

Στο συνημμένο τα δεδομένα βρίσκονται στο ΑΡΧΕΙΟ.

Ευχαριστώ εκ των προτέρων.
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm ΜΗΝΙΑΙΑ ΕΞΟΔΑ.xlsm (101,3 KB, 38 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη bilakos26 : 25-10-17 στις 01:25. Αιτία: Έγιναν μερικές αλλαγές στο συννημένο
  #2  
Παλιά 23-10-17, 12:19
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα

Βασίλη, δοκίμασε τον παρακάτω κώδικα.

Κώδικας:
'ΕΔΩ ΚΑΝΟΥΜΕ ΑΝΑΖΗΤΗΣΗ ΣΕ ΧΡΟΝΙΚΟ ΔΙΑΣΤΗΜΑ  ΠΟΥ ΕΧΟΥΜΕ ΟΡΙΣΕΙ
    Dim Apo As Date, Eos As Date
    Dim finalrow As Integer
    Dim i As Integer

    If Not IsDate(Cells(1, 8)) Then    'ημερομηνία έναρξης
        MsgBox "Δεν έχετε επιλέξει ημερομηνία." & vbCrLf & "Επιλέξτε την και δοκιμάστε πάλι.", vbExclamation
        Cells(1, 8).Select
        Exit Sub
    End If

    If Not IsDate(Cells(1, 9)) Then    'ημερομηνία λήξης
        MsgBox "Δεν έχετε επιλέξει ημερομηνία." & vbCrLf & "Επιλέξτε την και δοκιμάστε πάλι.", vbExclamation
        Cells(1, 9).Select
        Exit Sub
    End If
    Apo = Cells(1, 8).Value
    Eos = Cells(1, 9).Value


    Range("I7:N1048576").ClearContents

    finalrow = Range("C1048576").End(xlUp).Row

    For i = 2 To finalrow
        If Cells(i, 3) >= Apo And Cells(i, 3) <= Eos Then
            Range(Cells(i, 1), Cells(i, 6)).Copy
            Range("I1048576").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
        End If
    Next i
    Application.CutCopyMode = False
Στον κώδικα προσπάθησα να «πειράξω» το δικό σου όσο το δυνατόν λιγότερο.

Κάποιες απόψεις:

1) Όταν είναι γνωστή η ημερομηνία είναι επίσης γνωστά ο μήνας και η μέρα (μπορεί να προκύψουν από τύπους, κλπ) συνεπώς η επιλογή τους είναι και περιττή και μπορεί να οδηγήσει και σε σφάλματα ( η ημερομηνία να είναι Δευτέρα και να επιλεγεί Κυριακή).

2) Η χρήση κώδικα για να πετύχουμε κάτι που γίνεται εύκολα με τα εργαλεία του Excel, δεν είναι σωστή τακτική.

Εφαρμόζοντας το φίλτρο που φαίνεται στη συνημμένη εικόνα πετυχαίνουμε αυτό που θέλεις, χωρίς κώδικα, UserForm και ειδικά Controls.
Συνημμένα Thumbnails
Αναζήτηση δεδομένων ανάμεσα σε δύο ημερομηνίες-autofilter.png  
  #3  
Παλιά 23-10-17, 12:56
Όνομα: Βασίλης
Έκδοση λογισμικού Office: Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-09-2017
Μηνύματα: 12
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από kapetang Εμφάνιση μηνυμάτων
Καλημέρα

Βασίλη, δοκίμασε τον παρακάτω κώδικα.

Κώδικας:
'ΕΔΩ ΚΑΝΟΥΜΕ ΑΝΑΖΗΤΗΣΗ ΣΕ ΧΡΟΝΙΚΟ ΔΙΑΣΤΗΜΑ  ΠΟΥ ΕΧΟΥΜΕ ΟΡΙΣΕΙ
    Dim Apo As Date, Eos As Date
    Dim finalrow As Integer
    Dim i As Integer

    If Not IsDate(Cells(1, 8)) Then    'ημερομηνία έναρξης
        MsgBox "Δεν έχετε επιλέξει ημερομηνία." & vbCrLf & "Επιλέξτε την και δοκιμάστε πάλι.", vbExclamation
        Cells(1, 8).Select
        Exit Sub
    End If

    If Not IsDate(Cells(1, 9)) Then    'ημερομηνία λήξης
        MsgBox "Δεν έχετε επιλέξει ημερομηνία." & vbCrLf & "Επιλέξτε την και δοκιμάστε πάλι.", vbExclamation
        Cells(1, 9).Select
        Exit Sub
    End If
    Apo = Cells(1, 8).Value
    Eos = Cells(1, 9).Value


    Range("I7:N1048576").ClearContents

    finalrow = Range("C1048576").End(xlUp).Row

    For i = 2 To finalrow
        If Cells(i, 3) >= Apo And Cells(i, 3) <= Eos Then
            Range(Cells(i, 1), Cells(i, 6)).Copy
            Range("I1048576").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
        End If
    Next i
    Application.CutCopyMode = False
Στον κώδικα προσπάθησα να «πειράξω» το δικό σου όσο το δυνατόν λιγότερο.

Κάποιες απόψεις:

1) Όταν είναι γνωστή η ημερομηνία είναι επίσης γνωστά ο μήνας και η μέρα (μπορεί να προκύψουν από τύπους, κλπ) συνεπώς η επιλογή τους είναι και περιττή και μπορεί να οδηγήσει και σε σφάλματα ( η ημερομηνία να είναι Δευτέρα και να επιλεγεί Κυριακή).

2) Η χρήση κώδικα για να πετύχουμε κάτι που γίνεται εύκολα με τα εργαλεία του Excel, δεν είναι σωστή τακτική.

Εφαρμόζοντας το φίλτρο που φαίνεται στη συνημμένη εικόνα πετυχαίνουμε αυτό που θέλεις, χωρίς κώδικα, UserForm και ειδικά Controls.
Γιώργο σε ευχαριστώ πάρα πολύ για την βοήθεια που μου παρείχες. Συμφωνώ με τα όσα λες, αλλά πιο συγκεκριμένα για τα εργαλεία προσπάθησα να προσθέσω κάτι φίλτρα για άμεση αναζήτηση αλλά δεν με βοήθησαν να κάνω αυτό που είχα κατά νου. Ο κώδικας που μου έστειλες όμως με βοήθησε να κάνω αυτό που ήθελα. Σε ευχαριστώ και πάλι.
  #4  
Παλιά 23-10-17, 17:50
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Να είσαι καλά!
Κλειστό Θέμα

Ετικέτες
excel, vba


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Γενικά] Αναζήτηση δεδομένων gfevran Excel - Ερωτήσεις / Απαντήσεις 5 06-11-15 18:50
[Πρότυπα] Αναζήτηση δεδομένων Spirosgr Excel samples - Χρήσιμα αρχεία & παραδείγματα 0 14-04-14 00:30
Αναζήτηση αποτελεσμάτων ανάμεσα σε ημερομηνίες kellis Access - Ερωτήσεις / Απαντήσεις 6 31-10-13 16:21
[Συναρτήσεις] Αναζήτηση και Εκτύπωση Δεδόμενων απο Βάση Δεδομένων nakosg Excel - Ερωτήσεις / Απαντήσεις 9 01-02-13 19:34
[VBA] Μεταφορά δεδομένων ανάμεσα σε φύλλα anastasiosz Excel - Ερωτήσεις / Απαντήσεις 11 10-03-11 18:21


Η ώρα είναι 07:19.