Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > Φιλτράρισμα και αντιγραφή

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 20-12-20, 01:12
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 16-03-2015
Μηνύματα: 151
Προεπιλογή Φιλτράρισμα και αντιγραφή

Καλημέρα σε όλους,
εύχομαι όλοι μας και οι οικογένειές μας, να είμαστε υγιείς αυτήν την δύσκολη περίοδο.
Παίρνω το θάρρος να (ξανα)ζητήσω την βοήθειά σας, καθώς είμαι αρχάριος - πολύ αρχάριος - στην VBA, αλλά μου αρέσει πολύ και θέλω να πειραματίζομαι και να προσπαθώ.
Έχω, λοιπόν, ένα φύλλο εργασίας με 24 στήλες και 1132 σειρές με δεδομένα. Φυσικά, για να μπορώ να τα επεξεργαστώ ευκολότερα, θα πρέπει να τα φιλτράρω.
Στην αρχή σκέφτηκα τα απλά φίλτρα του Excel, αλλά έπεσα πάνω στον παρακάτω κώδικα στο internet και θέλησα να τον χρησιμοποιήσω.
Τον αντέγραψα (με τις απαραίτητες αλλαγές στα φύλλα και τα κελιά), αλλά μου βγάζει μήνυμα λάθους "Run-time error 1004".
Προσπάθησα, με τις ελάχιστες γνώσεις μου να καταλάβω που είναι το λάθος, αλλά δεν τα κατάφερα. Γι' αυτό απευθύνομαι σε εσάς, μήπως μπορέσετε να με βοηθήσετε.
Ο κώδικας είναι ο εξής:
Κώδικας:
Sub copy_filtered_data()
    
Dim count_col, count_row As Integer
Dim orig, output As Worksheet

ThisWorkbook.Sheets("Sheet3").Cells.ClearContents
Worksheets("Sheet1").Activate

Set orig = ThisWorkbook.Sheets("Sheet1")
Set output = ThisWorkbook.Sheets("Sheet3")

count_col = WorksheetFunction.CountA(Range("A7", Range("A7").End(xlToRight)))
count_row = WorksheetFunction.CountA(Range("A7", Range("A7").End(xlDown)))

ActiveSheet.Range("A7").AutoFilter Field:=2, Criterial:=Cells(2, 1).Value

