bilakos26 Δημοσ. 23 Οκτωβρίου 2017 Δημοσ. 23 Οκτωβρίου 2017 Πως μπορώ να κάνω αναζήτηση των δεδομένων μου ανάμεσα σε δύο ημερομηνίες και να μου εμφανίζεται έπειτα μια λίστα με όλα τα δεδομένα που έχουν περαστεί σε αυτές τι ημερομηνίες;Π.χ θέλω να κάνω μια αναζήτηση από τις 10/8/2017 μέχρι και σήμερα και να μου εμφανίσει όλα τα δεδομένα από τότε μέχρι σήμερα.Γνωρίζει κανείς; (Έψαξα και στο site αλλά δεν βρήκα κάτι) Στο συνημμένο τα δεδομένα βρίσκονται στο ΑΡΧΕΙΟ.Ευχαριστώ εκ των προτέρων.
newnick Δημοσ. 23 Οκτωβρίου 2017 Δημοσ. 23 Οκτωβρίου 2017 Καλημέρα, Νομίζω ότι ή Site: DSUM σου κάνει την δουλειά (δεν ξέρω βέβαια αν η DSUM στο κριτήριο μπορεί να παίρνει τιμή από άλλο κελί.... )
flik Δημοσ. 23 Οκτωβρίου 2017 Δημοσ. 23 Οκτωβρίου 2017 Θες να στα εμφανίζει και τα άλλα να κρύβει;Εννοώ δεν θες κάποια πράξη όπως η sum παραπάνω;Για το πρώτο δες την λύση του φίλτρου (καρτέλα δεδομένα).Και γι ανα μην το πειλέγεις εσύ χειροκίνητα κάθε φορά, θα δημιουργούσα μια βοηθητική στήλη, που θα εμφάνιζε την τιμή show ή Hide ανάλογα αν στην ίδια σειρά, η ημερομηνία ήταν εντός ή εκτός διαστήματος.Μετά απλά κάθε φορά που αλλάζεις το χρονικό διάστημα, θα ξαναεφαρμόζεις το φίλτρο. Αν θες δημιουργείς μετά και ένα macro να το κάνει ξερωγω με ένα κουμπί.Άλλη λύση ακόμα πιο αυτοματοποιημένη είναι με κώδικα vba.Σίγουρα γίνεται και με συνάρτηση κάτι, σε έναν βοηθητικό πίνακα δίπλα ή απο κάτω, που σου διαβάζει ενα ένα όλα τα δεδομένα εκτός απο αυτά που είναι εκτός διαστήματος, αλλά νομίζω είναι πιο βαριά λύση αυτή.
The King Δημοσ. 23 Οκτωβρίου 2017 Δημοσ. 23 Οκτωβρίου 2017 Πατάς ALT+F11 να ανοίξεις Visual Basic Insert > Module Public Sub yourDateRange() Dim lngStart As Long, lngEnd As Long lngStart = Range("H3").Value 'ψάχνεις ΑΠΟ lngEnd = Range("I3").Value 'ψάχνεις ΜΕΧΡΙ 'τα κελιά που θα περιέχουν τα dates και θα εφαρμοστεί η αναζήτηση (Range) Range("C2:C13").AutoFilter field:=1, _ Criteria1:=">=" & lngStart, _ Operator:=xlAnd, _ Criteria2:="<=" & lngEnd End Sub Πατάς F5 για να εκτέλεσεις το module εφόσον στο H3,I3 έχεις βάλει το date range σου.Υπάρχει τρόπος να καλείς το παραπάνω VB module (yourDateRange) δημιουργώντας κουμπάκι εκτέλεσης μέσα στο Spreadsheet σου αντί να ανοίγεις VB κάθε φορά. Επειδή θέλει λίγη διαδικασία δες εδώ
spectaculator Δημοσ. 23 Οκτωβρίου 2017 Δημοσ. 23 Οκτωβρίου 2017 Φίλτρο στη στήλη με τις ημερομηνίες. Μετά κλικ στο drop down του φίλτρου στη στήλη και Date Filters > Between, θα δώσεις το εύρος για τις ημερομηνίες που θέλεις και αυτό ήταν.
bilakos26 Δημοσ. 23 Οκτωβρίου 2017 Μέλος Δημοσ. 23 Οκτωβρίου 2017 Πατάς ALT+F11 να ανοίξεις Visual Basic Insert > Module Public Sub yourDateRange() Dim lngStart As Long, lngEnd As Long lngStart = Range("H3").Value 'ψάχνεις ΑΠΟ lngEnd = Range("I3").Value 'ψάχνεις ΜΕΧΡΙ 'τα κελιά που θα περιέχουν τα dates και θα εφαρμοστεί η αναζήτηση (Range) Range("C2:C13").AutoFilter field:=1, _ Criteria1:=">=" & lngStart, _ Operator:=xlAnd, _ Criteria2:="<=" & lngEnd End Sub Πατάς F5 για να εκτέλεσεις το module εφόσον στο H3,I3 έχεις βάλει το date range σου.Υπάρχει τρόπος να καλείς το παραπάνω VB module (yourDateRange) δημιουργώντας κουμπάκι εκτέλεσης μέσα στο Spreadsheet σου αντί να ανοίγεις VB κάθε φορά. Επειδή θέλει λίγη διαδικασία δες εδώ εκανα κατι παρομοιο με αυτο που μου λες αλλα επειδη το φιλτρο δεν με βολευε γιατι ηθελα να υπολογιζω και καποιες αλλες τιμες, όπως το συνολο απο τα ποσα δαπανης που θα εβρισκα απο τις ημερομηνιες και το φιλτρο δεν μου την παρειχε αυτην την ιδιοτητα γιατι μου εμφανιζε το συνολο ολων των τιμων και οχι των τιμων που εψαχνα να βρω με βαση τις ημερομηνιες, εφτιαξα τον παρακατω κωδικα αλλα υπαρχει προβλημα σε αυτον. Το προβλημα ειναι οτι η αναζητηση γινεται μονο σε μια ημερομηνια γιατι δεν ξερω πως να βαλω στον κωδικα να βρισκει με βαση και τις δυο ημερομηνιες τα δεδομενα που θελω. Γνωριζεις τι κωδικας πρεπει να γραφτει για να μπορω να παιρνω τα δεδομενα και απο τις δυο ημερομηνιες και επειτα να μου εμφανιζει το αποτελεσματα εκει ακριβως που θελω; 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 Θες να στα εμφανίζει και τα άλλα να κρύβει; Εννοώ δεν θες κάποια πράξη όπως η sum παραπάνω; Για το πρώτο δες την λύση του φίλτρου (καρτέλα δεδομένα). Και γι ανα μην το πειλέγεις εσύ χειροκίνητα κάθε φορά, θα δημιουργούσα μια βοηθητική στήλη, που θα εμφάνιζε την τιμή show ή Hide ανάλογα αν στην ίδια σειρά, η ημερομηνία ήταν εντός ή εκτός διαστήματος. Μετά απλά κάθε φορά που αλλάζεις το χρονικό διάστημα, θα ξαναεφαρμόζεις το φίλτρο. Αν θες δημιουργείς μετά και ένα macro να το κάνει ξερωγω με ένα κουμπί. Άλλη λύση ακόμα πιο αυτοματοποιημένη είναι με κώδικα vba. Σίγουρα γίνεται και με συνάρτηση κάτι, σε έναν βοηθητικό πίνακα δίπλα ή απο κάτω, που σου διαβάζει ενα ένα όλα τα δεδομένα εκτός απο αυτά που είναι εκτός διαστήματος, αλλά νομίζω είναι πιο βαριά λύση αυτή. Αν μπορεις να με βοηθησεις με την παραθεση που εχω κανει στον φιλο The King θα σου ημουν ευγνωμον, διοτι το φιλτρο δεν με βοηθησε. Καλημέρα, Νομίζω ότι ή Site: DSUM σου κάνει την δουλειά (δεν ξέρω βέβαια αν η DSUM στο κριτήριο μπορεί να παίρνει τιμή από άλλο κελί.... ) Βασικα φιλε newnick προσπαθω να λυσω το προβλημα μου με την VBA αλλα δεν το διευκρίνισα εξαρχης. Αν μπορεις να με βοηθησεις σχετικα με την παραθεση που εχω κανει στον φιλο The King θα σου ημουν επισης ευγνωμον. Φίλτρο στη στήλη με τις ημερομηνίες. Μετά κλικ στο drop down του φίλτρου στη στήλη και Date Filters > Between, θα δώσεις το εύρος για τις ημερομηνίες που θέλεις και αυτό ήταν. Το φιλτρο το δοκιμασα και οντος με βοηθησε στο να βρω τις ημερομηνιες που ηθελα, αλλα επειδη βρισκοντας τις ημερομηνιες, θελω να παιρνω τις τιμες απο τα Ποσα Δαπανης, το φιλτρο δεν μου παρεχει αυτην την ιδιοτητα, διοτι θελω να παιρνω συγκεκριμενες τιμες απο τις αναζητουμενες ημερομηνιες και οχι ολες τις τιμες που το φιλτρο μου δινει. Ισως σε μπερδεψα. Αν μπορεις να με βοηθησεις ομως με την VBA γιατι ετσι προσπαθω να λυσω το προβλημα μου, εχω κανει μια παραθεση στον φιλο The King.
bilakos26 Δημοσ. 23 Οκτωβρίου 2017 Μέλος Δημοσ. 23 Οκτωβρίου 2017 Τελικά βρήκα λύση στο πρόβλημά μου. Σας ευχαριστώ όλους για τις απαντήσεις σας και το ενδιαφέρον που δείξατε.
The King Δημοσ. 23 Οκτωβρίου 2017 Δημοσ. 23 Οκτωβρίου 2017 Τελικά βρήκα λύση στο πρόβλημά μου. Σας ευχαριστώ όλους για τις απαντήσεις σας και το ενδιαφέρον που δείξατε. Γιατί δε μοιράζεσαι αναλυτικά τη λύση με τους υπόλοιπους που θα διαβάσουν κάποια στιγμή το πρόβλημά σου και μπορεί να χρειαστούν την ίδια λύση; Έτσι μπορείς να ανταποδώσεις δίνοντας κάτι πίσω στην κοινότητα αντί να μας ευχαριστείς λεκτικά για το χρόνο και το ενδιαφέρον μας. Φαντάζεσαι να κρατούσαμε όλοι τις λύσεις/απαντήσεις για πάρτη μας τι θα γινόταν;
bilakos26 Δημοσ. 23 Οκτωβρίου 2017 Μέλος Δημοσ. 23 Οκτωβρίου 2017 Γιατί δε μοιράζεσαι αναλυτικά τη λύση με τους υπόλοιπους που θα διαβάσουν κάποια στιγμή το πρόβλημά σου και μπορεί να χρειαστούν την ίδια λύση; Έτσι μπορείς να ανταποδώσεις δίνοντας κάτι πίσω στην κοινότητα αντί να μας ευχαριστείς λεκτικά για το χρόνο και το ενδιαφέρον μας. Φαντάζεσαι να κρατούσαμε όλοι τις λύσεις/απαντήσεις για πάρτη μας τι θα γινόταν; Sub finddata() 'ΕΔΩ ΚΑΝΟΥΜΕ ΑΝΑΖΗΤΗΣΗ ΣΕ ΧΡΟΝΙΚΟ ΔΙΑΣΤΗΜΑ ΠΟΥ ΕΧΟΥΜΕ ΟΡΙΣΕΙ 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 End Sub έδωσα απάντηση μέσο της εφαρμογής δεν ήθελα να κρατήσω κάτι για την πάρτη μου, εξάλλου κοινοποίησα και τμήμα του κώδικα για βρεθεί γρηγορότερα κάποια λύση. Έκανες καλά πάντως που μου το είπες. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα