Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Aktive Zelle(n) bis zu einer Leerzeile kopieren
#1
Hallo zusammen,

ich habe ein Problem bei dem ich absolut nicht weiter komme, weil ich nicht weiß wie ich es lösen kann:

Ich habe ein Excel Blatt, das unterschiedliche Überschriften besitzt, wie beispielsweise Alex, Bibi und Caesar
Alex, Bibi und Caesar können in unterschiedlichen Zeilen stehen, die Spalte wo sie stehen ist aber immer A.
Unter Alex, Bibi und Caesar stehen ab der siebten Zeile immer (unterschiedlich viele) Positionen in den Spalten A-D die ich kopieren und in einem anderen Blatt einfügen möchte. Sobald die Positionen aufhören kommt immer erst eine Leerzeile und anschließend die nächste Überschrift

Ihr könnt Euch das wie folgt vorstellen:

[u][b][img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

Meine Idee war nun wie folgt:
Ich weiß das der für mich interessante Inhalt (die Leistungspoisitionen und Stückzahlen immer in der siebten Spalte unter Alex, Bibi und Caesar stehen. Also suche ich per str_SuchString = "Alex" die entsprechende Überschrift und springe anschließend perActiveCell.Offset(7, 0).Select in die entsprechende erste interessante Zelle (hier A10).
Mein Problem ist aber, dass die Leistungspositionen unterschiedlich viele sind, da das Blatt in dem ich arbeite automatisch erstellt wird. Sprich die Leistungspositionen variieren. Gut ist aber, dass die Überschriften einzigartig sind und der Aufbau auch. Sprich in der siebten Zeile unter der entsprechenden Überschrift steht immer die erste Leistungsposition. Und nach der letzten Position kommt immer eine Leerzeile. Aber wie kann ich nach diesen (für mich interessanten) Bereich eingrenzen? und kopieren:

Was ich bis jetzt schon geschriebne habe ist folgendes:



Code:
Sub Test3()
'In dieses Blatt, möchte ich später meinen Inhalt kopieren
Dim wsNew As Worksheet
Set wsNew = Worksheets.Add
With wsNew
  .Name = "Übersicht"
  .Move after:=Sheets(Sheets.Count)
End With
Set wsNew = Nothing

'In diesem Blatt stehen die für mich interessanten Informationen
Worksheets("Leistungspositionen").Activate
Dim str_SuchString As String
Dim Counter1 As Integer
Dim Counter2 As Integer

'Überschrift Alex suchen
str_SuchString = "Alex"
For Counter1 = 1 To ActiveSheet.Cells.SpecialCells(xlLastCell).Column
   
   For Counter2 = 1 To ActiveSheet.Cells.SpecialCells(xlLastCell).Row
       If Cells(Counter2, Counter1).Value = str_SuchString Then
           Cells(Counter2, Counter1).Select
       End If
   Next
Next
'In das Feld der ersten Leistungsposition springen und dieses aktivieren
ActiveCell.Offset(7, 0).Select

Bis hierhin macht der Code auch, was er machen soll. Aber wie ich habe keine Ahnung wie ich weiter machen kann

Vielen Dank vorab schon mal, für Eure Hilfe!
Antworten Top
#2
Hallo,

anstatt einem Bild bitte eine Beispielmappe hochladen.


Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • Dragoner
Antworten Top
#3
Gerne, anbei die Mappe


Angehängte Dateien
.xlsx   Testmappe.xlsx (Größe: 13,08 KB / Downloads: 2)
Antworten Top
#4
Moin,
a) mit den verbundenen Zellen :16:  wirst du noch viel "Freude" haben ... 
b) Und warum suchst du nicht nach "Leistungspositionen"?
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • Dragoner
Antworten Top
#5
Zitat:Moin,
a) mit den verbundenen Zellen wirst du noch viel "Freude" haben ...
b) Und warum suchst du nicht nach "Leistungspositionen"?
Moin,

a) Inwiefern? Kann ich die nicht einfach 1:1 rüberkopieren? Weil die Struktur von A-D ist ja immer die selbe.
Zwecks kopieren. Hier hätte ich an ein Array gedacht:
varX As Variant
varX = Array(ActiveCell, ActiveCell.Offset(X, X), ActiveCell.Offset(X, X))?

b) Die Idee kam mir anfangs auch. Das Problem hierbei ist nur, dass unter den verschiedenen Überschriften identische Leistungspositionen stehen können. Sprich, wenn Leistungsposition "1" beispielsweise unter Überschrift "Alex" einmal fehlen sollte, aber unter Überschrift "Bibi" vorhanden ist werden nicht zusammengehörige Informationen vermischt. Denn jede mögliche Leistungsposition kann theoretisch unter jeder Überschrift stehen, muss dies aber nicht. Sprich jede Kombination ist möglich. Leistungsposition "1" kann mal unter "Alex" oder "Bibi" stehen, kann dies aber theoretisch auch unter beiden, oder gar keinen.
Und da wie gesagt, der Inhalt des Arbeitsblattes automatisch erstellt wird und somit unterschiedlich ausfallen kann, ist die einzig mögliche Trennung anhand der Überschriften möglich, da diese (und die Leerzeile nach der letzten Leistungsposition) die einzige(n) konstante(n) sind. Undecided
Antworten Top
#6
Hallo,

und wohin soll kopiert werden?

Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • Dragoner
Antworten Top
#7
Hallo,

teste mal.


.xlsm   Kopieren.xlsm (Größe: 26,36 KB / Downloads: 1)

Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • Dragoner
Antworten Top
#8
Wow danke! Das funktioniert tadellos und ist fast zu 100% das, was ich mir vorstellte :)

Kann man das Makro auch noch so ändern, dass er für jeden Kopiervorgang (sprich für jede Suche) ein neues Blatt erstellt und dort in die zweite Zeile kopiert?
Grund: Ansonsten überschreiben sich die kopierten Informationen :)
Ich möchte diese neue (befüllte) Seite nämlich (nachdem der Knopf gedruckt wurde) ausdrucken. Deshalb wäre jeweils eine neue Seite toll.
Dickes Danke aber schon mal. Das half mir unglaublich weiter. Habe Dein Makro nun schon mehrmals gelesen und verstehe in etwa auch schon wie es arbeitet. Wieder was gelernt.. :)
Antworten Top
#9
Hallo,

teste:


.xlsm   Kopieren.xlsm (Größe: 25,65 KB / Downloads: 3)


Gruß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • Dragoner
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste