Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [VBA] VBA - Αντιγραφή πολλών κελιών σε ένα.

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 16-12-14, 15:18
Όνομα: Παύλος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-03-2013
Μηνύματα: 12
Προεπιλογή VBA - Αντιγραφή πολλών κελιών σε ένα.

Καλησπέρα,
Παρακαλώ τη βοήθειά σας στο εξής:
Σε κώδικα VBA πως μπορώ να αντιγράψω τα στοιχεία 3ων κελιών σε ένα, δηλαδή:
Α1=4
Β1=go
C1=768
να αντιγραφούν στο D1, δηλαδή:

D1=4go768

Αυτό να γίνει για ολόκληρη τη στήλη, δηλαδή D2, D3, D4, κλπ.

Ευχαριστώ.
Απάντηση με παράθεση
  #2  
Παλιά 16-12-14, 15:25
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Γιατί με VBA και όχι με Concatenate ή τελεστή εμπορικό &
Βάλε στο D1 και «τράβηξε» κάτω όσο χρειάζεται.
=CONCATENATE(A1;B1;C1) ή
=A1&B1&C1
Απάντηση με παράθεση
  #3  
Παλιά 19-12-14, 12:25
Όνομα: Παύλος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-03-2013
Μηνύματα: 12
Προεπιλογή

Αποτελεί μερος μιας μεγαλης αυτοματοποιησης ενος αρχειου excel.
Γιαυτο το θελω σε vba.
Επισης, θελω οταν εχω π.χ. Α1=575 , Α2=67 να ερχεται στο Β1 , Β2 σταθερα με 6 ψηφια και τα πρωτα να ειναι μηδενικα, δηλαδη 000575, 000067 και αυτο να γινεται για ολη τη στηλη Α.

Ευχαριστώ.
Απάντηση με παράθεση
  #4  
Παλιά 19-12-14, 15:11
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Ο πιο κάτω κώδικας ...

Κώδικας:
Sub test()
    Dim i As Long, lastrow As Long
    lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row

    For i = 1 To lastrow
        Cells(i, 4).Value = Cells(i, 1).Value & Cells(i, 2).Value & Cells(i, 3).Value
    Next i
End Sub
... κάνει ακριβώς αυτό που ζητήθηκε στο 1ο ερώτημα.

Δεν ελέγχει όμως αν :

Υπάρχουν κεφαλίδες
Κενά κελιά ενδιάμεσα
Κενά κελιά στο τέλος της στήλης (οπότε επηρεάζει την lastrow)
και πολλά ακόμα που πιθανόν, να είναι εξαρτώμενα από μέρος του μεγαλύτερου αυτοματισμού.

Σημείωση:

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

Δεν θα συνιστούσα την χρήση οποιουδήποτε κώδικα, αν δεν είναι σωστά ενσωματωμένος στο υπόλοιπο έργο.
Απάντηση με παράθεση
  #5  
Παλιά 19-12-14, 15:40
Όνομα: Παύλος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-03-2013
Μηνύματα: 12
Προεπιλογή

Δυστυχώς δεν δουλευει ο κωδικας.
Τον ετρεξα μονο του αλλα δεν δουλευει.
Ευχαριστω πολυ πάντως.
Απάντηση με παράθεση
  #6  
Παλιά 19-12-14, 15:55
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλό είναι, πριν πεις ότι κάτι δεν δουλεύει
να έχεις κάνει κάποιο τεστ σωστά .... αν έχεις κάνει τεστ τελικά.
«... κάνει ακριβώς αυτό που ζητήθηκε στο 1ο ερώτημα.»

Η απόδειξη για το αν δουλεύει στο βιβλίο και τα λόγια περιττά...
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm Book1.xlsm (23,5 KB, 49 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη Spirosgr : 19-12-14 στις 16:09.
Απάντηση με παράθεση
  #7  
Παλιά 19-12-14, 23:27
Όνομα: Παύλος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 15-03-2013
Μηνύματα: 12
Προεπιλογή

ok, δικό μου λάθος.
Σε ευχαριστώ και πάλι.
Απάντηση με παράθεση
  #8  
Παλιά 20-12-14, 01:27
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Ορίστε λοιπόν η λύση ολοκληρωμένη με βάση και την δεύτερη περιγραφή.

Έστω στήλη A (δεδομένα) αριθμοί με 2 ή 3 ψηφία.
Έστω στήλη B (κενά κελιά) στα οποία θα έρθει η αξία των Α και μπροστά τα ανάλογα 0 (μηδέν).
Η στήλη Β να γίνει μορφοποίηση κείμενο.
Έστω στήλη C (δεδομένα) οτιδήποτε.
Έστω στήλη D (κενά κελιά) στα οποία θα έρθει η συνένωση των A,B,C.

Κώδικας:
Sub test()
    Dim i As Long, lastrow As Long
    lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To lastrow
        If Len(Cells(i, 1)) = 2 Then Cells(i, 2).Value = "0000" & Cells(i, 1).Value
        If Len(Cells(i, 1)) = 3 Then Cells(i, 2).Value = "000" & Cells(i, 1).Value
        Cells(i, 4).Value = Cells(i, 1).Value & Cells(i, 2).Value & Cells(i, 3).Value
    Next i
End Sub
Αντιγράψτε τον κώδικα σε μια module και τρέξτε τον.
Το αποτέλεσμα θα είναι όπως στις εικόνες.
Εικόνα 1 πριν, εικόνα 2 μετά.
Συνημμένα Thumbnails
VBA - Αντιγραφή πολλών κελιών σε ένα.-1.png   VBA - Αντιγραφή πολλών κελιών σε ένα.-2.png  

Τελευταία επεξεργασία από το χρήστη Spirosgr : 20-12-14 στις 01:38.
Απάντηση με παράθεση
  #9  
Παλιά 20-12-14, 10:16
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλημέρα στην παρέα

Θα πρότεινα την ακόλουθη απλοποίηση και γενίκευση στον κώδικα του Σπύρου:

Κώδικας:
Sub test()
    Dim i As Long, lastrow As Long
    lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To lastrow
        Cells(i, 2) = Format(Cells(i, 1), "'000000")
        Cells(i, 4) = Cells(i, 1) & Cells(i, 2) & Cells(i, 3)
    Next i
End Sub
Φιλικά/Γιώργος
Απάντηση με παράθεση
  #10  
Παλιά 20-12-14, 11:52
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλημέρα
Καλό είναι, να εξηγούμε την «φιλοσοφία» του κάθε κώδικα, για να καταλαβαίνουν και οι φίλοι που μας διαβάζουν, τι ακριβώς κάνουμε και γιατί.

Κατ' αρχήν:
Ο Παύλος, χωρίς να μας δώσει λεπτομέρειες, για το τι περιμένει (ως αποτέλεσμα) από αυτόν τον κώδικα που ζήτησε, θέλει να τον ενσωματώσει, σε κάποιον άλλο μεγαλύτερο.

Μπορεί λοιπόν το αποτέλεσμα πχ 000088 να είναι αριθμός με απόστροφο ή κείμενο.

Παρατήρηση:(*Υποστήριξη Microsoft >>> γιατί πρέπει να διορθώνουμε αριθμούς με απόστροφο)
Σε ορισμένες περιπτώσεις ο τρόπος εμφάνισης ενός αριθμού σε κάποιο κελί,
που έχει μορφοποιηθεί και αποθηκευτεί ως κείμενο (όχι καθαρό κείμενο, όχι καθαρός αριθμός), ενδέχεται να προκαλέσει προβλήματα στους υπολογισμούς ή να δημιουργήσει παράλογες σειρές ταξινόμησης.

Τώρα:
Θα μπορούσε λοιπόν κανείς, να προτείνει (όπως ο Γιώργος) έναν κώδικα, με αποτέλεσμα αριθμό με απόστροφο, που μπορεί να πάρουμε το 000155 για παράδειγμα και να το επεξεργαστούμε περαιτέρω...
πχ 000155*2=310 με ότι αυτό συνεπάγεται από την πιο πάνω παρατήρηση.

Τελικά:
Από την άλλη, η μορφή 000000 παραπέμπει ίσως σε κάτι, που θα μπορούσε να είναι όμοιο
με ΑΦΜ ή barcode.
Με αυτό το σκεπτικό, το αποτέλεσμα πρέπει κατά την γνώμη μου να είναι καθαρό κείμενο και πρέπει να μορφοποιηθεί η στήλη Β ως κείμενο.
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Γενικά] Αντιγραφή κελιών. steliosgr Excel - Ερωτήσεις / Απαντήσεις 1 17-03-16 21:01
[VBA] Αντιγραφή κελιών μεταξύ Αρχείων Zounds Excel - Ερωτήσεις / Απαντήσεις 0 17-01-15 18:18
[Excel07] Συνένωση περιεχομένου κελιών πολλών φύλλων σε νέο φύλλο petroskodos Excel - Ερωτήσεις / Απαντήσεις 7 14-01-14 19:31
[Συναρτήσεις] Αντιγραφή κελιών alatis Excel - Ερωτήσεις / Απαντήσεις 2 22-12-11 11:45


Η ώρα είναι 07:38.