orig.Range(Cells(7, 1).Cells(count_row, count_col)).SpecialCells(xlCellTypeVisible).Copy
output.Cells(1, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Worksheets("Sheet1").ShowAllData
Worksheets("Sheet1").AutoFilterMode = False
Worksheets("Sheet3").Activate
ActiveSheet.Range("A1").Select

End Sub
Αν έχω καταλάβει σωστά το πρόβλημα είναι στην γραμμή που έχω τονίσει τα γράμματα.
Ευχαριστώ για τον χρόνο σας και συγγνώμη για το μεγάλο μήνυμα.
Ελπίζω στην βοήθειά σας.
Απάντηση με παράθεση
  #2  
Παλιά 20-12-20, 10:43
Το avatar του χρήστη ChrisGT7
Διαχειριστής
Όνομα: Χρήστος Ζώρζος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 20-09-2013
Περιοχή: Κοντά σε ηφαίστειο...
Μηνύματα: 1.046
Προεπιλογή

Καλημέρα Κώστα,

Δοκίμασε τις παρακάτω αλλαγές να δεις αν έχεις τα επιθυμητά αποτελέσματα:

Τη γραμμή με τα έντονα γράμματα άλλαξέ την σε:
Range("Sheet1!A7").AutoFilter 2, ActiveSheet.Cells(2, 1).Value

και στην ακριβώς από κάτω γραμμή αντικατέστησε την κόκκινη τελεία με κόμμα:
... Range(Cells(7, 1).Cells(c ...
__________________
Your Curiosity Will Be The Death Of You!
Απάντηση με παράθεση
  #3  
Παλιά 20-12-20, 10:53
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 16-03-2015
Μηνύματα: 151
Προεπιλογή

Καλημέρα Χρήστο, σ' ευχαριστώ για την απάντησή σου.
Δοκίμασα την πρότασή σου και τώρα μου βγάζει μήνυμα λάθους "Run time error 1004. Η μέθοδος AutoFilter της κλάσης Range απέτυχε". Το κακό είναι ότι δεν έχω τις γνώσεις για να καταλάβω τι πρέπει να ψάξω και να διορθώσω.
Γι' αυτό φυσικά απευθύνθηκα στην βοήθειά σας.
Απάντηση με παράθεση
  #4  
Παλιά 20-12-20, 11:02
Το avatar του χρήστη ChrisGT7
Διαχειριστής
Όνομα: Χρήστος Ζώρζος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 20-09-2013
Περιοχή: Κοντά σε ηφαίστειο...
Μηνύματα: 1.046
Προεπιλογή

Είναι εύκολο να ανεβάσεις το αρχείο σου με δοκιμαστικά δεδομένα;

Πάντως τρέχοντας τον κώδικά σου με τις αλλαγές που σου ανέφερα τρέχει κανονικά στο δικό μου. Δηλαδή:

Κώδικας:
Sub copy_filtered_data()
    
Dim count_col, count_row As Integer
Dim orig, output As Worksheet

ThisWorkbook.Sheets("Sheet3").Cells.ClearContents
Worksheets("Sheet1").Activate

Set orig = ThisWorkbook.Sheets("Sheet1")
Set output = ThisWorkbook.Sheets("Sheet3")

count_col = WorksheetFunction.CountA(Range("A7", Range("A7").End(xlToRight)))
count_row = WorksheetFunction.CountA(Range("A7", Range("A7").End(xlDown)))

Range("Sheet1!A7").AutoFilter 2, ActiveSheet.Cells(2, 1).Value

orig.Range(Cells(7, 1), Cells(count_row, count_col)).SpecialCells(xlCellTypeVisible).Copy
output.Cells(1, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Worksheets("Sheet1").ShowAllData
Worksheets("Sheet1").AutoFilterMode = False
Worksheets("Sheet3").Activate
ActiveSheet.Range("A1").Select

End Sub
__________________
Your Curiosity Will Be The Death Of You!
Απάντηση με παράθεση
  #5  
Παλιά 20-12-20, 11:25
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 16-03-2015
Μηνύματα: 151
Προεπιλογή

Χρήστο, ετοίμασα και ανεβάζω ένα μικρό αρχείο Excel το οποίο έχει την μορφοποίηση του κανονικού αρχείου αλλά μόνο με 5 σειρές δεδομένων.
Ελπίζω να σε βοηθήσει.
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsx Δείγμα.xlsx (11,3 KB, 4 εμφανίσεις)
Απάντηση με παράθεση
  #6  
Παλιά 20-12-20, 11:30
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 16-03-2015
Μηνύματα: 151
Προεπιλογή

Μήπως δεν είναι θέμα του κώδικα, αλλά κάποιας ρύθμισης του ίδιου του Excel;
Απάντηση με παράθεση
  #7  
Παλιά 20-12-20, 11:59
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 16-03-2015
Μηνύματα: 151
Προεπιλογή

Χρήστο συγγνώμη, ξανανεβάζω το αρχείο γιατί δεν έβαλα το δεύτερο φύλλο, όπως και το κελί Α2 βάση του οποίου θα γίνει το φιλτράρισμα.
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsx Δείγμα.xlsx (12,0 KB, 9 εμφανίσεις)
Απάντηση με παράθεση
  #8  
Παλιά 20-12-20, 13:45
Το avatar του χρήστη ChrisGT7
Διαχειριστής
Όνομα: Χρήστος Ζώρζος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 20-09-2013
Περιοχή: Κοντά σε ηφαίστειο...
Μηνύματα: 1.046
Προεπιλογή

Κώστα,

Δοκίμασε το συνημμένο αρχείο να δεις αν σε βολεύει.
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm ΑΝΑΖΗΤΗΣΗ.xlsm (21,2 KB, 14 εμφανίσεις)
__________________
Your Curiosity Will Be The Death Of You!
Απάντηση με παράθεση
  #9  
Παλιά 20-12-20, 13:52
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 16-03-2015
Μηνύματα: 151
Προεπιλογή

Χρήστο, με μια πρώτη δοκιμή φαίνεται να δουλεύει. Θα το δοκιμάσω και στο αρχείο με τα πλήρη στοιχεία και θα επανέλθω.
Πάντως σε ευχαριστώ πολύ για τον χρόνο και την προσπάθειά σου.
Να είσαι καλά.
Απάντηση με παράθεση
  #10  
Παλιά 20-12-20, 14:02
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 16-03-2015
Μηνύματα: 151
Προεπιλογή

Χρήστο, το δοκίμασα και στο κανονικό αρχείο και δουλεύει σωστά.
Μια τελευταία ερώτηση μόνο. Αν θέλω να φιλτράρω τα δεδομένα με βάση μια άλλη στήλη, τι πρέπει να αλλάξω;
Ξέρω ότι μάλλον σε κούρασα, αλλά θα με εξυπηρετούσε πολύ στην δουλειά να ετοιμάσω το αρχείο.
Ευχαριστώ και πάλι για την βοήθειά σου.
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] Φιλτράρισμα δεδομένων caudillo Excel - Ερωτήσεις / Απαντήσεις 2 06-09-20 15:12
[Γενικά] αποτελεσμα από φιλτραρισμα ΠΑΝΑΓΙΩΤΟΠΟΥΛΟΣ ΙΩΑΝΝΗΣ Excel - Ερωτήσεις / Απαντήσεις 5 29-05-19 23:37
[Excel07] φιλτραρισμα και επικολληση katerina_ Excel - Ερωτήσεις / Απαντήσεις 3 20-07-16 07:44
[ Υποφόρμες ] Αυτόματο φιλτράρισμα ΚΩΣΤΑΣ2 Access - Ερωτήσεις / Απαντήσεις 7 22-04-12 10:32
[ Ερωτήματα ] Φιλτράρισμα Ερωτήματος Free_Ghost Access - Ερωτήσεις / Απαντήσεις 10 28-10-10 12:27


Η ώρα είναι 04:33.