Felder automatisch füllen mit daeten aus Zellen darüber
Hallo
ich habe ein Excel Arbeitsblatt in der ich eine Spalte habe in der sich falls ein Feld darin leer bleibt sich diese Feld automatisch mit Inhalt füllt.
Der zur Verfügung stehende Inhalt befindet in der gleichen Spalte oberhalb der Zellen.
Nun soll sich in der ersten freien Zelle der Inhalt aus der ersten Auswahlzelle einfügen, in der zweiten freien Zelle der Inhalt der zweiten Auswahlstelle usw.
Für ein Makro wäre ich sehr dankbar.
Gruß Erwin
Antwort schreiben
Antwort 1 von martl vom 25.05.2022, 21:43 Options
Hallo Erwin,
folgendes ist mir eingefallen:
Sub Test()
Dim i As Double, x
x = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To x
If Cells(i, 1).Value = "" Then
Cells(i, 1).Value = Cells(i - 1, 1).Value
End If
If i = x Then Exit Sub
Next i
End Sub
Hab angenommen, dass die Spalte A ausgefüllt werden soll: "Cells(i, 1)" = "Cells(<VARIABLE ZEILE>, <SPALTE A>)"
Ist etwas handgestrickt und geht sicherlich noch besser zu programieren, aber evtl. bringt Dich das Makro schon ein bisschen weiter.
VIele Grüße
Martin
Antwort 2 von EKG vom 26.05.2022, 20:46 Options
Hallo Martin
dein Makro hat mein Problem leider nur zum Teil gelöst
Das ausfüllen der leeren Zellen funktioniert damit gut.
Was ich noch benötige ist das er aus einer Auswahl die über den auszufüllenden Zellen steht die Daten einer nach dem anderen in die leeren Zellen einfügt (wie oben beschrieben)
Gruß Erwin
Antwort 3 von martl vom 26.05.2022, 21:02 Options
Hallo Erwin,
das mit der Auswahlliste hab ich noch nicht ganz verstanden. Ist die Auswahl ein Zellbereich in der gleichen Spalte ? Wieviele Zellen umfasst die Auswahl ? Oder ist das ein Dropdown/Listenfeld - wenn ja, wo stehen die ursprünglichen Daten...
Kannst Du vielleicht ein Beispiel mit Angabe der Zellnamen machen? (z.B. Auswahlliste: A1-A5, leere Zellen: A6 - A8 sind leer und bekommen den Wert aus A1. A9 hat einen Wert, A10-A12 sind leer und bekommen den Wert aus A2,...) .
Steh gerade leider auf der Leitung... ;)
Viele Grüße
Martin
Antwort 4 von EKG vom 26.05.2022, 22:08 Options
Hallo Martin
Auswahlliste: A1-A20, leere Zellen: A22 - A50 sind teilweise leer und bekommen den Wert aus A22 ist leer und bekommt den wert aus A1,
A24 ist leer und bekommt den Wert aus A2 usw.
Gruß Erwin
Antwort 5 von martl vom 26.05.2022, 23:51 Options
Hallo Erwin,
ok.,. jetzt hab ich das Makro nochmals geändert:
Sub Test()
Dim i, j, x As Double
j = 1
x = Cells(Rows.Count, 1).End(xlUp).Row ' alternativ: x = 50
For i = 22 To x
If Cells(i, 1).Value = "" Then
Cells(i, 1).Value = Cells(j, 1).Value
Else:
If i = 22 Then
j = j
Else: j = j + 1
End If
End If
If i = x Then Exit Sub
Next i
End Sub
Wenn etwas noch nicht passt, nochmals kurz melden.
Gruß
Martin
Antwort 6 von EKG vom 27.05.2022, 20:25 Options
Hallo Martin,
erst einmal vielen Dank für die Hilfe bis hierher. Es funktioniert leider nur noch nicht ganz. Ich hab hiernochmal ein Abgriff aus dem Exel Arbeitsblatt vieleicht schildert das meinen Wunsch noch besser.
A ist die Spalte A
Zeilennummer A
1 120
2 121
3 122
4 123
5 124
6 125
7 126
8 127
9 128
10 129
11 130
12 131
13 132
14 133
15 134
16 135
17 136
18 137
19 138
20 139
21
22 a
23 wenn leer dann A1
24 a
25 b
26 a
27 wenn leer dann A2
28 a
29 b
30 a
31 wenn leer dann A3
32 a
33 b
34 a
35 wenn leer dann A4
36 a
37 wenn leer dann A5
38 wenn leer dann A6
39 b
40 a
41 b
42 a
43 b
44 a
45 b
46 a
47 b
48 a
49 b
50 wenn leer dann A7
Gruß Erwin
Antwort 7 von martl vom 27.05.2022, 21:59 Options
Hallo Erwin,
tut mir echt leid, dass sich das so hinzieht. Vielleicht funktionierts so:
Sub Test()
Dim i, j, x As Double
j = 1
For i = 22 To 50
If Cells(i, 1).Value = "" Then
Cells(i, 1).Value = Cells(j, 1).Value
j = j + 1
End If
If i + 1 = x Then Exit Sub
Next i
End Sub
Wünsch noch einen schönen Abend.
Gruß
Martin
Antwort 8 von EKG vom 28.05.2022, 20:56 Options
Hallo Martin,
ich muß dich nochmal belästigen bis jetzt war alles sehr hilfreich.
Habe gedacht das ich allen weiter kommen würde, klappt aber leider nicht.
Ich habe noch ein Problem und das lautet:
die Spalte in der die leeren Zellen sind ist Spalte W und die zellen sind nicht leer sondern darin ist eine Summe die null ergibt.
Die Spalte aus der die werte rausgaholt werden sollen ist die Spalte U
Wäre dir dankbar wenn du mir noch einmal helfen könntest.
Gruß Erwin
Antwort 9 von martl vom 28.05.2022, 21:27 OptionsLösung
Hallo Erwin,
ist echt kein Problem. Hab das Makro geändert:
Sub Test()
Dim i, j, x As Double
j = 1
For i = 22 To 50
If Cells(i, 23).Value = 0 Then
Cells(i, 23).Value = Cells(j, 21).Value
j = j + 1
End If
If i + 1 = x Then Exit Sub
Next i
End Sub
Mit der Cells-Formel greifst Du auf die jeweiligen Zellen zu.
Übersetzt heisst das: Zellen(<Zeile>, <Spalte>), die Spalten werden ab A durchnummeriert. W ist somit 23, U ist 21. Die Zeilen sind Variable (i) und werden von 22 - 50 durchlaufen. Das "j" ist zuständig, damit immer der nächste Wert in der Spalte 21 ("U") verwendet wird.
Gruß
Martin
Antwort 10 von nighty vom 28.05.2022, 21:37 Options
hi martl ^^
Ein nettes tool zum code einruecken,du wirst es lieben :-))
http://www.oaltd.co.uk/Indenter/Default.htm nach der installation des addin hast du dann per rechtsclick im vb editor dessen menues,indent modul rueckt alle erreichbaren codes ein :-)
gruss nighty
Antwort 11 von martl vom 28.05.2022, 21:43 Options
Hallo nighty,
Danke für den Link. Habs mir gleich mal heruntergeladen. :)
Wünsch Euch allen noch einen schönen, erholsamen Abend.
Grüßle
Martin