Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Befüllung Tabelle

Befüllung Tabelle
07.11.2019 16:54:04
Laui
Liebes Excel-Experten Team,
meine Tabelle sieht folgendermaßen aus:
Spalte A: Fallnummer
Spalte B: Eingangsdatum
Spalte C: Datum 1
Spalte D: Datum 2
Spalte E: Datum 3
Mein VBA soll am besten foglendes tun:
- Prüfen ob in Spalte A ein Wert steht
- Wenn ja: Spalte C mit folgender Formel befüllen: Eingangsdatum + F15
- Wenn ja: Spalte D mit folgender Formel befüllen: Datum 1 + F16
etc.
- Wenn eine neue Zeile befüllt ist sollen die anderen Zellen nicht überschrieben werden. Es soll im nächsten Schritt also geprüft werden ist Wert in Spalte A? Wenn ja, sind Werte in B1, C1,D1,E1? Wenn nein, befüllen mit Formeln wenn nein springe Zeile tiefer.
(ich möchte vermeiden, dass manuelle Anpassungen im Nachgang überschrieben werden) / im nachgang werden immer wieder Zeilen hinzugefügt werden und somit soll die Prüfung immer bis zum Ende der Tabelle "durchlaufen")
Vielen lieben Dank schon vorab für eure Hilfe :)
Liebe Grüße
Laura

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Befüllung Tabelle
07.11.2019 19:31:52
Piet
Hallo Laura
ich denke der kleine Code reicht aus um die Aufgabe zu lösen ....
mfg Piet
Sub Auto_ausfüllen()
Dim AC As Range, lz1 As Long
'LastZelle in Spalte A suchen
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
'Schleife zum Auto ausfüllen
For Each AC In Range("A2:A" & lz1)
If AC.Value  "" And AC.Offset(0, 1)  "" Then
If AC.Offset(0, 2) = "" And AC.Offset(0, 3) = "" Then
AC.Offset(0, 2).Formula = "=B" & AC.Row & "+ F$15"
AC.Offset(0, 3).Formula = "=B" & AC.Row & "+ F$16"
End If
End If
Next AC
End Sub

AW: Befüllung Tabelle
08.11.2019 10:18:21
Laui
Lieber Piet,
ich habe es getestet und es funktioniert ich habe nur folgendes Problem, meine Spalten haben sich verschoben und ich habe versucht den Code anzupassen aber es funktioniert nicht:
Spalte A: Fallnummer
Spalte B: Informationen
Spalte C: Datum 1
Spalte D: Datum 2
Spalte E. Dauer
Spalte F-I: weitere Spalten mit Informationen die immer befüllt sind
Spalte J: Datum gesucht 1
Spalte L: Datum gesucht 2
Mein VBA soll am besten foglendes tun:
- Prüfen ob in Spalte A ein Wert steht
- Wenn ja: Spalte J mit folgender Formel befüllen: Datum1 + AG 5
- Wenn ja: Spalte L mit folgender Formel befüllen: Datum 1 + AG 6
Mein VBA soll prüfen ob in der Spalte J oder eben L darüber ein Datum steht, wenn nicht soll es die fehlenden Datumangaben ergänzen- Momentan klappt es vermutlich nicht, da alle Zeilen in der Spalte F-I befüllt sind und dennoch die Datumgesucht 1&2 noch fehlen und berechnet werden müssten.
Ich habe es versucht anzupassen aber sobald die Spalten F-I befüllt sind funktioniert es nicht.
VIELEN LIEBEN DANK!
Liebe Grüße
Laui
Anzeige
AW: Befüllung Tabelle
08.11.2019 12:31:02
Piet
Hallo Laura
wenn man weiss wie ein Code funktioniert ist das aendern kein Thema. Ich erklaere es dir, s. unten
Mit AC wird jede Zelle in Spalte A geprüft ob ein Wert vorliegt. Wenn ja wird mit Offset geprüft ob die Zelle J oder L leer ist. Offset funktioniert so: Offset(z=Zeile, s=Spalte) - Offset(0,10) heisst, prüfe Spalte J, Offset(0,12) prüfe Spalte K. - Offset(1,10) würde heissen, prüfe J, aber eine Zeile tiefer!
Mit "=C" & AC.Row wird die Zelle in Spalte C definert über die Zeile die AC gerade innehat. z.B. "C2" beim Start des Makros. Hat man das verstanden kannst du ihn selbst aendern.
mfg Piet
Sub Auto_ausfüllen()
Dim AC As Range, lz1 As Long
'LastZelle in Spalte A suchen
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
'Schleife zum Auto ausfüllen
For Each AC In Range("A2:A" & lz1)
If AC.Value  "" Then
If AC.Offset(0, 10) = "" Then _
AC.Offset(0, 10).Formula = "=C" & AC.Row & "+ AG$5"
If AC.Offset(0, 12) = "" Then _
AC.Offset(0, 12).Formula = "=D" & AC.Row & "+ AG$16"
End If
Next AC
End Sub

Anzeige
AW: Befüllung Tabelle
08.11.2019 16:06:51
Laui
Piet du bist der HAMMER! DANKE! :)
AW: Befüllung Tabelle
11.11.2019 11:52:32
Laui
Lieber Piet,
ich muss nochmal auf deine Hilfe zurückgreifen wenn möglich..
Um eine Laufzeit zu berechnen soll folgende Formel ausgeführt werden:
=WENN($T$4=G5;HEUTE()-$C5;$T5-$R5)
Welche aber als Makro ausgeführt werden soll. Hierzu soll erst immer geprüft werden ob in Spalte A ein Wert steht- wenn ja soll die Laufzeit mit der genannten Formel berechnet werden.
Wenn es einen Weg gibt lass ich dir auch gerne ein kleines Dankeschön zukommen 
Liebe Grüße und Danke!
Laura
AW: Befüllung Tabelle
11.11.2019 22:36:19
Piet
Hallo Laura
prüfe bitte mal in einer Kopie Datei was dieser Code macht? Ich bin mir nicht sicher ob er richtig funktioniert? Formeln sind nicht meine starke Seite! Zwei Dinge sind mir noch unklar:
Ich weiss nicht was beim Ergebnis rauskommen soll, eine Zahl evtl. als Tage, Monate, oder eine Zeitangabe? Das zweite Sache ist die Zahl 5 in der Formel. Ist das immer eine konstante Zeile, die 5? Bleibt es die fünfte? Oder ist damit ActiveCell, als fortlaufende Zeile bis LastZell gemeint? Das 2. Makro geht von der zweiten Variante aus.
Wenn es Tage sein sollen muss der Round Befehl zum Auf- Abwerten bleiben. Wenn ein Datum rauskommen soll musst du zum Testen die Befehle mit CDate() aktivieren. İn dem Fall das ' Zeichen vor dem Befehl entfernen, und den anderen Befehl deaktivieren. Leider kann ich aus der Ferne nur wenig helfen...
mfg Piet
Sub Auto_ausfüllen()
Dim AC As Range, lz1 As Long
Dim Laufzeit As Variant
'LastZelle in Spalte A suchen
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
lz1 = 20  '** nur zum Testen
'Schleife zum Auto ausfüllen
For Each AC In Range("A2:A" & lz1)
If AC.Value  "" Then
'zuerst Laufzeit berechen wenn $T$4=G5
If Range("T4").Value = Cells(5, 7).Value Then
Laufzeit = Now - Cells(5, 3).Value  'oder so:
'Laufzeit = CDate(Now - Cells(5, 3))
Else
Laufzeit = Range("T5") - Range("R5")  'oder so:
'Laufzeit = CDate(Range("T5") - Range("R5"))
End If
Laufzeit = Round(Laufzeit, 2)
MsgBox Laufzeit  '** nur zum Testen
'Normale Auswertung wie sie vorher war
If AC.Offset(0, 10) = "" Then _
AC.Offset(0, 10).Formula = "=C" & AC.Row & "+ AG$5"
If AC.Offset(0, 12) = "" Then _
AC.Offset(0, 12).Formula = "=D" & AC.Row & "+ AG$16"
End If
Next AC
End Sub
Sub Auto_ausfüllen_2_ACROW()
Dim AC As Range, lz1 As Long
Dim Laufzeit As Variant
'LastZelle in Spalte A suchen
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
lz1 = 20  '** nur zum Testen
'Schleife zum Auto ausfüllen
For Each AC In Range("A2:A" & lz1)
If AC.Value  "" Then
'zuerst Laufzeit berechen wenn $T$4=G5
'** diese Lösung wenn 5 = ActiveCell.Row ist!!
If Range("T4").Value = Cells(AC.Row, 7).Value Then
Laufzeit = Now - Cells(AC.Row, 3)   'oder so:
'Laufzeit = CDate(Now - Cells(AC.Row, 3))
Else
Laufzeit = Cells(AC.Row, "T") - Cells(AC.Row, "R")  'oder
'Laufzeit = CDate(Cells(AC.Row, "T") - Cells(AC.Row, "R"))
End If
Laufzeit = Round(Laufzeit, 2)
MsgBox Laufzeit  '** nur zum Testen
'Normale Auswertung wie sie vorher war
If AC.Offset(0, 10) = "" Then _
AC.Offset(0, 10).Formula = "=C" & AC.Row & "+ AG$5"
If AC.Offset(0, 12) = "" Then _
AC.Offset(0, 12).Formula = "=D" & AC.Row & "+ AG$16"
End If
Next AC
End Sub

Anzeige
AW: Befüllung Tabelle
12.11.2019 08:48:57
Laui
Lieber Piet,
Die Spalten entsprechen quasi Workflow Schritten, die jeweils mit einem Datum/ der Laufzeit eine Zeile darunter belegt sind.
Eingangsdatum (C) Status (G) Workflow Schritt 1 (J) Workflow Schritt 2 (L) …..
Datum (J5) | Laufzeit (K5) Datum| Laufzeit
Berechnet werden soll die Laufzeit folgendermaßen:
Wenn vorne der Status auf Workflow Schritt 1 gesetzt wird soll die Laufzeit berechnet werden über Heute- Eingangsdatum (C5) , ansonsten wenn zB der Status auf Workflow Schritt 2 gesetzt wird berechnet sich die Laufzeit für Workflow Schritt 1 mit Datum Workflowschritt 1 (J5)– Eingangsdatum(C5)
Wahlweise wäre es auch möglich, dass das Makro einfach prüft ob eine neue Zeile in Spalte A hinzugefügt wurde, prüft ob in der Zelle was steht und dann die Formel einfach ergänzt nach unten …. Darf nur nicht die ganze Tabelle immer neu Befüllen (habe es mal mit autofill versucht, das ging schief)
Ich hoffe du verstehst was ich meine!
Liebe Grüße
Laura
Anzeige
AW: Befüllung Tabelle
12.11.2019 12:12:42
Piet
Hallo Laura
ich bin gerne bereit dir bei der Formel Entwicklung behlflich zu sein, Formeln ist aber NICHT mein Fachgebiet. Dazu brauche ich jetzt bitte deine Mithilfe.
Kopiere dir bitte in eine separate Tabelle die du "Test" nennene kannst einige Daten der Originaldatei, damit du darin die Formeln testen kannst, bis sie klappen, ohne das wir versehentlich Originalkdaten zerstören. Das ist mir sehr wichtig, wenn ich mir meiner Sache nicht 100% sicher bin!
Anbei zwei Test Makros wo es mir nur darum geht die Formeln einwandfrei hin zu bekommen. Sie spaeter als Schleife laufen lassen ist kein Problem! Zuerst muss ich aber wissen ob ich gedanklich richtig liege. Sollten die Formeln des ersten Makros NICHT stimmen bitte von Hand korrigieren, biş es passt, und mir bitte das Ergebnis wie's sein muss mitteilen. Mir reichen die Zellen K3,K4,K5 als Muster
Beim 2. Makro veraendere auch mal den Wert in der Zelle G5, und schaue wie sich die Formel aendert. Ob das Ergebsnis so passt, wie du es brauchst. Sonst aendere die Formeln bitte von Hand ab, und schreibe mir wie sie richtig sein müssen. Ich denke das ist der schnellst Weg dir zu helfen.
Achte bitte darauf das auch die Zeilen in den Formeln stimmen. In der Testdatei kannst du sie ja auf mehrere Zeilen erweitern, um selbst zu prüfen ob sie in ALLEN Faellen korrekt sind. Das schöne an einer Testdatei ist ja das du damit spielen kannst wie du willst, OHNE was kaputt zu machen!
mfg Piet
Sub Test()
'Formeltest in Zelle K3, K4
'sollten meine Formeln NICHT stimmen bitte von Hand korrigieren
Range("K3").Formula = "=HEUTE()-$C3"
Range("K4").Formula = "=$T4-$R4"
End Sub
Sub Test_2()
'Formeltest in Zelle K5, Vergleich mit G5
'T4 nehme ich an bleibt immer konstant
If Range("T4").Value = Cells(5, "G").Value Then
Cells(5, "K").Formula = "=HEUTE()-$C5"
Else
Cells(5, "K").Formula = "=$T5-$R5"
End If
End Sub

Anzeige
AW: Befüllung Tabelle
12.11.2019 17:26:32
Laui
Hallo Piet,
es hat geklappt Formel habe ich händisch angepasst und es hat direkt funktioniert! Du bist der Wahnsinn!
Vielen lieben Dank!!!!!1
Viele Grüße
Laura
AW: Befüllung Tabelle
12.11.2019 17:52:07
Laui
Eine Anmerkung noch:
Ich habe jetzt für die unterschiedlichen Spalten die If Bedingungen einfach untereinander in ein Modul...das scheint aber nicht zu funktionieren bzw. er springt dann nicht in die nächste Zeile also von K5 in K6 in K7 um die Formel anzulegen....weißt du was ich meine?
Liebe Grüße
AW: Befüllung Tabelle
12.11.2019 19:51:12
Piet
Hallo Laura
ich denke es klappt wenn du das bereits bekannte Makro auf die neuen Formeln wie unten beschrieben anpasst. Ist geraten, würde mich aber freuen wenn es klappt! Toi, toi, toi ...
mfg Piet
Sub Auto_ausfüllen_Vers2()
Dim AC As Range, lz1 As Long
'LastZelle in Spalte A suchen
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
'Schleife zum Auto ausfüllen
For Each AC In Range("A2:A" & lz1)
If AC.Value  "" Then
'hier die Cells Formeln reinsetzen die jetzt laufen!!
'dabei musst du Cells(5,   - ersetzen durch - Cells(AC.Row,
'und diesen Teil der Formel = "=HEUTE()-$C5" - ersetzen durch - = "=HEUTE()-$C" & AC. _
Row
End If
Next AC
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige