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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 04-09-10, 08:57
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 287
Προεπιλογή Προσαρμοσμένη ταξινόμηση

Καλημέρα σε όλους,
το θεματάκι μου έχει ως εξής:
Καταχωρώ σε ένα excel προμηθευτές και τα τιμολόγια που τους χρωστάω, θα ήθελα λοιπόν η αρίθμηση στην στήλη Α να γίνεται με αύξοντα αριθμό και μόνο για κάθε νέα καταχώρηση στη στήλη των προμηθευτών.
Ανεβάζω συνημμένο για να καταλάβετε τι εννοώ.


Ευχαριστώ,
Μάρω
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsx ΑΡΙΘΜΗΣΗ.xlsx (9,4 KB, 13 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη mdragon : 04-09-10 στις 09:30.
Απάντηση με παράθεση
  #2  
Παλιά 04-09-10, 10:04
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα

Μάρω προτείνω μια απλή λύση (έναν απλό τύπο), που πιθανόν να μη σε βολεύει.
Στη λύση αυτή οι αριθμοί στη στήλη Α θεωρούνται σαν αριθμοί ταυτότητας των προμηθευτών.

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsx ΑΡΙΘΜΗΣΗ.xlsx (9,8 KB, 7 εμφανίσεις)
Απάντηση με παράθεση
  #3  
Παλιά 04-09-10, 15:10
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Μάρω το ξανακοίταξα και βρήκα καλύτερη λύση.
Στο αρχείο, που επισυνάπτω (.xls 2003), υπάρχει μία μακροεντολή (mcrCount) η οποία αν εκτελεστεί, αφού γίνουν οι καταχωρήσεις στη στήλη B, γεμίζει κατάλληλα τη στήλη A.
Στην access 2003, που έχω, μπορείς να τη δεις και να την εκτελέσεις με την επιλογή: Εργαλεία > Μακροεντολή > Μακροεντολές.
Μπορείς επίσης να την εκτελέσεις πατώντας το συνδυασμό πλήκτρων: Ctrl + m.
Ο κώδικας βασίζεται στη θέση των δεδομένων στο φύλλο1. Αν συνεπώς αλλάξει θα πρέπει να προσαρμοστεί.
Ειδικά ο κώδικας έχει μία δομή επανάληψης (Do Loop) που σταματά όταν το τελευταίο κελί στη στήλη B είναι κενό ή γράφει : ΣΥΝΟΛΑ.

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: xls ΑΡΙΘΜΗΣΗ.xls (39,5 KB, 6 εμφανίσεις)
Απάντηση με παράθεση
  #4  
Παλιά 06-09-10, 08:24
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 287
Προεπιλογή

Γιώργο,
σε ευχαριστώ για το χρόνο σου. Προτίμησα την πρώτη εκδοχή χρησιμοποιώντας μορφοποίηση υπό όρους στην πρώτη στήλη. Είναι μέσο "Λαμίας" αλλά με την μακροεντολή μου κόλλησε.




Την καλημέρα μου,
Μάρω
Απάντηση με παράθεση
  #5  
Παλιά 06-09-10, 19:07
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα

Μάρω πιθανόν η καταχώρηση των προμηθευτών και των τιμολογίων (και η διαδρομή μέσω Λαμίας) να γίνεται σπάνια.
Το πρόβλημα όμως που έβαλες (ταξινόμηση μιας λίστας ονομάτων και απαρίθμηση των διαφορετικών ονομάτων) είναι αρκετά συχνό και σημαντικό.
Το κόλλημα της μακροεντολής πιθανόν να οφείλεται στα μέτρα ασφάλειας του excel ή και στις διαφορετικές εκδόσεις.
Πιστεύω ότι το πρόβλημα θα λύνονταν, αν δημιουργούσες εσύ τη μακροεντολή επικολλώντας τον παρακάτω κώδικα.
Παράθεση:
Dim col As New Collection
Dim i As Integer
Dim intC As Integer

Range("B1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

On Error Resume Next
i = 2: intC = 0
With Worksheets("Φύλλο1")
Do Until .Cells(i, 2) = "ΣΥΝΟΛΑ" Or .Cells(i, 2) = ""
col.Add .Cells(i, 2), .Cells(i, 2)
If col.Count > intC Then
.Cells(i, 1) = col.Count
Else
.Cells(i, 1) = ""
End If
intC = col.Count
i = i + 1
Loop
End With
Set col = Nothing
Range("A1").Select
Α. Δημιουργία μακροεντολής
1. Μενού Εργαλεία > Μακροεντολή > Μακροεντολές
2. Στο παράθυρο Μακροεντολές γράφουμε το όνομα της μακροεντολής (πχ mcrCount) και πατούμε το κουμπί Δημιουργία.
3. Στο παράθυρο που ανοίγει επικολλούμε τον κώδικα ανάμεσα στις γραμμές Sub και End Sub και στο μενού επιλέγουμε Debung > Compile VBAProject. Κλείνουμε το παράθυρο του κώδικα.
4. Ανοίγουμε πάλι το παράθυρο Μακροεντολές (βήμα 1) και πατούμε το κουμπί Επιλογές και στο παράθυρο που εμφανίζεται επιλέγουμε ένα συνδυασμό πλήκτρων για την εκτέλεση της μακροεντολής (πχ ctrl+m).
Β. Χρήση της Μακροεντολής
1. Καταχωρούμε τους προμηθευτές και τα τιμολόγια (χωρίς τη γραμμή αθροίσματος).
2. Εκτελούμε τη μακροεντολή πατώντας τον κατάλληλο συνδυασμό πλήκτρων (ctrl+m). Η μακροεντολή θα ταξινομήσει τη λίστα με βάση τη στήλη B και θα απαριθμήσει τους διαφορετικούς προμηθευτές στη στήλη A.
3. Προσθέτουμε (χειροκίνητα) το άθροισμα στο τέλος.
Αν βρεις χρόνο και διάθεση, για να το δοκιμάσεις, σου εύχομαι καλή επιτυχία.

Φιλικά/Γιώργος

Τελευταία επεξεργασία από το χρήστη kapetang : 06-09-10 στις 22:11.
Απάντηση με παράθεση
  #6  
Παλιά 07-09-10, 09:38
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

Καλημέρα στη παρέα!

Μάρω, κάνε μια ακόμη δοκιμή αν θέλεις με τον παρακάτω τύπο στο κελί Α2
και συμπληρωμένο προς τα κάτω:

=IF(MATCH(B2;B:B;0)=ROW();COUNT($A$1:A1)+1;"")

Δεν χρειάζεται ταξινόμηση η λίστα αλλά το αποτέλεσμα θα είναι απλά ένας μεταβλητός
αύξων αριθμός για κάθε ξεχωριστό προμηθευτή και όχι μοναδικό αναγνωριστικό (ID).
Αν αυτό δεν σε πειράζει, νομίζω πως είναι η πιο απλή λύση.

Φιλικά,
Γιάννης.
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
  #7  
Παλιά 07-09-10, 09:45
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 287
Προεπιλογή

Γιώργο, μάλλον δεν σου το έδωσα να το καταλάβεις καλά.
Το έκανα όπως μου είπες.... δούλεψε .... αλλά μετά από λίγο μου κόλλησε το excel.
Προς το παρόν το έχω με τη μορφοποίηση που σου είπα.


Γιάννη, με καλύπτει αρκετά, αν βρεις χρόνο πες μου πως μπορώ να το κάνω στα ενδιάμεσα κενά να μην μου βγάζει #Δ/Υ.


Ευχαριστώ πολύ για το χρόνο σας,
Μάρω
Απάντηση με παράθεση
  #8  
Παλιά 07-09-10, 10:23
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από mdragon Εμφάνιση μηνυμάτων
Γιάννη, με καλύπτει αρκετά, αν βρεις χρόνο πες μου πως μπορώ να το κάνω στα ενδιάμεσα κενά να μην μου βγάζει #Δ/Υ.

Ευχαριστώ πολύ για το χρόνο σας,
Μάρω
Απλά Μάρω, θα πρέπει να παρθεί άλλη μια απόφαση:

=IF(LEN(B2);IF(MATCH(B2;B:B;0)=ROW();COUNT($A$1:A1 )+1;"");"")

Χαίρομαι που σε καλύπτει!
Γιάννης
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
  #9  
Παλιά 07-09-10, 11:40
Όνομα: Μάρω
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 09-03-2010
Περιοχή: Αθήνα
Μηνύματα: 287
Προεπιλογή

Να σαι καλά βρε Γιάννη,




Ευχαριστώ,
Μάρω
Απάντηση με παράθεση
  #10  
Παλιά 07-09-10, 15:50
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.030
Προεπιλογή

Καλησπέρα κι από μένα!

Αν χρειαστεί, για να δωθεί μοναδικό αναγνωριστικό (ID) στους προμηθευτές στη στήλη B,
μπορεί να χρησιμοποιηθεί:

Στο κελί A2 ο αριθμός 1

Στο κελί A3 (μπορεί να αντιγραφεί στα κελια κάτω από το A3):

Κώδικας:
=IF(B3="";"";IF(IFERROR(MATCH(B3;$B$2:B2;0);0)=0;MAX($A$2:A2)+1;INDEX($A$2:A2;MATCH(B3;$B$2:B2;0))))


Σημείωση:

  • Ο τύπος είναι φτιαγμένος για Excel > 2003
  • Τα δεδομένα της στήλης B θα πρέπει να είναι ταξινομημένα.
  • Η τιμή του "αναγνωριστικού" μπορεί να μεταβληθεί αν προστεθούν νέοι προμηθευτές!

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Επεξεργαστής για προσαρμοσμένη Κορδέλα Ribbon (Ribbon Office ToolBar Editor) Rogerk Access - Ερωτήσεις / Απαντήσεις 0 31-10-14 18:53
[Γενικά] Ταξινόμηση comsup Excel - Ερωτήσεις / Απαντήσεις 1 15-03-13 23:51
Ταξινόμηση jimrenoir Access - Ερωτήσεις / Απαντήσεις 8 22-02-11 11:19
[ Εκθέσεις ] Προσαρμοσμένη ταξινόμηση lammis Access - Ερωτήσεις / Απαντήσεις 3 17-09-10 20:13
[Μορφοποίηση] Προσαρμοσμένη μορφοποίηση gr8styl Excel - Tips & Tricks 0 28-01-10 00:26


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