Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [VBA] Δημιουργία κουμπιού για εκτέλεση συνάρτησης (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/1853-dimioyrgia-koympioi-gia-ektelesi-synartisis.html)

choulio19 08-05-12 18:14

Δημιουργία κουμπιού για εκτέλεση συνάρτησης
 
Καλησπέρα. Σε ένα excel έχω την παρακάτω συνάρτηση

Κώδικας:

=INDEX(B19:B195;RANDBETWEEN(1;177))
Και θέλω να φτιάξω ένα κουμπί με το οποίο όταν το πατάω να εκτελείται η συνάρτηση αυτή και να μου εμφανίζει ένα όνομα από αυτά.. Είναι για τυχαία επιλογή ονόματος. Ευχαριστώ

Spirosgr 08-05-12 20:21

Ένας τρόπος είναι ο πιο κάτω

Ονομάζουμε την περιοχή Β19:Β195 area
Αριθμούμε Α19:Α195 από το 1 έως το 177
κώδικας σε Module
Sub Macrorandnames()
Range("A1").FormulaR1C1 = "=RANDBETWEEN(1,177)"
End Sub

οι τύποι στα κελιά Α1, Α2
A1 =RANDBETWEEN(1;177)
A2 =INDEX(area;A1)
ή όπου αλλού θέλουμε

Φτιάχνουμε ένα κουμπί και του περνάμε την εντολή

choulio19 08-05-12 21:35

Παράθεση:

Αρχική Δημοσίευση από spirosgr (Μήνυμα 10808)

οι τύποι στα κελιά Α1, Α2
A1 =RANDBETWEEN(1;177)
A2 =INDEX(area;A1)
ή όπου αλλού θέλουμε

Φτιάχνουμε ένα κουμπί και του περνάμε την εντολή

Ευχαριστώ για την απάντηση σου... Έκανα όσα μ είπες...Το κομμάτι ώμος που έχω παραθέσει δεν έχω καταλάβει..Με το που πατάω το κουμπί μου εμφανίζει αριθμούς όχι ονόματα..

Spirosgr 08-05-12 21:38

1 Συνημμένο(α)
Δες κι αυτό το συνημμένο

choulio19 08-05-12 21:42

1 Συνημμένο(α)
Παράθεση:

Αρχική Δημοσίευση από choulio19 (Μήνυμα 10809)
Ευχαριστώ για την απάντηση σου... Έκανα όσα μ είπες...Το κομμάτι ώμος που έχω παραθέσει δεν έχω καταλάβει..Με το που πατάω το κουμπί μου εμφανίζει αριθμούς όχι ονόματα..

δες πως το έκανα εγώ

Spirosgr 08-05-12 21:53

1 Συνημμένο(α)
Αφού άλλαξες θέση στον τύπο άλλαξε κι αυτόν από Α1 (που ήταν στο παράδειγμα) με το Κ12 που είναι στην πραγματικότητα για να δουλέψει

=INDEX(area;K12)

choulio19 08-05-12 22:10

Το κατάλαβα...Ευχαριστώ πάρα πολύ. Καλό βράδυ

Spirosgr 09-05-12 07:18

Καλημέρα
Παρατήρησα ότι και στον κώδικα έχεις αλλάξει το Range σε J12
Άρα για να είναι όλα σωστά πρέπει:
ή αν έχεις την RANDBETWEEN στο Κ12 και την INDEX στο K13 να βάλεις για Range στον κώδικα Κ12 και να διαγράψεις την RANDBETWEEN από το J12
ή αν θέλεις οπωσδήποτε το J12 στον κώδικα άλλαξε την INDEX που είναι στο Κ13 σε =INDEX(area;J12) και διέγραψε την RANDBETWEEN από το Κ12 για να μην έχεις 2 κελιά που θα εκτελούν τους τυχαίους αριθμούς
Γενικά αν θέλεις να το χρησιμοποιήσεις και αλλού ακολούθησε τον κανόνα
Το κελί που θα εκτελείται η RANDBETWEEN μπαίνει στον κώδικα ως Range
Όπου θέλεις βάλε την INDEX αλλά το κελί που "παίρνει" να είναι αυτό που εκτελείται η RANDBETWEEN

gr8styl 09-05-12 13:39

Καλημέρα σας
Θα ήθελα να πω ότι με τις μέχρι τώρα προτάσεις, το J12 (άρα και το τυχαίο όνομα) αλλάζει τιμή κάθε φορά που το Excel κάνει υπολογισμό και όχι μόνο όταν πατάμε το κουμπί !!!

Δεν είμαι σίγουρος για το ποιο είναι το ζητούμενο αλλά, :023:

Για να αλλάζει ΜΟΝΟ (αλλιώς νομίζω δεν έχει νόημα) όταν πατάμε το κουμπί, η μακροεντολή πρέπει να καταχωρεί τυχαία τιμή στο κελί J12 και όχι τύπο.

Range("J12").Value = Int(177 * Rnd) + 1

Το 177 βέβαια καλό θα είναι να είναι δυναμικό δηλαδή Range("area").Rows.Count άρα θα πρότεινα
Κώδικας:

Sub Macrorandnames()
Randomize
Range("J12").Value = Int(Range("area").Rows.Count * Rnd) + 1
End Sub

Ο τύπος που μας δίνει το τυχαίο όνομα είναι
=INDEX(area;J12)

Φιλικά
Θανάσης
ΥΓ. Αν θέλουμε τυχαίο όνομα όταν γίνεται υπολογισμός και όχι ΜΟΝΟ όταν πατάμε το κουμπί, δεν χρειάζεται VBA και κουμπί. Αρκεί ο τύπος: =INDEX(area;INT(RAND()*COUNTA(area))+1) και F9 για να προκαλέσουμε υπολογισμό.

Spirosgr 09-05-12 18:37

Ναι Θανάση έχεις δίκιο
Δεν απέκλεισα τον τυχαίο υπολογισμό όταν υπολογίζει η excel


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

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2