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/6241-aytomati-symplirosi.html)

mdragon 29-01-23 00:43

Αυτόματη συμπλήρωση
 
1 Συνημμένο(α)
Καλησπέρα σε όλη την παρέα,
θα ήθελα για άλλη μία φορά την βοήθειά σας.
Σε ένα φύλλο με πολλές καταχωρήσεις το όνομα του πελάτη φαίνεται μόνο στην πρώτη γραμμή ακόμα και αν υπάρχουν δεδομένα και στις επόμενες γραμμές.
Δεν μπορώ όμως να χρησιμοποιήσω το φίλτρο σε εκείνη την στήλη.
Προσπάθησα να κάνω αντιγραφές με το shift + xldown αλλά είναι πολλές οι γραμμές.
Έφτιαξα αυτόν τον κώδικα (με τα λίγα που ξέρω)
αλλά έπρεπε να το κάνω σε κάθε γραμμή και το χειρότερο ότι όταν έφτανε στον τελευταίο πελάτη αντέγραφε τις τιμές έως το τέλος του φύλλου :wall:

Sub FillOut()
Dim c As Range, d As Range
Application.ScreenUpdating = False
Range("DataSource").Select

Set c = Range("DataSource").End(xlDown).Offset(0)
c.Select
Selection.Copy

Set d = ActiveCell.Offset(1)
d.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

Application.ScreenUpdating = True
End Sub


Τονίζω ότι οι γραμμές δεν είναι ποτέ ίδιες.
Επισυνάπτω ένα παράδειγμα δεδομένου ότι δεν μπορώ να ανεβάσω αρχείο με προσωπικά δεδομένα.

kapetang 29-01-23 12:08

1 Συνημμένο(α)
Καλησπέρα Μάρω

Στο συνημμένο προτείνω μία λύση με κώδικα και μία χωρίς.

mdragon 30-01-23 15:15

Γιώργο σε ευχαριστώ για την άμεση απόκριση.
Υπάρχει τρόπος να βάζουμε σε ένα κελί πχ f2 - a2:a15 και να τραβάει την περιοχή ανάλογα με τα δεδομένα του κελιού??
Την καλησπέρα μου!

kapetang 30-01-23 15:27

Καλησπέρα Μάρω

Άλλαξε την εντολή:

Κώδικας:

    Set rng = Range(InputBox("Δώσε την περιοχή κελιών στη μορφή:" & vbCrLf & vbCrLf & _
    "          1. στήλης a5:a100 ή " & vbCrLf & vbCrLf & _
    "          2. γραμμής a3:x3" & vbCrLf & vbCrLf & _
    "Το 1ο κελί δεν πρέπει να είναι κενό"))

με την: Set rng = Range(Range("f2"))

mdragon 30-01-23 20:47

Γιώργο σε ευχαριστώ για ακόμη μία φορά!!!! :knuddel:

kapetang 30-01-23 21:26

Να είσαι καλά και καλή συνέχεια.


Η ώρα είναι 19:09.

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


Search Engine Optimization by vBSEO 3.3.2