Προς το περιεχόμενο

Μετατροπή αριθμητικών δεδομένων σε παράσταση κειμένου σε Excel


engant

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα έχω την εξής απορία....έστω ότι έχουμε ένα πίνακα με στοιχεία--->τεμάχια, ύψος, βάθος, πλάτος και αριθμητικές τιμές αντίστοιχα---->2, 3, 4, 5

1. πως θα γίνει με συνάρτηση να φαίνεται σε κάποιο κελί ως παράσταση κειμένου τύπου: 2χ3χ4χ5 =??

2. επίσης αν έχω αναλυτικά ένα ύψος π.χ. 7μ και θέλω να το γράψω 3 και 4 (3+4) ---->2χ (3+4)χ4χ5 =??

3. Αν τεμάχιο =1 πως θα γίνει να μη φαίνεται στη παράσταση αλλά φυσικά να λαμβάνεται υπόψη στις πράξεις--->3χ4χ5 =?? Παρακαλώ τη βοήθειά σας

Δημοσ.

Σε ποιο πρόγραμμα συγκεκριμένα αναφέρεσαι; Ίσως θα ήθελες να το ξεκαθαρίσεις και στον τίτλο του θέματος.

  • 2 εβδομάδες αργότερα...
Δημοσ.

Γεια και χαρά σε όλους!

 

Φίλε engant, αν η περιοχή A1:D1 περιέχει τις τιμές 1,2,3,4

και το κελί Ε1 περιέχει τον τύπο που τις πολλαπλασιάζει,

τότε η συνάρτηση =CONCATENATE(A1;"x";B1;"x";C1;"x";D1;"=";E1)

επιστρέφει το "1x2x3x4=24" (χωρίς τα εισαγωγικά).

 

Αν είναι αυτό που θέλεις, δεν έχεις παρά να την προσαρμόσεις

και για τις υπόλοιπες περιπτώσεις.

 

Ελπίζω να βοηθάει.

Δημοσ.

Θα το δοκιμάσω φίλε και σε ευχαριστώ...

 

 

-----Προστέθηκε 31/1/2009 στις 07 : 57 : 18-----

 

 

Το δοκίμασα και δυστυχώς δεν είναι αυτό που ζητάω

Έχω πχ πίνακα τιμών μίας γραμμής :1 , 2 , 3 , 4, 5....Το επόμενο κελί με αριθμητική παράσταση θα υπολογίζει το : (1+2)*3-(4/5) = αποτέλεσμα Α

Θα ήθελα η παράσταση αυτή που υπολογίζεται ως αποτέλεσμα Α να εμφανίζεται ως κείμενο όπως τη βλέπουμε σε ένα άλλο κελί...

Δημοσ.

Για να καταλάβω φίλε engant, θέλεις να φαίνεται ο τύπος όπως και στη γραμμή τύπων;

Δηλαδή με τις αναφορές των κελιών; Π.χ. (A1+B1)*C1-(D1/E1)=F1

Ή με τις τιμές των κελιών; Π.χ. (1+2)*3-(4/5)=8,2

 

Αν είναι το δεύτερο γίνεται με τον παρακάτω τύπο:

>=CONCATENATE("(";A1;"+";B1;")*";C1;"-(";D1;"/";E1;")=";F1)

Αλλιώς θα χρειαστείς την παρακάτω προσαρμοσμένη συνάρτηση

η οποία προσφέρει και μέγιστη ευελιξία:

 

>Function CellFormulla(rngRef As Range) As String
   Dim strTemp As String
   Application.Volatile
   If rngRef.HasFormula Then
       strTemp = Right(rngRef.FormulaLocal, Len(rngRef.FormulaLocal) - 1)
       strTemp = strTemp & "=" & rngRef.Address(0, 0)
   End If
   CellFormulla = strTemp
End Function 

 

Αν χρειαστείς οδηγίες χρήσης της ...φώναξε.:-)

Δημοσ.

Καλημέρα και ευχαριστώ για την απάντησή σου πρώτα από όλα...

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

Τώρα όσον αναφορά το δεύτερο , δωσε μου σε παρακαλώ τα φώτα σου...Σε ένα Φύλλο 1, βάζω σε κάποια κελιά αριθμούς, σε ένα κάνω την αριθμητική πράξη και έχω το αποτέλεσμα...Κάνω προβολή κώδικα στο Φύλλο 1 και γράφω το κείμενο που έγραψες...Μετά όμως δε ξέρω τη χρήση του...Πες μου αναλυτικά αν μπορείς σε παρακαλώ τι να κάνω...

Ευχαριστώ

Δημοσ.

Το ότι θα πρέπει να προσαρμόζεις τον τύπο που σου έδωσα για κάθε ομάδα τύπων

που θέλεις να απεικονίσεις, ομολογώ πως είναι το βασικό "κατά" αυτής της λύσης.

 

Η άλλη λύση δεν έχει αυτό το πρόβλημα αλλά δεν ξέρω αν σου δίνει ακριβώς

αυτό που ζητάς. Η "CellFormulla" είναι μια προσαρμοσμένη συνάρτηση χρήστη (UDF).

Θα πρέπει να εισάγεις τον κώδικά της σε μια στάνταρ λειτουργική μονάδα κώδικα.

Στο περιβάλλον της Visual Basic, από το μενού "Insert" πάτα στο "Module".

Αφού επικολλήσεις στη νέα module τον κώδικα της CellFormulla μετά θα μπορείς

να τη χρησιμοποιήσεις όπως και τις συναρτήσεις του Excel.

Θα τη βρείς στην κατηγορία "Συναρτήσεις χρήστη" ή "User Defined".

 

Για παράδειγμα αν στο κελί F1 υπάρχει ο τύπος =(A1+B1)*C1-(D1/E1)

τότε η συνάρτηση =CellFormulla(F1) επιστρέφει το (A1+B1)*C1-(D1/E1)=F1.

 

Ελπίζω να βοηθάω...

Δημοσ.

Σε ευχαριστώ για ακόμη μία φορά αλλά μάλλον δεν είναι αυτό που ζηταω...Εν μέρει είναι αυτό αλλά εγώ θέλω να βάση συνάρτησης να εμφανίζει την αριθμητική παράσταση με αριθμούς και όχι με τα κελιά...δεν ξέρω αν σ αυτό τον κώδικα μπαίνει κάποια μετατροπή ώστε να έχω τις τιμές των κελιών και όχι τον αριθμό του κελιού(Α1,Α2 κλπ)...Όπως και να έχει με βοήθησες...

Δημοσ.

Τον δικό σου τον κώδικα το χρησιμοποίησα όπως μου είπες και μου δινε αποτέλεσμα...Χρησιμοποίησα και τις υπόλοιπες φορμουλες σ αυτό που με παράθεσες αλλά δεν μου βγάζουν καμία και κανένα αποτέλεσμα...Δε ξέρω μήπως τις χρησιμοποιώ λανθασμένα..Βάζω τιμές στα Α1, Β1, C1, D1 ζητώ αριθμητικό αποτέλεσμα στο Ε1 και στο G1 βάση της εκάστοτε function που δοκίμασα την ανάπτυξη ως κείμενο του Ε1...Αλλά δε μου βγάζει τίποτα(#ονομα#)...Βοήθεια ξανά παρακαλώ...Μηπως βγάλω εντέλει κάποια άκρη τελικά...

Δημοσ.
Θα το δοκιμάσω φίλε και σε ευχαριστώ...

 

 

-----Προστέθηκε 31/1/2009 στις 07 : 57 : 18-----

 

 

Το δοκίμασα και δυστυχώς δεν είναι αυτό που ζητάω

Έχω πχ πίνακα τιμών μίας γραμμής :1 , 2 , 3 , 4, 5....Το επόμενο κελί με αριθμητική παράσταση θα υπολογίζει το : (1+2)*3-(4/5) = αποτέλεσμα Α

Θα ήθελα η παράσταση αυτή που υπολογίζεται ως αποτέλεσμα Α να εμφανίζεται ως κείμενο όπως τη βλέπουμε σε ένα άλλο κελί...

 

Σε ευχαριστώ για ακόμη μία φορά αλλά μάλλον δεν είναι αυτό που ζηταω...Εν μέρει είναι αυτό αλλά εγώ θέλω να βάση συνάρτησης να εμφανίζει την αριθμητική παράσταση με αριθμούς και όχι με τα κελιά...δεν ξέρω αν σ αυτό τον κώδικα μπαίνει κάποια μετατροπή ώστε να έχω τις τιμές των κελιών και όχι τον αριθμό του κελιού(Α1,Α2 κλπ)...Όπως και να έχει με βοήθησες...

 

για να εμφανίζεται η πράξη αρκεί να πατήσεις

CONTROL + ` (αριστερα απο το 1) .

 

τωρα θες να σου εμφανίζει και τα νούμερα και όχι τα κελιά ε?

 

ενδιαφέρον. θα το ψαξω λίγο

Δημοσ.

Φίλε engant,

ο κώδικας VBA των προσαρμοσμένων συναρτήσεων χρήστη θα πρέπει να επικολληθεί

σε μια κανονική λειτουργική μονάδα κώδικα (module) στο περιβάλλον του

Visual Basic Editor (VBE), όχι στη λειτουργική μονάδα κώδικα του φύλλου.

 

Στη συνέχεια εμφανίζονται στο παράθυρο του Excel "Εισαγωγή συνάρτησης"

και στην κατηγορία "Συναρτήσεις χρήστη".

 

Το σφάλμα #Όνομα? σημαίνει ότι το Excel δεν αναγνωρίζει κάποιο κείμενο

που έχεις εισάγει στον τύπο.

Ίσως εισάγεις αναφορές κελιών με ελληνικούς χαρακτήρες.

Φρόντισε να εισάγεις τους τύπους με πεζούς και λατινικούς χαρακτήρες.

Αν είναι σωστά τα όσα εισάγεις, το Excel τα μετατρέπει σε κεφαλαία.;)

Δημοσ.
Φίλε engant,

ο κώδικας VBA των προσαρμοσμένων συναρτήσεων χρήστη θα πρέπει να επικολληθεί

σε μια κανονική λειτουργική μονάδα κώδικα (module) στο περιβάλλον του

Visual Basic Editor (VBE), όχι στη λειτουργική μονάδα κώδικα του φύλλου.

 

Στη συνέχεια εμφανίζονται στο παράθυρο του Excel "Εισαγωγή συνάρτησης"

και στην κατηγορία "Συναρτήσεις χρήστη".

 

Το σφάλμα #Όνομα? σημαίνει ότι το Excel δεν αναγνωρίζει κάποιο κείμενο

που έχεις εισάγει στον τύπο.

Ίσως εισάγεις αναφορές κελιών με ελληνικούς χαρακτήρες.

Φρόντισε να εισάγεις τους τύπους με πεζούς και λατινικούς χαρακτήρες.

Αν είναι σωστά τα όσα εισάγεις, το Excel τα μετατρέπει σε κεφαλαία.;)

 

Καλημέρα φίλε...

κάνω ένα νέο αρχείο excel...στο φυλλο 1 πατάω δεξί κλίκ και μπαίνω στο module...εκει επικόλλησα το κείμενο...

Function gfrv(r As Range) As String

'watch for line wrapping in the next two statements

'there should be two nonblank, noncomment lines

'starting with Const followed by a blank line

Const crep As String = "(([A-Za-z0-9_]+|'[^']+')!)?\$?[A-Z]{1,2}\$?[0-9]+"

Const mrep As String =

"(([A-Za-z0-9_]+:[A-Za-z0-9_]+|'[^']+:[^']+')\!)|(\$?[A-Z]{1,2}\$?[0-9]+:\$ ?

[A-Z]{1,2}\$?[0-9]+)"

Dim v As Variant, n As Long

Dim regex As Object, matches As Object, m As Object

Application.Volatile 'modify as needed

gfrv = Mid(r.formula, 2)

Set regex = CreateObject("vbscript.regexp")

regex.Global = True

regex.Pattern = mrep

Set matches = regex.Execute(gfrv)

If matches.Count > 0 Then Exit Function

regex.Pattern = crep

Set matches = regex.Execute(gfrv)

n = matches.Count - 1

For n = n To 0 Step -1

Set m = matches.Item(n)

v = Evaluate(m.Value)

gfrv = Left(gfrv, m.FirstIndex) & CStr(v) & _

Mid(gfrv, m.FirstIndex + m.Length + 1)

Next n

End Function

 

στη συνέχεια πήγα πίσω στη λειτουργία του excel, έβαλα τιμές σε κάποια κελιά a1,b1,c1 κλπ...έβαλα ένα μαθηματικό τύπο στο e1 και προσπάθησα στο f1 να βάλω =gfrv(e1) αλλά μου βγάζει #τιμή#(έχει λάθος αυτό το module στο Function gfrv(r As Range) As String και Const mrep As String =)...αυτό συνέβη και παρακάτω δοκιμάζοντας και τα υπόλοιπα module του http://www.planetexcel.gr/modules/newbb/viewtopic.php?viewmode=thread&type=&topic_id=1213&forum=3

αλλά τίποτα....Κάτι θα κάνω λάθος....

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...