Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1716to1720
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

VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen

VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen
26.10.2019 15:10:59
Arek
Hallo Experten,
habe ein Projekt am Start welches ich ohne großes Excel wissen gestartet habe und versuche schritt um schritt voranzubringen.
Die vorhandenen Daten werden mit Datum abgeglichen (=Heute) und wenn alle Bedingungen wahr sind, werden die Daten mit diesen Formeln
Zelle(C41) =WENN(UND($C$36=H5;UND(S5="E-Mail";UND($F$36=G5;UND($H$36="Ja"))));D5;"")
Zelle(D41) =WENN($C$41="";"";E5) bis J41 und dann das gleiche wieder bei Zelle C42 usw.
unterhalb der „original“ Daten (aktuell stehen die Daten in Zellen D5 bis S24, später werden es deutlich über 1000 Zeilen)) übernommen.
Es entstehen jetzt aber viele Lücken, wenn Bedingungen nicht zutreffen.
Ich wollte jetzt dieses Makros welchen ich hier gefunden habe umbauen (Nur Zeilen mit bestimmtem Inhalt kopieren).
Sub Filtern()
Dim wks As Worksheet
Dim rng As Range
Dim iRow As Integer, iRowT As Integer
Application.ScreenUpdating = False
Set wks = Worksheets("Tabelle2")
Set rng = Range("A1").CurrentRegion
rng.Rows(1).Copy wks.Range("A1")
iRow = 2
iRowT = 1
Do Until IsEmpty(Cells(iRow, 1))
If WorksheetFunction.CountIf(rng.Rows(iRow), "vb0") > 0 Then
iRowT = iRowT + 1
rng.Rows(iRow).Copy wks.Cells(iRowT, 1)
End If
iRow = iRow + 1
Loop
wks.Columns.AutoFit
Application.CutCopyMode = False
Application.ScreenUpdating = False
End Sub
Es müsste umgebaut werden das es folgendes macht:
Überprüft ob in C41 ein Wert mit SL anfängt und wenn zutrifft die Zellen C41 bis J41 und Zelle O41 kopiert in eine zweite Tabelle ab Zelle B22. Es sollte die Möglichkeit haben Variabel nach unten zu überprüfen ob in Zellen C42,43,44 usw. der Wert SL vorhanden ist und diese dann in die neue Tabelle zu kopieren.
Ich möchte erstmal ein Grundaufbau haben und dann die nächsten Schritte machen.
Kann mir jemand Hilfe geben?
AW: VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen
26.10.2019 16:41:36
onur
"Ich wollte jetzt dieses Makros welchen ich hier gefunden habe umbauen" - Blödsinn, bloss weil du es gewohnt bist, Codes vom Makrorecorder "umzubauen" statt selber zu programmieren, verlang das nicht von Anderen, weil dein irgendwo im Netz gefundener Code zu 90% unbrauchbar für dein Anliegen ist.
"Ich möchte erstmal ein Grundaufbau haben und dann die nächsten Schritte machen." - ich bezweifle, dass du das ohne Hilfe hinbekommen würdest.
AW: VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen
26.10.2019 17:38:44
Arek
Hallo onur, nach suchen bin ich auf diesen link gekommen der in die Richtung ging, in die ich glaube bräuchte. Danke dir aber auch wenn ich schon zu der älteren Generation gehöre muss ich mir keine Unterstellungen bieten auch wenn, ich lasse es lieber.
https://www.herber.de/mailing/Nur_Zeilen_mit_bestimmtem_Inhalt_kopieren.htm
Trotzdem hoffe ich weiter auf Hilfe
Anzeige
AW: VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen
26.10.2019 17:45:23
onur
Das war wirklich nicht böse gemeint, ich wollte dich nur darauf hinweisen, dass der Code dafür nicht viel taugt.
Mit Grundaufbau alleine ist dir auch nicht geholfen, da du es nicht alleine hinkriegen würdest, deswegen solltest du:
A) Die Datei (oder Beispielsdatei) posten, wo man auch sehern kann, wie es vorher aussieht und nachher aussehen soll.
B) Das Ganze Problem erläutern - also auch "die nächsten Schritte".
AW: VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen
26.10.2019 19:30:15
Arek
Die Idee ist, wenn Heute minus Soll Date kleiner 30 Tage (dann 20, 10 usw.) soll eine Benachrichtigung rausgeschickt werden (wie hier schon Beispiele mit Vorlagen zum Geburtstag gefunden).
Habe die Daten jetzt nach BA verschoben damit ich BA:BA usw. verwenden kann. Das Makro soll die Daten von BA:BM wenn vorhanden, von Übersicht nach E-Mail kopieren und die „leeren“ ignorieren bzw. die mit SLxxxxx erkennen und kopieren. Wie Variabel/gut lösbar das am Ende ist weiß ich nicht und hängt wohl von der Mithilfe ab. Vielleicht könnte man das direkt ohne diese Hilfsspalte abfangen aber dafür habe ich keine Ahnung von Programmieren.
Es geht vor allem um eine Art Starthilfe welche ich dann anpassen kann. Das alles befindet sich noch in einem sehr frühen Stadium.
https://www.herber.de/bbs/user/132779.xlsm
Anzeige
AW: VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen
27.10.2019 08:58:48
Werner
Hallo Arek,
teste mal:
Option Explicit
Sub Tabelle_Kopieren_nach_E_Mail()
Dim loLetzte As Long
Application.ScreenUpdating = False
If WorksheetFunction.CountIf(Worksheets("Übersicht").Columns("D"), "SL*") > 0 Then
If Worksheets("Übersicht").Range("H36") = "Ja" Then
With Worksheets("E-Mail")
loLetzte = .Columns(2).Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, _
searchdirection:=xlPrevious).Row
If loLetzte > 21 Then .Range(.Cells(22, "B"), .Cells(loLetzte, "H")).ClearContents
End With
With Worksheets("Übersicht").ListObjects("Tabelle1")
If .AutoFilter Is Nothing Then .Range.AutoFilter
.Range.AutoFilter Field:=2, Criteria1:="=SL*", Operator:=xlAnd
.Range.AutoFilter Field:=5, Criteria1:=Worksheets("Übersicht").Range("F36")
.Range.AutoFilter Field:=6, Criteria1:=Worksheets("Übersicht").Range("C36")
.Range.AutoFilter Field:=13, Criteria1:="E-Mail"
If .AutoFilter.Range.Columns(2).SpecialCells(xlCellTypeVisible).Cells.Count > 1  _
Then
With .AutoFilter.Range
Union(.Offset(1).Resize(.Rows.Count - 1).Columns("B:D"), _
.Offset(1).Resize(.Rows.Count - 1).Columns("G"), _
.Offset(1).Resize(.Rows.Count - 1).Columns("I:J")).Copy
Worksheets("E-Mail").Range("B22").PasteSpecial Paste:=xlPasteValues
.Offset(1).Resize(.Rows.Count - 1).Columns("H").Copy
Worksheets("E-Mail").Range("H22").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
End If
If Not .AutoFilter Is Nothing Then .AutoFilter.ShowAllData
End With
End If
End If
End Sub
Deine "Hilfstabelle" in BA:BM brauchst du jetzt nicht mehr - kannst du löschen. Die Daten werden aus der Haupttabelle im Blatt "Übersicht" herausgefiltert und dann ins Blatt "E-Mail" kopiert.
Achtung: In Spalte D im Blatt "Übersicht" dürfen unterhalb deiner eigentlichen Datensätze keine weiteren Daten stehen. Dort ermittle ich im Makro die letzte belegte Zeile von unten nach oben.
Gruß Werner
Anzeige
AW: VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen
27.10.2019 10:19:45
Arek
Hallo Werner,
ich selbst habe aktuell mit dieser Formel experimentiert
{=WENN(ZEILE(A1)>ANZAHL2(A:A);"";INDEX(A:A;KKLEINSTE(WENN(NICHT(ISTLEER(A$1:A$100));ZEILE($1:$100) );ZEILEN($1:1)))) }
Muss aber gerade tief Luft holen und sage WOW :) danke dir für die Hilfe und Idee
AW: VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen
27.10.2019 15:46:52
Arek
Hallo Herbert und Community,
ich habe verstanden warum du es so gebaut hast und was es schritt für schritt macht. Bin aber mit dem Umbau ohne Erfahrungen kläglich gescheitert.
Bin dabei mir Youtube Video anzuschauen mit VBA für Anfängen und versuche es zu verstehen und nachzubauen.
Zu meinem aktuellen Problem: könnte bitte jemand dieses Makro so anpassen das, wenn im „Benachrichtigungen“ nein gewählt ist, trotzdem das Makro die Daten, nach E-Mail kopiert.
Habe mir die Variablen angepasst, das die Auswahl jetzt im E-Mail Blatt stattfindet.
Habe das von mir angepasste Sheet hochgeladen.
https://www.herber.de/bbs/user/132797.xlsm
Danke
Ich selbst möchte dann erstmals einzubauen, wenn keine Treffer (SL*) dann soll ein Test ala keine Daten gefunden erscheint. Ich hoffe die Videos bringen was :)
Anzeige
AW: VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen
27.10.2019 20:34:04
Werner
Hallo,
ich habe jetzt zwar keine Ahnung wer Herbert ist....
Aber teste das mal:
Option Explicit
Sub Tabelle_Kopieren_nach_E_Mail()
Dim loLetzte As Long
Application.ScreenUpdating = False
Sheets("Übersicht").Select
Range("A1").Select
'Wenn in Übersicht D SL erkannt wird dann nächster Schritt sonst endif
If WorksheetFunction.CountIf(Worksheets("Übersicht").Columns("D"), "SL*") > 0 Then
With Worksheets("E-Mail")
loLetzte = .Columns(2).Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, _
searchdirection:=xlPrevious).Row
If loLetzte > 21 Then .Range(.Cells(22, "B"), .Cells(loLetzte, "H")).ClearContents
End With
With Worksheets("Übersicht").ListObjects("Tabelle1")
If .AutoFilter Is Nothing Then .Range.AutoFilter
.Range.AutoFilter Field:=2, Criteria1:="=SL*", Operator:=xlAnd
'Abteilung auswählen
.Range.AutoFilter Field:=5, Criteria1:=Worksheets("E-Mail").Range("E2")
'Name auswählen
.Range.AutoFilter Field:=6, Criteria1:=Worksheets("E-Mail").Range("D2")
'Benachrichtigen auswählen
If Worksheets("E-Mail").Range("F2") = "Ja" Then
.Range.AutoFilter Field:=13, Criteria1:="E-Mail"
End If
If .AutoFilter.Range.Columns(2).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
With .AutoFilter.Range
Union(.Offset(1).Resize(.Rows.Count - 1).Columns("B:D"), _
.Offset(1).Resize(.Rows.Count - 1).Columns("G"), _
.Offset(1).Resize(.Rows.Count - 1).Columns("I:J")).Copy
Worksheets("E-Mail").Range("B22").PasteSpecial Paste:=xlPasteValues
.Offset(1).Resize(.Rows.Count - 1).Columns("H").Copy
Worksheets("E-Mail").Range("H22").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
Else
MsgBox "Mit den gewählten Einstellungen gibt es kein Ergebnis."
End If
If Not .AutoFilter Is Nothing Then .AutoFilter.ShowAllData
End With
Else
MsgBox "Es sind keine Inventarnummern beginnend mi SL vorhanden."
End If
End Sub
Gruß Werner
Anzeige
AW: VBA, kopieren, Zeilen ohne Werte aber mit Formeln überspringen
29.10.2019 15:54:08
Arek
Hallo Werner,
danke und Mea culpa keine Ahnung wie ich auf "Herbert" kam.
Gerne u. Danke für die Rückmeldung. o.w.T.
29.10.2019 16:07:09
Werner

344 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige