5.7k Aufrufe
Gefragt in Tabellenkalkulation von ekg Mitglied (303 Punkte)
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

11 Antworten

0 Punkte
Beantwortet von martl Einsteiger_in (48 Punkte)
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
0 Punkte
Beantwortet von ekg Mitglied (303 Punkte)
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
0 Punkte
Beantwortet von martl Einsteiger_in (48 Punkte)
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
0 Punkte
Beantwortet von ekg Mitglied (303 Punkte)
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
0 Punkte
Beantwortet von martl Einsteiger_in (48 Punkte)
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
0 Punkte
Beantwortet von ekg Mitglied (303 Punkte)
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
0 Punkte
Beantwortet von martl Einsteiger_in (48 Punkte)
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
0 Punkte
Beantwortet von ekg Mitglied (303 Punkte)
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
0 Punkte
Beantwortet von martl Einsteiger_in (48 Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi martl ^^

Ein nettes tool zum code einruecken,du wirst es lieben :-))

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
...