Clever-Excel-Forum

Normale Version: Spalten mit gleichen Überschriften untereinander
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5
(24.01.2016, 18:19)atilla schrieb: [ -> ]Sollen die Daten aus K21-K38 dann gelöscht werden, oder ...?

Danke für die Anwort! Ich freue mich richtig, wenn ichs jetzt vernünftig rüber gebracht habe:) Wenn keine "XDD Daten" vorhanden sind, welche noch an falscher Stelle stehen, und noch an richtige Position (XDD) gesetzt werden können, dann sollte dieser Block K21-K38 leer bleiben, oder aber einfach ein #NA bekommen.
Hallo,

jetzt taucht eine neue Frage auf:


Zitat:Wenn keine "XDD Daten" vorhanden sind, welche noch an falscher Stelle stehen,

Was bedeutet an falscher Stelle? Links - rechts, unten - oben, irgendwo innerhalb des Blattes?
Muss innerhalb der gesamten Tabelle nach "XDD" gesucht werden?
Stehen diese Bezeichnungen immer von Klammern eingeschlossen und man kann sie auf diese Weise eindeutig identifizieren?
Code:
Sub M_snb()
   sn = Sheet1.Cells(3, 1).CurrentRegion
  
   With CreateObject("scripting.dictionary")
        For j = 1 To UBound(sn) Step 18
          For jj = 2 To UBound(sn, 2)
             If sn(j + 1, jj) <> "" Then c00 = Split(Split(sn(j + 1, jj), "(")(1), ")")(0)
             If sn(j + 1, jj) <> "" Then .Item(c00) = .Item(c00) & "|" & Join(Array(sn(j, jj), sn(j + 1, jj), sn(j + 2, jj), sn(j + 3, jj), sn(j + 4, jj), sn(j + 5, jj), sn(j + 6, jj), sn(j + 7, jj), sn(j + 8, jj), sn(j + 9, jj), sn(j + 10, jj), sn(j + 11, jj), sn(j + 12, jj), sn(j + 13, jj), sn(j + 14, jj), sn(j + 15, jj), sn(j + 16, jj), sn(j + 17, jj)), "|")
          Next
        Next
        
        Sheets.Add.Name = "resultaat"
        Sheets("resultaat").Cells(1).Resize(, .Count) = .Keys()
        For j = 1 To .Count
            sp = Application.Transpose(Split(.items()(j - 1), "|"))
            Sheets("resultaat").Cells(2, j).Resize(UBound(sp)) = sp
        Next
   End With
   Sheets("resultaat").Columns.AutoFit
End Sub
(24.01.2016, 18:52)atilla schrieb: [ -> ]Hallo,

jetzt taucht eine neue Frage auf:



Was bedeutet an falscher Stelle? Links - rechts, unten - oben, irgendwo innerhalb des Blattes?
Muss innerhalb der gesamten Tabelle nach "XDD" gesucht werden?
Stehen diese Bezeichnungen immer von Klammern eingeschlossen und man kann sie auf diese Weise eindeutig identifizieren?
Nach XDD muss immer nur in der selben Zeile gesucht werden. Genau man kann diese eindeutig identifizieren. Diese stehen immer in Klammern. Ein weiteres Beispiel: Spalte H hat das Merkmal laut Zeile 1: EPS1TR12. In der Zelle H184 (also somit wieder dieser ganze Block: H147-164) befindet sich allerdings wieder ein Block der dort nicht hingehört..>(DPS)--> entweder nach links oder nach rechts muss dieser verschoben werden
(24.01.2016, 19:08)snb schrieb: [ -> ]
Code:
Sub M_snb()
  sn = Sheet1.Cells(3, 1).CurrentRegion
 
  With CreateObject("scripting.dictionary")
       For j = 1 To UBound(sn) Step 18
         For jj = 2 To UBound(sn, 2)
            If sn(j + 1, jj) <> "" Then c00 = Split(Split(sn(j + 1, jj), "(")(1), ")")(0)
            If sn(j + 1, jj) <> "" Then .Item(c00) = .Item(c00) & "|" & Join(Array(sn(j, jj), sn(j + 1, jj), sn(j + 2, jj), sn(j + 3, jj), sn(j + 4, jj), sn(j + 5, jj), sn(j + 6, jj), sn(j + 7, jj), sn(j + 8, jj), sn(j + 9, jj), sn(j + 10, jj), sn(j + 11, jj), sn(j + 12, jj), sn(j + 13, jj), sn(j + 14, jj), sn(j + 15, jj), sn(j + 16, jj), sn(j + 17, jj)), "|")
         Next
       Next
       
       Sheets.Add.Name = "resultaat"
       Sheets("resultaat").Cells(1).Resize(, .Count) = .Keys()
       For j = 1 To .Count
           sp = Application.Transpose(Split(.items()(j - 1), "|"))
           Sheets("resultaat").Cells(2, j).Resize(UBound(sp)) = sp
       Next
  End With
  Sheets("resultaat").Columns.AutoFit
End Sub

Ist damit mein Problem gelöst? Wenn ich das in ein Modul schreibe und ausführe kommt leider ein Fehler: Laufzeitfehler 424 Objekt erforderlich
Hallo snb,

tolle Lösung. Thumps_up


Hab da vielleicht zu viel versucht rein zu interpretieren. Dass die Blöcke einfach zusammengfasst werden können, habe ich gar nicht gesehen.
Ich war darauf fixiert, dass der Aufbau nicht verändert werden darf.

@Funkydonkoy

snb hat die Blöcke zusammengelegt und sie in die per Code erstellte Tabelle "Resultaat" geschrieben.
Es fehlt nur die erste Spalte mit den jahreszahlen.

Dabei ist zu beachten, dass er immer von 18 Blöcken, 16 Datumswerten und zwei Überschriftzeilen, ausgeht.
Füge den Code in ein Modul ein und starte es. Mehr brauchst Du nicht zu machen. Dann schau Dir das Ergebnis in der Tabelle "Resultaat" an.
(24.01.2016, 20:32)atilla schrieb: [ -> ]Dass die Blöcke einfach zusammengfasst werden können, habe ich gar nicht gesehen.
Ich war darauf fixiert, dass der Aufbau nicht verändert werden darf.

@Funkydonkoy


Dabei ist zu beachten, dass er immer von 18 Blöcken, 16 Datumswerten und zwei Überschriftzeilen, ausgeht.
Füge den Code in ein Modul ein und starte es. Mehr brauchst Du nicht zu machen. Dann schau Dir das Ergebnis in der Tabelle "Resultaat" an.

Danke für eure Antworten! Was meinst du mit Blöcke zusammenfassen?:) Leider kommt bei mir der genannte Laufzeitfehler. Wenn ich auf Debuggen klicke, springt der gelbe Zeiger in folgende Zeile: sn = Sheet1.Cells(3, 1).CurrentRegion
Hallo,

erstze
Code:
Sheet1

mit

Code:
Tabelle1


Dann schau Dir einmal das Ergebnis an, ob es passt.
(24.01.2016, 19:08)snb schrieb: [ -> ]Dann schau Dir einmal das Ergebnis an, ob es passt.

Genial! Einfach Wahnsinn.. Vielen Dank euch beiden! Auf den ersten Blick ist es perfekt. Da bekommt man Lust sich mit VBA zu beschäftigen. Ist es möglich dieses Makro komplett auf alle Zeilen/Zellen zu übertragen, oder ist das schon? Es kommen nämlich noch massig neue Merkmale in weitere Spalten. Ließt das Makro die Werte in den Klammern aus und vergleich diese dann mit der Zeile 1? Wie genau funktioniert das? :)
Hallo,

snb vergleicht nicht.

Ich kann es nur im Groben beschreiben.

Die Werte in Zeile 1 bilden einen Schlüssel.
Dann werden in 18 Schritten ab Zeile 3 die Klammerausdrücke in der Zeile herausgelesen und dem passenden Schlüssel aus Spalte 1 angefügt.

Neue Zeilen und spalten werden insofern mit einbezogen, wenn die Daten immer in 18 er Blöcken untereinander stehen.
Da er ja immer beginnend ab der Zeile 3jede 18 Zeile durchläuft.

Das könnte man aber auch leicht dynamisch aufziehen, in dem man die Schrittweite berechnet. Z.B
Max(Jahreszahl) - Min( Jahreszahl) + 2 (zwei Überschriftzeilen)
Seiten: 1 2 3 4 5