250 Aufrufe
Gefragt in Tabellenkalkulation von
Guten Tag mein Nahme ist Herbert. Bis jetzt gelingt es mir nicht folgendes Problem zu lösen.

Vielen Dank für einen Lösungsvorschlag.

Im Tabellenblatt (Januar) nach Text „Hans“ suchen. Bereich C5 bis C10. Wenn Text gefunden, 2 Zellen rechts davon kopieren und in Tabellen-Blatt (Test) in Zeile ab Zelle (C12) fortlaufend kopieren.

15 Antworten

+1 Punkt
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Herbert,

du musst vor dem Kopieren einfach nur prüfen, ob in Spalte A der gefundenen Zeile die 5 steht - also anstelle

                .Range(rngZelle.Offset(0, 1), rngZelle.Offset(0, 2)).Copy Worksheets("Test").Cells(12, intSpalte)

dieses:

                If rngZelle.Offset(0, -2) = 5 Then .Range(rngZelle.Offset(0, 1), rngZelle.Offset(0, 2)).Copy Worksheets("Test").Cells(12, intSpalte)

Bis später, Karin

0 Punkte
Beantwortet von herbert49 Einsteiger_in (18 Punkte)

Hallo Karin herzlichen Dank für deine Hilfe.

Super Ansatz. Die Abfrage in Spalte A (Suche „5“) und Spalte C (Suche „Hans“) klappt wirklich.

Leider gibt es noch ein kleines Problem.

Der Suchbereich ist A15 bis A40. Gesucht wird die Zahl 5. In Spalte C nach „Hans“

Wenn in A 15 die Zahl 5 steht, wird in Blatt „Test“ ab Spalte C geschrieben.

Wenn erst  in  A 16 die Zahl 5 steht, wird in Blatt „Test“ ab Spalte C geschrieben.

Wenn erst  in A 17 die Zahl 5 steht, wird in Blatt „Test“ ab Spalte E geschrieben.

Wenn erst in A 18 die Zahl 5 steht, wird in Blatt „Test“ ab Spalte G geschrieben.

Wenn erst in A 20 die Zahl 5 steht, wird in Blatt „Test“ ab Spalte K geschrieben.

Ich weiss nicht weiter. Kannst du mir nochmals helfen?

Vielen Dank

Mfg Herbert

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
[gelöscht, falsche Position]
+1 Punkt
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Herbert,

du hast Recht - ich hatte nicht bedacht, dass die Spalte jedesmal hochgezählt wird. So sollte es aber korrekt funktionieren:

                If rngZelle.Offset(0, -2) = 5 Then
                    .Range(rngZelle.Offset(0, 1), rngZelle.Offset(0, 2)).Copy Worksheets("Test").Cells(12, intSpalte)
                    intSpalte = intSpalte + 2
                End If
                Set rngZelle = .Range("C15:C40").FindNext(rngZelle)

Bis später, Karin

0 Punkte
Beantwortet von herbert49 Einsteiger_in (18 Punkte)

Hallo Karin herzlichen Dank für deine Hilfe.

Unglaublich, einfach perfekt. Es funktioniert super. smiley

Viele vielen Dank. Ich wünsche dir einen schönen Tag.

Mfg. Herbert

...