Excel (VBA) farbig Markieren und anschließend kopieren

Hi liebe Leute,
ich benötige bei meiner Excel-Datei eure Hilfe.

Die Datei hat zwei Tabellenblätter „Ermittlung“ und „Markierung“

In dem Tabellenblatt „Ermittlung“ steht untereinander genaue Zellenpositionen: A4, A1517, A119, A1831 usw. Nun möchte ich, dass dies gerne mittels VBA Makro alle diese Positionen erkennt und auf dem anderen Tabellenblatt „Markierung“ farbig markiert.

Dann im nächsten Makro, dass Excel diese farbigen Zeilen kopiert und auf das dritte Tabellenblatt „Prüfung“ kopiert. Aber er soll nicht einfach die komplette Zeile kopieren, sondern nur den Bereich Spalte A bis R und genau auch nur in Spalte A bis R diese wieder einfügen.

Gerne seprate in zwei verschiedenen Makros. Ich habe schon gesucht und probiert, aber nichts hat geholfen. Habt Ihr eine Idee? Danke

1 Like

Hallo,

muss es unbedingt per Makro sein? Zumindest den ersten Teil, das Markieren, könnte man als Bedingte Formatierung lösen:

=ZÄHLENWENN(Ermittlung!$A:$A;"A"&ZEILE())>0

Gruß
Tobias

Hi Tobias, danke für deine Antwort. So geht es natürlich auch. Vielen Dank dafür. Hast du auch ein Plan für den zweiten Teil? Danke dir.

Hallo,

als Notlösung würden mir nur die Filter einfallen. Wenn du im Tabellenblatt „Prüfung“ die Formel

=WENN(ZÄHLENWENN(Ermittlung!$A:$A;"A"&ZEILE())>0;Markierung!A1;"")

verwendest, werden nur die passenden Zellen angezeigt. Anschließend kannst du über die FIlter alle leeren Zeilen ausblenden.

Gruß
Tobias

nett von dir, aber das ist nicht das richtige für mich. trotzdem danke ich dir

Mir ist doch noch etwas für „Prüfung“ eingefallen:

=WENN(Ermittlung!$A1="";"";INDIREKT("Markierung!Z"&TEIL(Ermittlung!$A1;2;7)&"S"&SPALTE();FALSCH))

Das ist die Formel für Zeile 1 und sie kann nach unten erweitert werden.
Wenn du zur Funktion von INDIREKT() noch Infos möchtest bzw. nicht verstehst was ich da zusammengebastelt habe, frag einfach nach, dann erläutere ich das gerne genauer.

Für die Prüfung hätte ich folgendes Makro

Sub Pruefung()
Sheets("Ermittlung").Select
lz = Cells(Rows.Count, 1).End(xlUp).Rows.Row
For i = 1 To lz
    adr = Cells(i, 1)
    zn = Range(adr).Row
    Worksheets("Markierung").Range("A" & zn & ":R" & zn).Copy _
       Destination:=Worksheets("Prüfung").Range("A" & i)
Next i
End Sub

Grüsse Niclaus

Hey Niclaus, danke dir erstmal. Leider zeigt er mir bei „zn = Range(adr).Row“ folgenden Fehler an: Laufzeitfehler 1004: Die Methode Rangefür das Objekt _Globalist fehlgeschlagen

Wow, die funktioniert es gut. Bei Leeren Fehler schreibt er bei dieser Formel dann eine 0 rein. Könntest du noch ergänzen, dass wenn die Feld Leer ist also 0, dass dann das Ergebnis auch Leer ist, anstatt 0? Verstehst du was ich meine? Vielen Dank.

ein weitere Problem ist leider, dass ich dann leider nichts mehr sortieren kann :frowning:

 "zn = Range(adr).Row" folgenden Fehler an: Laufzeitfehler 1004

Das Makro geht davon aus, dass in der Tabelle Ermittlung in Spalte A nur Zellbezüge aufgeführt sind, also keine „gewöhnlichen“ Texte oder Zahlen. Und: die Zellbezüge müssen unmittelbar hintereinander aufgeführt sein. Also keine leeren Zellen zwischen einzelnen Zellbezügen.

Du kannst in das Makro am Anfang folgende Befehlszeile einfügen, dann spielt das Erwähnte keine Rolle:

On Error Resume Next

Niclaus

Ich nehme an, du meinst wenn in „Markierung“ kein Inhalt ist. Es wird zwar langsam unübersichtlich, aber das sollte funktionieren:

=WENN(Ermittlung!$A1="";"";WENN(INDIREKT("Markierung!Z"&TEIL(Ermittlung!$A1;2;7)&"S"&SPALTE();FALSCH)="";"";INDIREKT("Markierung!Z"&TEIL(Ermittlung!$A1;2;7)&"S"&SPALTE();FALSCH)))

Ich kann da kein Problem erkennen. Erklär bitte mal genau, was du wie sortieren möchtest und welches Problem dabei auftaucht.