Excel VBA
Hallo zusammen,
habe ein keines Problem mit Excel. Habe mich schon lange nicht mehr mit der Thematik beschäftigt.
Kurze Problembeschreibung:
Möchte per Makro eine Spalte markieren und in diesem Bereich dann eine Suche laufen lassen.
Der Wert für die Suche kann fest vorgegeben werden.
Evtl. Fehlermeldung bei nicht vorhanden dieses Wertes.
Angenommen der Wert wird in der Spalte gefunden und es ist die Zelle A100, dann möchte ich alle Werte unterhalb von B100 in eine neue Spalte kopieren.
Hört sich einfach an, aber ich habe schon Probleme mit dem Finden des Wertes....
Vielleicht hat jemand eine Idee und auch die Zeit ein paar Zeilen zu schreiben.
Wäre Dankbar
Falls noch etwas an der Beschreibung fehlt, dann bitte eben melden.
habe ein keines Problem mit Excel. Habe mich schon lange nicht mehr mit der Thematik beschäftigt.
Kurze Problembeschreibung:
Möchte per Makro eine Spalte markieren und in diesem Bereich dann eine Suche laufen lassen.
Der Wert für die Suche kann fest vorgegeben werden.
Evtl. Fehlermeldung bei nicht vorhanden dieses Wertes.
Angenommen der Wert wird in der Spalte gefunden und es ist die Zelle A100, dann möchte ich alle Werte unterhalb von B100 in eine neue Spalte kopieren.
Hört sich einfach an, aber ich habe schon Probleme mit dem Finden des Wertes....
Vielleicht hat jemand eine Idee und auch die Zeit ein paar Zeilen zu schreiben.
Wäre Dankbar
Falls noch etwas an der Beschreibung fehlt, dann bitte eben melden.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 98683
Url: https://administrator.de/forum/excel-vba-98683.html
Ausgedruckt am: 16.01.2025 um 03:01 Uhr
6 Kommentare
Neuester Kommentar
Hallo bommerlunder1972 und willkommen im Forum!
Kann der Suchwert auch mehrfach vorkommen, und wenn ja, genügt es, das erste Auftreten dieses Wertes zu finden?
Welche Vorgaben gelten für die Zielspalte (in welche kopiert werden soll) - welche Spalte (ev auch fixer Abstand zur Suchspalte), einfügen wieder unterhalb von Zeile 100, ...?
Genügt es, wenn die Werte der Zellen unterhalb von B100 in die Zielspalte übertragen werden, oder werden auch die Formatierungen benötigt?
Ein Grundgerüst könnte jedenfalls so aussehen:
Grüße
bastla
P.S.: Der Titel dieses Beitrages lässt sich sicherlich noch etwas informativer formulieren (etwa "Excel - Per VBA Wert suchen und abhängig davon weitere Werte kopieren") ...
Möchte per Makro eine Spalte markieren ...
Soll die Spalte tatsächlich vom Makro markiert werden (und, als Voraussetzung dafür, damit eigentlich im Makro bereits als Konstante eingetragen sein), oder soll das Makro in einer bereits vorweg (von Hand) markierten Spalte suchen?Kann der Suchwert auch mehrfach vorkommen, und wenn ja, genügt es, das erste Auftreten dieses Wertes zu finden?
Welche Vorgaben gelten für die Zielspalte (in welche kopiert werden soll) - welche Spalte (ev auch fixer Abstand zur Suchspalte), einfügen wieder unterhalb von Zeile 100, ...?
Genügt es, wenn die Werte der Zellen unterhalb von B100 in die Zielspalte übertragen werden, oder werden auch die Formatierungen benötigt?
Ein Grundgerüst könnte jedenfalls so aussehen:
Suchbegriff = "Dein Suchbegriff"
Zeile = 3 'Suche beginnt in dieser Zeile der markierten Spalte
AbstandQuelle = 1 'Spaltenabstand für Quelle der Kopie
AbstandZiel = 4 'Spaltenabstand für Ziel der Kopie
ZeileZiel = 10 'Zeile der Zielspalte, ab welcher die Werte eingefügt werden sollen
Spalte = ActiveCell.Column
Gefunden = False
Do While Cells(Zeile, Spalte).Value <> 0 And Zeile <= 65536
If Cells(Zeile, Spalte).Value = Suchbegriff Then
Gefunden = True
Exit Do
End If
Zeile = Zeile + 1
Loop
If Gefunden Then
Range(Cells(Zeile, Spalte).Offset(1, AbstandQuelle), Cells(Zeile, Spalte).Offset(0, AbstandQuelle).End(xlDown)).Copy
Cells(ZeileZiel, Spalte).Offset(0, AbstandZiel).Activate
ActiveSheet.Paste
Else
MsgBox """" & Suchbegriff & """ konnte nicht gefunden werden!", vbCritical, "Nicht gefunden ..."
End If
bastla
P.S.: Der Titel dieses Beitrages lässt sich sicherlich noch etwas informativer formulieren (etwa "Excel - Per VBA Wert suchen und abhängig davon weitere Werte kopieren") ...
Hallo bommerlunder1972!
In der folgenden Version wird der Suchbegriff ("Dein Suchbegriff") in jener (einen) Spalte gesucht, in der sich der Zellcursor beim Start des Makros befindet. Die Suche beginnt in der angegebenen Zeile (3) und endet
- wenn der Suchbegriff gefunden wurde (exakte Übereinstimmung mit Berücksichtigung Groß-/Kleinschreibung) oder
- wenn die erste leere Zelle in der Suchspalte erreicht wird oder
- wenn die Zeile 65536 (letzte Zeile für Excel < 2007) erfolglos durchsucht wurde.
Unter der Annahme einer Fundstelle A100 wird mit der durch "AbstandZeileQuelle" (1) und "AbstandSpalteQuelle" (1) festgelegten Zelle - daher im Beispiel ab B101 - beginnend der mit zusammenhängenden Daten gefüllte Rest der Spalte kopiert (also von B101 bis zur letzten Zelle der Spalte B vor einer leeren Zelle oder bis B65536). Da es ohnehin keine besondere Formatierung gibt, erfolgt einfach ein "Copy" inkl. Rahmen und Formaten. Hinweis: Sollte die Möglichkeit bestehen, dass sich die Fundstelle bereits in Zeile 1 befindet, müsste der zu kopierende (Quell-)Bereich mit einer anderen Technik festgelegt ewrden.
Eingefügt werden die Zellen ab "SpalteZiel/ZeileZiel" (G16) - der Vorgang entspricht einem manuell durchgeführten "Copy/Paste".
Grüße
bastla
In der folgenden Version wird der Suchbegriff ("Dein Suchbegriff") in jener (einen) Spalte gesucht, in der sich der Zellcursor beim Start des Makros befindet. Die Suche beginnt in der angegebenen Zeile (3) und endet
- wenn der Suchbegriff gefunden wurde (exakte Übereinstimmung mit Berücksichtigung Groß-/Kleinschreibung) oder
- wenn die erste leere Zelle in der Suchspalte erreicht wird oder
- wenn die Zeile 65536 (letzte Zeile für Excel < 2007) erfolglos durchsucht wurde.
Unter der Annahme einer Fundstelle A100 wird mit der durch "AbstandZeileQuelle" (1) und "AbstandSpalteQuelle" (1) festgelegten Zelle - daher im Beispiel ab B101 - beginnend der mit zusammenhängenden Daten gefüllte Rest der Spalte kopiert (also von B101 bis zur letzten Zelle der Spalte B vor einer leeren Zelle oder bis B65536). Da es ohnehin keine besondere Formatierung gibt, erfolgt einfach ein "Copy" inkl. Rahmen und Formaten. Hinweis: Sollte die Möglichkeit bestehen, dass sich die Fundstelle bereits in Zeile 1 befindet, müsste der zu kopierende (Quell-)Bereich mit einer anderen Technik festgelegt ewrden.
Eingefügt werden die Zellen ab "SpalteZiel/ZeileZiel" (G16) - der Vorgang entspricht einem manuell durchgeführten "Copy/Paste".
Suchbegriff = "Dein Suchbegriff"
Zeile = 3 'Suche beginnt in dieser Zeile der markierten Spalte
AbstandSpalteQuelle = 1 'Spaltenabstand für Quelle der Kopie (A100 -> B100)
AbstandZeileQuelle = 1 'Zeilenabstand für Quelle der Kopie ( -> B101)
SpalteZiel = "G" 'Spalte für Ziel der Kopie
ZeileZiel = 16 'Zeile für Ziel der Kopie
Spalte = ActiveCell.Column
Gefunden = False
Do While Cells(Zeile, Spalte).Value <> "" And Zeile <= 65536
If Cells(Zeile, Spalte).Value = Suchbegriff Then
Gefunden = True
Exit Do
End If
Zeile = Zeile + 1
Loop
If Gefunden Then
Range(Cells(Zeile, Spalte).Offset(AbstandZeileQuelle, AbstandSpalteQuelle), Cells(Zeile, Spalte).Offset(AbstandZeileQuelle-1, AbstandSpalteQuelle).End(xlDown)).Copy
Cells(ZeileZiel, SpalteZiel).Activate
ActiveSheet.Paste
Else
MsgBox """" & Suchbegriff & """ konnte nicht gefunden werden!", vbCritical, "Nicht gefunden ..."
End If
bastla
Hallo bommerlunder1972!
Der umgekehrte Weg ("eine echte Zahl machen") sollte zwar auch funktionieren ("12:00:00" wird dann zu 0,5 - Zeitangaben werden als Bruchteile von Tagen gespeichert - und der Datumswert entspricht der Anzahl der Tage ab dem 1.1.1900, also 39.884, daher wäre die gesuchte Zahl 39884,5), aber lesbarer bleibt es sicherlich bei Behandlung als Datums/Zeitwert.
Grüße
bastla
Ich müßte nach einem Datum incl. Zeitstempel suchen, was folgendermaßen formatiert ist.
12.03.2009 12:00:00
Wenn der Wert offensichtlich von Excel als Datum/Zeit interpretiert wird, sollte es mit folgendem Suchbegriff klappen:12.03.2009 12:00:00
Suchbegriff = CDate("12.03.2009 12:00:00")
Grüße
bastla