Excel: Άλγεβρα μηδέν…και με τον κηδεμόνα σου.

Αυτή είναι μια αριθμητική (αλγεβρική) παράσταση:
5*(3+2)-4²+3
Για να γίνει ο υπολογισμός της στο excel θα γραφτεί έτσι ακριβώς σε ένα κελί, φυσικά με ίσον μπροστά:
=5*(3+2)-4^2+3
και το excel θα την υπολογίσει σωστά (=12), εφαρμόζοντας την ίδια σειρά των πράξεων (τελεστών), όπως και στην άλγεβρα, όπως δηλαδή μαθαίνει ένας μαθητής από τις πρώτες τάξεις του γυμνασίου. Πρώτα οι πράξεις στις παρενθέσεις, μετά οι πολλαπλασιασμοί και οι δυνάμεις και τέλος οι προσθαφαιρέσεις. Με μία όμως εξαίρεση. Γράψτε σε ένα κελί:
=-5^2-5^2+(-5^2)
Η παράσταση αυτή με τους κανόνες της άλγεβρας δίνει αποτέλεσμα –75 ενώ το excel θα σας δώσει αποτέλεσμα 25. Ποιος έχει δίκιο; Ας καλέσουμε για διαιτητή την VBA. Τρέξτε την παρακάτω απλή μακροεντολή:
Sub test()
Dim A
A = -5 ^ 2 - 5 ^ 2 + (-5 ^ 2)
MsgBox A
End Sub
Θα δείτε ότι η VBA θα συμφωνήσει με την άλγεβρα:
Πόσο κάνει -5²-5²+(-5²)

Πόσο κάνει -5²-5²+(-5²)

Το καημένο το φύλλο ούτε στην ίδια την οικογένειά του δεν βρίσκει υποστηρικτές της άποψης του!  Ας δούμε όμως γιατί το φύλλο κάνει διαφορετικό υπολογισμό. Την απάντηση θα τη βρούμε στο θέμα “Τελεστές υπολογισμού και προτεραιότητες” στην υποστήριξη της Microsoft. Η σειρά με την οποία το excel εκτελεί πράξεις σε τύπους είναι:
– Αρνητικοί αριθμοί (όπως στο -1)
^ Ύψωση σε δύναμη
* και / Πολλαπλασιασμός και διαίρεση
+ και – Πρόσθεση και αφαίρεση
Στον παραπάνω τύπο το πρώτο πλην (-) θεωρείται από το φύλλο, πρόσημο αρνητικού αριθμού, το δεύτερο πλην θεωρείται αφαίρεση και το τρίτο πλην πάλι πρόσημο, δηλαδή το φύλλο διαβάζει:
= -5^2-5^2+(-5^2) 
= (-5)^2-5^2+((-5)^2)
= 25-25+25=25
Δεν σας έπεισα;
Γράψτε σε ένα κελί: -5^2 και σε ένα άλλο κελί 0-5^2. Οι παραστάσεις αυτές είναι ισοδύναμες αλγεβρικά αλλά το φύλλο επιστέφει 25 για την πρώτη και -25 για τη δεύτερη. Η άλγεβρα (και η VBA) υπολογίζει τον τελεστή ύψωσης σε δύναμη (^) πριν από τον τελεστή αρνητικού πρόσημου (-), ενώ το φύλλο του excel υπολογίζει πρώτα το αρνητικό πρόσημο. Έτσι, ο τύπος =-5^2 δίνει τιμή -25 στην άλγεβρα , αλλά στο φύλλο επιστρέφει 25. Στην περίπτωση 0-5^2 το πλην εκλαμβάνεται από το φύλλο σαν τελεστής αφαίρεσης, έτσι υπολογίζει πρώτα τη δύναμη και επιστρέφει -25, όπως ακριβώς και η άλγεβρα. Γενικά, φαίνεται πως, ο τελεστής πλην (-) εκλαμβάνεται σαν πρόσημο αρνητικού αριθμού και ο υπολογισμός του προηγείται της δύναμης, όταν είναι στην αρχή μιας παράστασης ή όταν είναι αμέσως μετά από μία παρένθεση που ανοίγει. Όταν ο τελεστής πλην (-) είναι αμέσως μετά από έναν άλλο αριθμό ή μετά από μια παρένθεση που κλείνει εκλαμβάνεται σαν αφαίρεση και ο υπολογισμός του γίνεται μετά τον υπολογισμό της δύναμης.
Η υποστήριξη της Microsoft, για την αντιμετώπιση αυτού του προβλήματος, προτείνει τη χρησιμοποίηση παρενθέσεων ώστε να αλλάξει η σειρά των υπολογισμών. Δηλαδή αν θέλετε να έχετε από τον τύπο =-2^4 αποτέλεσμα -16 πρέπει να το γράψετε =-(2^4). Εναλλακτικά, εγώ θα σας πρότεινα να γράψετε =-1*2^4, δηλαδή αντικατάσταση του πλην (-) με τον συντελεστή -1, για όσα πλην έχετε αμφιβολία ή καλλίτερα όλα για να είστε σίγουροι. Παράδειγμα, για την παρακάτω παράσταση:
=-3^2-5^2+7-2^2+2*(-4^2-3^2)
το φύλλο δίνει αποτέλεσμα 1, ενώ η άλγεβρα -81. Το πρόβλημα είναι οι δύο κόκκινες δυνάμεις που υπολογίζονται από το φύλλο +9 και +16 αντίστοιχα. Για να έχετε αποτέλεσμα σύμφωνο με τους κανόνες της άλγεβρας, διορθώστε την παράσταση έτσι:
=-(3^2)-5^2+7-2^2+2*(-(4^2)-3^2)
Ή έτσι:
=-1*3^2-5^2+7-2^2+2*(-1*4^2-3^2)
Ή αλλάξτε όλα τα – σε -1* :
=-1*3^2-1*5^2+7-1*2^2+2*(-1*4^2-1*3^2).
Αριθμητικές παραστάσεις και ο υπολογισμός τους από το excel

Αριθμητικές παραστάσεις και ο υπολογισμός τους από το excel

Αν έχετε φύλλα excel με τέτοιες παραστάσεις και θέλετε αποτελέσματα σύμφωνα με τους κανόνες της άλγεβρας, η παρακάτω ρουτίνα θα σας διευκολύνει στον έλεγχο τους.
Sub AlgebraCalculator()
Dim k As Integer
Dim kelia As Range
Dim keli As Range
Dim ErrorAddress As String
Dim CorrectValue As Variant
Set kelia = Nothing
On Error Resume Next
Set kelia = Intersect(Selection, Selection.SpecialCells(xlCellTypeFormulas, 1))
If kelia Is Nothing Then GoTo telos
On Error GoTo 0
For Each keli In kelia
CorrectValue = Evaluate(Replace(keli.Formula, "-", "-1*"))
If keli.Value <> CorrectValue Then
k = k + 1
ErrorAddress = keli.Address(0, 0)
MsgBox "κελί: " & ErrorAddress & vbLf & "τύπος: " _
 & keli.Formula & vbLf & "σωστό: " & CorrectValue
End If
Next
If k = 0 Then MsgBox "Δεν βρέθηκαν λάθη"
telos:
End Sub
Επιλέξτε τα ύποπτα κελιά και τρέξτε τη μακροεντολή AlgebraCalculator. Για όσα
κελιά βρει διαφορετικό αλγεβρικό αποτέλεσμα θα εμφανίσει μήνυμα, όπως στην πιο κάτω εικόνα.
μακροεντολή AlgebraCalculator

μακροεντολή AlgebraCalculator

Διαβάστε σχετικά θέματα στην υποστήριξη της Microsoft:
Τελεστές υπολογισμού και προτεραιότητες
Διαφορές υπολογισμού μεταξύ τύπων του Microsoft Excel και του Lotus 1-2-3
This entry was posted in excel, Γενικά, Μακροεντολές, Συναρτήσεις φύλλου, VBA and tagged , , , , , , , . Bookmark the permalink.

4 Responses to Excel: Άλγεβρα μηδέν…και με τον κηδεμόνα σου.

  1. Ο/Η Ani leo λέει:

    καλησπέρα
    Πως μπορείς στο excel να υπολογίσεις τις διαφορές δηλαδή αν έχω βάλει στην στήλη Α διάφορες τιμές.Πως μπορώ να υπολογίσω τα b2=a2-a1 kai b3=a3-a2 kai b4=a4-a3 ……………

  2. Ο/Η vioannis λέει:

    Αν το πληκτρολόγιο σου είναι στα ελληνικά γύρισέ το στα αγγλικά και στο κελί Β2 γράψε =a2-a1 και πάτα enter. Στη συνέχεια κάνε αντιγραφή του κελιού Β2 και επικόλληση στα κελιά Β3 έως Β… όσο θέλεις. (αν ζητάς κάτι άλλο που δεν κατάλαβα, μπορείς να επανέλθεις)

  3. Ο/Η Anonymous λέει:

    Με έχει εξυπηρετήσει πάρα πολύ!!!

Τα σχόλια είναι απενεργοποιημένα.