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

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

Δημοσ.

Καλησπέρα.

Προσπαθώ να βρω τον vb κώδικα σε excel που να κάνει το ακόλουθο:

Ας υποθέσουμε ότι σε μία εταιρία υπάρχουν 40 εργαζόμενοι. Έχω φτιάξει ένα αρχείο Excel ως εξής:

Έχω 40 worksheets (το κάθε ένα με το επώνυμο τού κάθε εργαζομένου), και στο κάθε worksheet, στο κελί a1 γράφει: ΕΠΩΝΥΜΟ

Υπάρχει και ένα ακόμη worksheet (π.χ. ας το ονομάσουμε worksheet-41) που έχω τα επώνυμα των εργαζομένων το ένα κάτω απ' το άλλο: απ' το κελί a1 έως a40.

Οπότε, προσπαθώ να βρω τον κώδικα που να πηγαίνει στο worksheet-41       40 φορές (κάθε φορά στο κάθε επώνυμο), και κάθε φορά να αντιγράφει το επώνυμο τού κάθε εργαζομένου στο αντίστοιχο worksheet και στο κελί Α2. Αντί να το κάνω manually, με έναν κώδικα θα γίνει αμέσως.

Μπορεί κάτι τέτοιο να γίνει με κώδικα;

Ευχαριστώ!

Δημοσ. (επεξεργασμένο)

Όχι, GPT δεν το σκέφτηκα. Δεν το έχω ξαναδουλέψει. Για να δούμε εάν θα καταφέρω να το ζητήσω.

Μέσω GPT δούλεψε. Όχι όπως το έχω στην εκκίνηση. Δεν πάει να διαβάσει από τη λίστα 40, αλλά πάει σε κάθε sheet, και αντιγράφει το όνομα της καρτέλας στο A2.

 

Sub CopySheetNameToA2()


    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Sheets
        ws.Range("A2").Value = ws.Name
    Next ws

End Sub

Επεξ/σία από johnyb98
Δημοσ.

"Διόρθωσε" το και πες του ακριβώς τι να κάνει. Σε εμένα, στις περισσότερες περιπτώσεις μου λύνει τα χέρια. Αν δεν το κάνει 100% όπως το θέλω, το φτάνει πολύ κοντά και μετά είναι εύκολο να το παραμετροποιήσεις.

Δημοσ.

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

Δημοσ.

Κοτζαμ εταιρεία με 40 νοματαιους και ασχολείστε με μπακαλοτεφτερα σε Excel...

40 φύλλα.. μόλις βάλεις κάτι παραπάνω μέσα θα χαθεί η μπάλα.... θες μια βάση φίλε μου,να γίνει σωστή η δουλειά.

Αν θες το συζητάμε με μήνυμα 

Δημοσ.

Καλημέρα σας,

Στο φύλλο worksheet-41 δοκίμασε τον παρακάτω κώδικα, αν σε διευκολύνει:

Option Explicit

Sub ERGAZOMENOI()
    Dim I As Byte, R As Byte, Sht As Worksheet
    R = Range("A" & Rows.Count).End(xlUp).Row
    
    For I = 1 To R
        For Each Sht In ThisWorkbook.Worksheets
            If Sht.Name = Range("A" & I).Value Then
                Sht.[A2] = Range("A" & I).Value
                Exit For
            End If
        Next
    Next
End Sub

Ο παραπάνω κώδικας διαβάζει ένα-ένα τα φύλλα εργασίας κι αν βρει φύλλο με όνομα ίδιο με την τιμή του κελιού π.χ. Α5 στο worksheet-41, γράφει στο Α2 αυτό που βρίσκεται στο Α5.

Μ' αυτόν τον τρόπο, προφανώς και δεν μπορεί να υπάρχει συνωνυμία μεταξύ εργαζομένων, γιατί φύλλα εργασίας δεν μπορούν να έχουν το ίδιο όνομα.

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

Αν χρειάζεσαι περισσότερη βοήθεια για βελτιώσεις, αναφέρεις τι ακριβώς χρειάζεσαι.

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

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

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

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

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

Σύνδεση

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

Συνδεθείτε τώρα
  • Δημιουργία νέου...