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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 18-09-16, 18:04
Όνομα: Σπύρος 23
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 19-05-2016
Μηνύματα: 57
Προεπιλογή Μηδεν σε Αφμ στο Excel

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

Αν οι Α.Φ.Μ. είναι ελληνικοί και όχι εντός Ε.Ε. (ενδοκοινοτικοί συναλλασσόμενοι), τότε η παρακάτω συνάρτηση θα σε βοηθήσει:
=REPT("0";9-LEN(A1))&A1

π.χ. Αν το κελί Α1 έχει τον ΑΦΜ "5896547", γράψε την παραπάνω συνάρτηση στο Β1 και το αποτέλεσμα θα είναι "005896547".

Μετά απλά τράβα τη συνάρτηση και στα υπόλοιπα κελιά.
__________________
Your Curiosity Will Be The Death Of You!
Απάντηση με παράθεση
  #3  
Παλιά 18-09-16, 18:53
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

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

Με 2 έχω δει σίγουρα. Μπορεί να υπάρχουν και με περισσότερα, αρκεί φυσικά να επαληθεύονται από τον αλγόριθμο δημιουργίας ΑΦΜ.
__________________
Your Curiosity Will Be The Death Of You!
Απάντηση με παράθεση
  #5  
Παλιά 18-09-16, 19:02
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Επομένως
Αν δεν είμαστε 100% σίγουροι,
για τον αριθμό των μηδενικών που μπορεί να αρχίζει ένας ΑΦΜ,
αν ο χρήστης έχει πχ 45678, εκ παραδρομής,
τότε κάθε τύπος που θα του δώσει αποτέλεσμα 000045678 είναι λάθος απάντηση...
ενώ θα έπρεπε να «ειδοποιεί» για σφάλμα...
Απάντηση με παράθεση
  #6  
Παλιά 18-09-16, 19:10
Το avatar του χρήστη ChrisGT7
Διαχειριστής
Όνομα: Χρήστος Ζώρζος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 20-09-2013
Περιοχή: Κοντά σε ηφαίστειο...
Μηνύματα: 1.046
Προεπιλογή

Τότε η παρακάτω συνάρτηση πρέπει να χρησιμοποιηθεί μέσω VBA για τον έλεγχο ορθότητας ΑΦΜ:

Κώδικας:
Function ValidAFM(Afm As String) As Boolean
    ValidAFM = False
    If Len(Trim(Afm)) = 9 Then
        Dim Sum As Long
        For I = 8 To 1 Step -1
            Sum = Sum + Val(Mid(Afm, I, 1)) * 2 ^ (9 - I)
        Next
        ValidAFM = (((Sum Mod 11) Mod 10) = Val(Right(Afm, 1)))
    End If
End Function
Προσοχή όμως: Η παραπάνω συνάρτηση ελέγχει αν ένας ΑΦΜ είναι σωστός, όχι αν υπάρχει στην εφορία.
__________________
Your Curiosity Will Be The Death Of You!
Απάντηση με παράθεση
  #7  
Παλιά 18-09-16, 20:31
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Χρήστο, να τσεκάρεις τη συνάρτηση...
Απάντηση με παράθεση
  #8  
Παλιά 18-09-16, 20:36
Όνομα: Σπύρος 23
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 19-05-2016
Μηνύματα: 57
Προεπιλογή

Υπάρχουν δυο ειδών κελιά.
Αυτά που είναι 9 ψηφίων και είναι εντάξει
Και υπάρχουν και αυτά που έχουν 8 ψηφία και λείπει μπροστά το μηδέν
Πως βάζω σε όσα είναι 8 ψηφίων ένα μηδέν μπροστά.
Το κελί τι πρέπει να ειναι?
Λογικά αριθμός?

Τελευταία επεξεργασία από το χρήστη Spirosgr : 19-09-16 στις 09:39.
Απάντηση με παράθεση
  #9  
Παλιά 18-09-16, 20:57
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Πρόσεξε το σκεπτικό...

Υποθέτω, ότι ένας ΑΦΜ, έχει μέχρι 2 μηδενικά στην αρχή του και πρέπει:
1. Να έχει 9 ψηφία σύνολο...
2. Να είναι έγκυρος (με βάση τον αλγόριθμο ή τον κώδικα που θα τον ελέγξει)

Κανονικά όταν κρατάμε ΑΦΜ σε μια στήλη, θα πρέπει να είναι μορφοποιημένη Text εξ' αρχής.
Αν δεν είναι, (εδώ είναι και το πρόβλημα του φίλου) τότε:

Πρέπει ένας κώδικας να ελέγξει κάθε κελί χωριστά και να κάνει τα εξής:

1. Μορφοποιεί το κελί "@" = text
2.Μετράει το len του ΑΦΜ

2α. Αν είναι 9 τότε ελέγχει την εγκυρότητα...
2β. Αν δεν είναι 9 (και μέχρι 7) τότε:
Για κάθε ψηφίο μέχρι τα 9 που «λείπει» , προσθέτει τόσα μηδενικά και ελέγχει την εγκυρότητα
του «νέου» ΑΦΜ
2γ. Αν είναι λιγότερα από 7 τότε χρωματίζει πχ κόκκινο (ο ΑΦΜ δεν έχει τα απαιτούμενα ψηφία)

Αν το 2α είναι true τότε προχωράει,
αν είναι false τότε χρωματίζει πχ γκρι
(ο ΑΦΜ δεν είναι έγκυρος)

Αν το 2β είναι true (μετά τη προσθήκη των / του μηδενικού) τότε προχωράει,
αν είναι false τότε χρωματίζει πχ γκρι (ο ΑΦΜ δεν είναι έγκυρος)

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

Έκανα μερικές τροποποιήσεις για να μπορεί να χρησιμοποιηθεί και σε Excel ώστε να ελέγχει αν ένας ελληνικός ΑΦΜ είναι ορθός και να τον επιστρέφει πλήρες (αν του λείπουν μηδενικά):

Κώδικας:
Function AFM(Str As String) As String
    Dim I As Long, Sum As Long
    
    If Len(Str) > 9 Or Not IsNumeric(Str) Then
        AFM = "Μη έγκυρος Α.Φ.Μ."
        Exit Function
    End If
    
    Str = String(9 - Len(Str), "0") & Str
    For I = 8 To 1 Step -1
        Sum = Sum + Val(Mid(Str, I, 1)) * 2 ^ (9 - I)
    Next
    AFM = IIf((Sum Mod 11) Mod 10 = Val(Right(Str, 1)), Str, "Μη έγκυρος Α.Φ.Μ.")
End Function
Σπύρος23, χρησιμοποιώντας τον παραπάνω κώδικα, δημιουργείς μια συνάρτηση AFM() που βάζοντας ως τιμή το κελί που περιέχει τον ΑΦΜ, κάνει τους απαραίτητους ελέγχους και σου επιστρέψει "Μη έγκυρος ΑΦΜ" ή τον ΑΦΜ με επιπλέον μηδενικά, αν παραλείπονται.
__________________
Your Curiosity Will Be The Death Of You!
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Πρόβλημα με συνάρτηση που θέλω να επιστρέφει τιμή μηδέν γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 11 10-01-15 14:06
Ερώτημα μετάφρασης text σε αριθμό μήδεν ( 0 ) γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 3 07-02-14 05:09
[ Ερωτήματα ] Όπου το πεδίο είναι κενό να παίρνει την τιμή 0 (μηδέν) mousatos Access - Ερωτήσεις / Απαντήσεις 3 01-01-14 17:29


Η ώρα είναι 10:12.