Frage von shikser, 86

VBA: wie kann ich einzelne Bereiche kopieren und in einer anderen Tabelle richtig anordnen?

Hallo Zusammen,

ich habe folgendes Problem: Ich soll aus einem ziemlich unübersichtlichen Tabellenblatt Zellen aus bestimmten Spalten (mit bestimmter Überschrift) kopieren und in eine andere Tabelle einfügen, wenn der Inhalt > 0 ist. Das blöde hierbei ist, dass sich die Überschriften nach einiger Zeit wiederholen, die Zellen mit den Werten aber immer weiter unten auftauchen (vielleicht wird das ja im beigefügten Bild deutlich, auch wenn die Farben gewöhnungsbedürftig sind :D). Ich möchte also quasi diese Blöcke nehmen und untereinander anordnen, wobei nicht immer alle Überschriften (also auch die Spaltenanzahl) identisch sind :/

Ich bin für jeden Ansatz dankbar. Schönen Gruß Jan

Expertenantwort
von Oubyi, Community-Experte für Excel, 62

Leider kann man mit dem Bild, auch vergrößert nichts anfangen.
Versuche es doch noch mal mit kleineren Ausschnitten und mehreren Bildern.
Am besten mit sichtbaren Spalten- und Zeilenköpfen.
Dazu musst Du hier selbst eine Antwort auf Deine Frage geben.
Wenn Du hier in einem Kommentar darauf hinweist, sehe ich das auch in meiner Übersicht.

Expertenantwort
von Ninombre, Community-Experte für Excel, 61

Einige Fragen hätte ich auch:

Das Bild suggeriert an einer Stelle, dass es Überlappungen gibt (über dem türkisen Balken rechts stehen farblose Einträge). Ist das so oder ist der erste Eintrag in einer Spalte immer die Überschrift? Falls nicht: Wie wird zwischen Überschrift und Inhalten unterschieden?

Wieviele Zeilen und Spalten gibt es (hinsichtlich Performance)?

Ein erster grober Ansatz (aber nicht unbedingt laufzeitoptimiert...) wäre es Spalte für Spalte durchzugehen. Taucht eine Überschrift auf (bei meinem Beispiel A, B, C) wird die Zielspalte (also wohin das Ergebnis kopiert werden soll) für die weiteren Einträge in dieser Spalte festgelegt, bis eine neue Überschrift erscheint. Im Beispiel stehen die Werte in einer Matrix von 10 Zeilen und 10 Spalten

Sub tt()
For i = 1 To 10 'spalten
For j = 1 To 10 ' zeilen
If Cells(j, i).Value <> "" Then
Select Case Cells(j, i).Value
Case "A": zielspalte = 12
Case "B": zielspalte = 13
Case "C": zielspalte = 14
Case Else: Cells(Cells(Rows.Count, zielspalte).End(xlUp).Row + 1, zielspalte).Value = Cells(j, i).Value
End Select
End If
Next j
Next i
End Sub
Kommentar von shikser ,

Moin Ninombre,

vielen Dank für den Ansatz, den werde ich erstmal weiter verfolgen :)

Gruß

Jan

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten