Μετάβαση στο περιεχόμενο
Ακολουθήστε τη νέα μας σελίδα στο Facebook! ×

Excel - απορίες, βοήθεια επί του προγράμματος


GeorgeS

Recommended Posts

Οντως, excel-lent είναι η λύση του Gousgounis, αλλά κάνε το καλό, και πες ποιές είναι οι παράμετροι που θα πρέπει να μπουνε στην συνάρτηση που έδωσες, στην γενική περίπτωση που έχουμε Μ γραμμές και Ν στήλες;

Link to comment
Share on other sites

Τελικά το βρήκα και παραθέτω τον κώδικα:

 

>      PROGRAM SEIRA
     DIMENSION A(8,183)
   !Ορίζεις τις διαστάσεις του αρχικού σου πίνακα, εδω οχ 8 γραμμές χ 183 στήλες
     OPEN (1, FILE = 'input.txt')
     !Ανοίγεις το αρχείο των δεδομένων εισόδου σου.
     DO I=1,8
     READ (1,*)(A(I,J),J=1,183)
   !Το πρόγραμμα διαβάζει τα δεδομένα.
     ENDDO
     CLOSE (1)
     OPEN (2, FILE = 'out.txt')
   ! Ανοίγει το αρχείο εξόδου
     DO I=1,183
        DO J=1,8
        WRITE (2,*)A(J,I)
   ! Γράφει τα αρχεία εξόδου με τέτοιο τρόπο ώστε να δημιουργηθεί μια σειρά με 1464 γραμμές = 8 χ 183
      ENDDO
     ENDDO
     CLOSE (2)
     STOP
     END

Gousgounis: Για εξήγησε λίγο σε παρακαλώ την σύνταξη. Πχ, αν έχω τα εξής δεδομένα στα κελιά Α1 έως D5:

1 2 3 4 7

3 5 4 6 9

5 3 1 2 0

7 8 6 4 3

Πως θα πρέπει να συντάξω την εντολή που παρέθεσες ώστε να μου βγει μια στήλη με τα 20 αυτά στοιχεία?

 

Ευχαριστώ εκ των προτέρων... :wink:

Link to comment
Share on other sites

Μπράβο παίδες .

 

 

Τώρα αν ο gvarth έχει καμιά καλή ιδέα είμαι όλος αυτιά! :smile:

 

Ο gvarth για λίγες μέρες βρίσκεται σε οικογενειακές διακοπές. ;) .

Όποιος είναι online και γνωρίζει , απαντά.

 

@Gousgounis : Μπράβο !

 

Μια και την INDIRECT δεν την πολυχρησιμοποιώ, εκείνο που θα πρότεινα είναι κάτι σαν τον κώδικα του Samdreamth αλλά σε Excel VBA. Πάντως η INDIRECT θα δίνει τα πιο γρήγορα αποτελέσματα σαν εσωτερική συνάρτηση της βιβλιοθήκης συναρτήσεων του Excel.

 

Περισσότερα για την INDIRECT θα διαβάσετε μεταξύ των άλλων εδώ ή και εδώ .

Link to comment
Share on other sites

Ζάχο: Επειδή κοιτούσα το excel έχω την εξής απορία (ίσως είναι και χαζή αλλά την ρωτάω): μέσα στην συνάρτηση που βάζει για να κάνει τον πίνακα 1 σειρά (με πολλές γραμμές), χρησιμοποιεί το matrix. Πως ορίζει ότι ο πίνακας είναι ο C3:J8?

Κάτι χάνω κάπου... :sad:

 

Και μια άλλη άσχετη απορία:

Θέλω να γράψω μια συνάρτηση στην οποία να έχει πολλά if, και δυστυχώς με τη nested if έχω περιορισμό στα 7 if.

Για να σας δώσω να καταλάβετε έχω το εξής θέμα:

Α1 κενό κελί

Β1

C1

D1

...

 

Και θέλω να κάνω κάτι σαν κενό κελί = if(A1 = 1;"Ω";if(A1=2;X";"") αλλά έχω πολλά if.

Φαντάζομαι ότι με VB γίνεται (για να μην καταφύγω σε fortran), σωστά?

Μπορεί κανένα καλό παιδί να με βοηθήσει?

Ευχαριστώ και πάλι... :wink:

Link to comment
Share on other sites

Παίδες σας ευχαριστώ όλους. Χρησιμοποίησα του Ζάχου και βγήκε πολύ έυκολα!

Παρόμοιο πρέπει να είναι και του Gousgounarou, αν και δεν το δοκίμασα.

 

Samdreamth δεν είμαι εγώ για Fortran:D:D:D...πάντως ευχαριστώ!

Link to comment
Share on other sites

Για το πρώτο σκέλος

 

Νομιζω οτι γίνεται πολύ απλά .Γράφεις τον πίνακα όπως τον θες ,τον επιλέγεις (μαρκάρεις) και πατάς Εισαγωγή-->όνομα--> ορισμός

και βάζεις το όνομα που θες (στο παράδειγμα matrix)

 

απότε από εκεί και πέρα αναφέρεσαι σαν matrix ή όποιο άλλο όνομα στα συγκεκριμένα κελιά (χρήσιμο γενικότερο)

 

εντιτ : και του gousgouni δουλεύει άψογα απλώς είχα το worksheet από παλιότερα και δουλεύω πάνω σε αυτό :razz: , αν κάτι δουλεύει μην το πολυπειράζεις (Merfy)

Link to comment
Share on other sites

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

 

Έστω ότι έχουμε πολλές στήλες και σειρές με αριθμούς.

 

Πώς θα μπορέσω όλες τις στήλες να τις μεταφέρω κάτω από την 1η, έτσι ώστε να έχω μόνο 1 στήλη με όλους τους αριθμούς;

 

Εκτός από τις λύσεις που εδόθησαν, μια ακόμη είναι και η χρήση του παρακάτω τύπου

ο οποίος δημιουργεί μια στήλη με τις τιμές του πίνακα "Matrix" σε αύξουσα ταξινόμηση:

>=SMALL(Matrix;ROW(a1))

Το κακό με αυτή τη λύση είναι πως το 0 (μηδέν) εμφανίζεται πριν το 1 και όχι μετά το 9.

 

Αν αυτό δεν είναι επιθυμητό, τότε μπορούμε να χρησιμοποιήσουμε τον παρακάτω τύπο αναφοράς,

ο οποίος αντιγράφει κατακόρυφα τις τιμές του πίνακα "Matrix" με τη σειρά που αυτές εμφανίζονται.

>=INDEX(Matrix;MOD(ROW(a1)-1;2)+1;INT((ROW(a1)-1)/2)+1)

Στην πραγματικότητα, είναι απλώς μια παραλλαγή του τύπου που μας έδωσε ο Gousgounis

και όπως άλλωστε θα περίμενε κανείς, είναι αρκετά μικρότερος από του Gousgouni.:razz:

 

Οι παραπάνω λύσεις, υποθέτουν πως ο αρχικός πίνακας τιμών διαθέτει 2 γραμμές

και άγνωστες στήλες και φέρει το όνομα Matrix.

Ελπίζω να φανούν χρήσιμες...:)

  • Upvote 1
Link to comment
Share on other sites

Μην ανησυχείς jackson! Έχουμε λύσεις για όλα τα γούστα!:P

 

Με την αυτή την έκδοση, παύεις πλέον να ανησυχείς για το μέγεθος του ...πίνακά σου:

>=INDEX(Matrix;MOD(ROW(a1)-1;ROWS(Matrix))+1;INT((ROW(a1)-1)/ROWS(Matrix))+1)

αρκεί το όνομα "Matrix" να περιλαμβάνει όλα τα κελιά του πίνακα τιμών.

 

Φυσικά τα ίδια ισχύουν και για τον πρώτο τύπο, τον ...Small στο μάτι.8-)

  • Upvote 2
Link to comment
Share on other sites

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε προκειμένου να αφήσετε κάποιο σχόλιο

Πρέπει να είστε μέλος για να μπορέσετε να αφήσετε κάποιο σχόλιο

Δημιουργία λογαριασμού

Κάντε μια δωρεάν εγγραφή στην κοινότητά μας. Είναι εύκολο!

Εγγραφή νέου λογαριασμού

Σύνδεση

Εάν έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
×
×
  • Create New...

Σημαντικό

Χρησιμοποιούμε cookies για να βελτιώνουμε το περιεχόμενο του website μας. Μπορείτε να τροποποιήσετε τις ρυθμίσεις των cookie, ή να δώσετε τη συγκατάθεσή σας για την χρήση τους.