Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wenn Wert = 1 dann Zelle in selbe Spalte kopieren

Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
10.01.2018 12:24:37
Björn
Guten Tag allerseits!
Dies ist mein erster Eintrag in einem Office Forum überhaupt. Genutzt habe ich dieses Forum hingegen schon oft. Es gibt viele Beiträge zu diesem Thema, aber kein Eintrag bringt mich mit meinen VBA Kenntnissen (Grundkurs VBA) bei meinem Problem weiter.
Folgendes möchte ich erreichen:

Wenn im Bereich X2 bis zum Ende der Tabelle (-2 Zeilen) der Wert 1 erreicht wird, soll in der selben Zeile aber 2 Spalten weiter der Wert der Zelle $Y$1 kopiert werden. Dort habe ich zuvor ein Datum (nicht immer =heute()) eingetragen, welches dann in die Spalte Z auf Höhe der geänderten Zelle eingefügt werden soll.

Ich würde mir dann später selbst den Code für den selben fixen Bereich der Spalte X für den Wert 2 bis 10 und entsprechend jeweils eine Spalte weiter erzeugen.
Ziel ist es in den Spalten Z bis AI das jeweils zuvor definierte Datum aus der Zelle Y1 in Spalte X auf Höhe der geänderten Zelle zu haben.
Ich hoffe es ist einigermaßen Verständlich was ich geschrieben habe und dass mir jemand weiterhelfen kann.
Vielen Dank schon mal im Voraus!
MfG
Björn

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachfrage
10.01.2018 13:48:28
Werner
Hallo Björn,
exakt der Wert 1 oder größer/gleich 1
Gruß Werner
AW: Nachfrage
10.01.2018 14:31:25
Björn
Hallo Werner!
Exakt der Wert 1. Ich würde mir das dann später noch für den Wert 2 und 3 usw. bis 10 (auch jeweils den exakten Wert) abändern. Das Datum soll dann immer eine Spalte weiter nach rechts eingetragen werden, also bei exakt Wert 2 Datum aus Zelle Y1 in Spalte AA usw.
Gruß
Björn
AW: Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
10.01.2018 14:22:51
Werner
Hallo Björn,
hier mal ein Beispielcode der auf ~f~>=1~f~ prüft.
Public Sub aaa()
Dim loLetzte As Long, raBereich As Range
With Worksheets("Tabelle1") 'Blattname anpassen
loLetzte = .Cells(.Rows.Count, 24).End(xlUp).Row - 2
Set raBereich = .Range(.Cells(2, 24), .Cells(loLetzte, 24))
For Each raZelle In raBereich
If IsNumeric(raZelle.Value) Then
If raZelle.Value >= 1 Then
raZelle.Offset(, 2).Value = .Cells(1, 25).Value
End If
End If
Next raZelle
End With
End Sub
Gruß Werner
Anzeige
AW: Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
10.01.2018 14:37:06
Björn
Hallo Werner!
Es funktioniert, jetzt wollte ich das noch mit Private Sub Worksheet_Change(ByVal Target As Range) abändern, damit es automatisch funktioniert, das geht so leicht aber nicht :/
Gruß
Björn
AW: Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
10.01.2018 14:42:20
Werner
Hallo Björn,
du solltest schon gleich mitteilen was du eigentlich möchtest. Das ist jetzt wieder eine andere Baustelle.
Fragen:
1. Wie kommen die Zahlen in Spalte X, händische Eingabe?
2. Soll der Wert immer zwei Spalten weiter rechts eingetragen werden?
3. Bei deinem vorherigen Post liest sich das nämlich etwas anders, da sprichst du von AA?
Gruß Werner
Anzeige
AW: Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
10.01.2018 14:51:17
Björn
Hallo Werner,
tut mir leid, ich dachte es wäre für den Code irrelevant wie die Zahl in die Spalte X kommt. Die Zahl entsteht aus einer Summenformel (in X2 steht "=SUMME(C2:D2;H2:I2;M2:N2;R2:S2)" in X3 steht "=SUMME(C3:D3;H3:I3;M3:N3;R3:S3)" usw.). Der Wert aus Y1 soll nur im ersten Fall (exakt Wert 1) 2 Spalten nach rechts (also in Z) kopiert werden, danach immer nur 1 Spalte (Wert 2 = AA, Wert 3 = AB usw.).
AW: Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
10.01.2018 14:57:25
Werner
Hallo Björn,
das ist durchaus entscheidend. Weil Excel nämlich kein Change-Ereignis auslöst aufgrund einer Formelberechnung.
In welchen Zellen werden denn Eingaben gemacht, die dann die entsprechende Formelberechnung auslösen?
Am besten wäre es, wenn du deine Mappe hier hochlädst.
Gruß Werner
Anzeige
AW: Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
10.01.2018 15:16:13
Werner
Hallo Björn,
das wäre z.B. so möglich:
Private Sub Worksheet_Calculate()
Dim loLetzte As Long, raBereich As Range
loLetzte = Cells(Rows.Count, 24).End(xlUp).Row - 2
Set raBereich = Range(Cells(2, 24), Cells(loLetzte, 24))
For Each Target In raBereich
If IsNumeric(Target.Value) Then
Select Case Target.Value
Case 1, 2, 3, 4, 5
Application.EnableEvents = False
Target.Offset(, Target.Value + 1).Value = Cells(1, 25).Value
Application.EnableEvents = True
Case Else
'nichts machen
End Select
End If
Next Target
End Sub
Wobei du dir darüber im Klaren sein mußt, dass das Makro bei jeder Formelberechnung auf dem Blatt ausgelöst wird, egal wo im Blatt eine Formel berechnet wird.
Gruß Werner
Anzeige
AW: Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
11.01.2018 06:50:03
Björn
Guten Morgen Werner!
Du bist mein persönlicher Held, ganz ehrlich. Es klappt einwandfrei!
Ich danke dir vielmals!
Viele Grüße aus Recklinghausen/Herten
Björn
AW: Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
11.01.2018 08:05:55
Björn
Ich bin's noch einmal :)
In der Praxis hat sich herausgestellt, dass sich die zuvor aus Y1 kopierten Werte überschreiben, wenn ich eine Änderung in einer anderen Zeile vornehme. Also bei jeder Änderung wird neu geprüft wo steht in Spalte X eine 1 etc. und dann wird der Wert aus Y1 erneut in die entsprechende Spalte kopiert.
Ist es möglich deinen Code (mit wenig zusätzlichem Aufwand) so abzuändern, dass sich die zuvor in Spalte Z - AI kopierten Werte arretieren, nachdem sich das Ergebnis in Spalte X (Summe aus C:D;H:I;M:N;R:S) geändert hat?
Ich hoffe das wirft jetzt nicht wieder alles durcheinander.
Gruß
Björn
Anzeige
AW: Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
11.01.2018 12:50:41
Werner
Hallo Björn,
ich habe noch eine Prüfung eingebaut, ob die entsprechende Zelle leer ist oder nicht.
Zudem habe ich im Code target in raZelle geändert. Das war mir versehentlich rein gerutscht. target ist ein VBA-Schlüsselwort und sollte als Variablenname nicht verwendet werden.
Private Sub Worksheet_Calculate()
Dim loLetzte As Long, raBereich As Range, raZelle As Range
loLetzte = Cells(Rows.Count, 24).End(xlUp).Row - 2
Set raBereich = Range(Cells(2, 24), Cells(loLetzte, 24))
For Each raZelle In raBereich
If IsNumeric(raZelle.Value) Then
Select Case raZelle.Value
Case 1, 2, 3, 4, 5
If raZelle.Offset(, raZelle.Value + 1).Value = "" Then
Application.EnableEvents = False
raZelle.Offset(, raZelle.Value + 1).Value = Cells(1, 25).Value
Application.EnableEvents = True
End If
Case Else
'nichts machen
End Select
End If
Next raZelle
End Sub
Gruß Werner
Anzeige
AW: Wenn Wert = 1 dann Zelle in selbe Spalte kopieren
11.01.2018 13:08:46
Björn
Hallo Werner!
Ich bin froh dass nicht alles wieder geändert werden musste! Es funktioniert einwandfrei.
Vielen vielen Dank Werner! Ich bin dir was schuldig :)
Gruß
Björn
Gerne u. Danke für die Rückmeldung. o.w.T.
11.01.2018 13:18:52
Werner

384 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige