Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1212to1216
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten ohne Lerrzeilen Transponieren

Daten ohne Lerrzeilen Transponieren
Stephan
Hallo Excel Profis
ich möchte durch Klick auf eine Schaltfläche aus einer Spalten eine Art Auswertung machen. Die Zellen (inkl deren Formatierung)
sollen in das Arbeitsblatt "AUswertung" kopiert werden. Diese sollen im neuen Arbeitsblatt aber horizontal in Zeilen geschrieben
werde, wobei die Leerzeilen der Quell-Spalten Spalten übesprungen werden sollen.
Es sollen immer die Daten von Zelle B4 bis zur letzt gefüllten Zelle der Spalte berücksicht werden
Ich habe mal eine Beispieldatei erstellt. Im Arbeitsblatt "Auswertung" habe habe die Solldaten geschrieben.
https://www.herber.de/bbs/user/74693.xls
Bei jedem klick sollen die Daten immer in eine neue Zeile geschrieben werden, sodaß diese gesammelt werden können.
Hoffe jemand kann mir helfen
Gruß
Stephan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Daten ohne Lerrzeilen Transponieren
06.05.2011 20:04:56
fcs
Hallo Stephan,
das folgende Makro in einem allgemeinen Modul der Datei einfügen. Dann dem Grafikelement das Makro zuordnen (via Rechte-Maustasten-Klick).
Gruß
Franz
Sub AbInsArchiv()
Dim wksQuelle As Worksheet, Zeile As Long
Dim wksZiel As Worksheet, ZeileZiel As Long, SpalteZiel As Long
Set wksQuelle = ActiveSheet
Set wksZiel = Worksheets("Auswertung")
'Nächste Zielzeile ermitteln
With wksZiel
ZeileZiel = Application.WorksheetFunction.Max(4, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
SpalteZiel = 0
End With
With wksQuelle
'Zeilen in Spalte B an Zeile 4 abarbeiten
For Zeile = 4 To .Cells(.Rows.Count, 2).End(xlUp).Row
If Not IsEmpty(.Cells(Zeile, 2)) Then
SpalteZiel = SpalteZiel + 1
.Cells(Zeile, 2).Copy Destination:=wksZiel.Cells(ZeileZiel, SpalteZiel)
End If
Next
End With
End Sub

Anzeige
AW: Daten ohne Lerrzeilen Transponieren
06.05.2011 23:44:06
Stephan
Hallo Franz,
klappt super besten Dank, doch ein kleines Problem habe ich noch.
mit
If Not IsEmpty(.Cells(Zeile, 2)) Then
SpalteZiel = SpalteZiel + 1
.Cells(Zeile, 2).Copy Destination:=wksZiel.Cells(ZeileZiel, SpalteZiel)
End If

wird ja nur gezählt wenn Zelle "nicht leer". Wenn nun aber eine Formel drin steht wird diese kopiert nicht aber der Wert. Da ich aber in den Quell-Zellen Formeln drin habe, werden alle mit der Formel kopiert. Wie kann ich nur die Werte und Formate kopieren.
Hab mich in meiner ersten Beschreibung falsch ausgedrückt, sorry.
Gruß
Stephan
Anzeige
AW: Daten ohne Lerrzeilen Transponieren
07.05.2011 09:11:47
fcs
Hallo Stephan,
passiert schon mal, dass man bei einer frage nicht gleich an alle Randbedingungen denkt.
Normal könnte man jetzt Spezial-Kopieren und jeweils nur Format+Werte für jede Zelle ins Blatt Auswertung kopieren.
Du verwendest jedoch bedingte Formatierungen. Da generiert Excel im Blatt Auswertung zumindest unter Excel 2007 für jede Zelle 3 Einträge in der Liste der bedingten Formatierungen. Ich kenne hier jetzt nicht die max. zulässige Anzahl, aber erfahrungsgemäß gibt es in Excel für fast alles irgendeine Obergrenze.
Damit es hier nicht ggf. Probleme gibt werden vom Makro im Archiv-Blatt nach jedem Eintrag einer Zeile alle Daten komplett neu formatiert. Ich hoffe, das passt dann so.
Gruß
Franz
Sub AbInsArchiv()
Dim wksQuelle As Worksheet, Zeile As Long
Dim wksZiel As Worksheet, ZeileZiel As Long, SpalteZiel As Long
Set wksQuelle = ActiveSheet
Set wksZiel = Worksheets("Auswertung")
'Nächste Zielzeile ermitteln
With wksZiel
ZeileZiel = Application.WorksheetFunction.Max(4, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
SpalteZiel = 0
End With
'Werte der Zellen übertragen
With wksQuelle
'Zeilen in Spalte B an Zeile 4 abarbeiten
Application.ScreenUpdating = False
For Zeile = 4 To .Cells(.Rows.Count, 2).End(xlUp).Row
If Not IsEmpty(.Cells(Zeile, 2)) Then
SpalteZiel = SpalteZiel + 1
wksZiel.Cells(ZeileZiel, SpalteZiel) = .Cells(Zeile, 2)
End If
Next
End With
'Zielblatt Formatieren
With wksZiel
'Datum/Zeit-Format übertragen
wksQuelle.Range("B4").Copy
.Range(.Cells(4, 2), .Cells(ZeileZiel, 1)).PasteSpecial Paste:=xlPasteFormats
'Formate - speziel bedingte Formate für restlichen Datenbereich im Zielblatt setzen.
With .Range(.Cells(4, 2), .Cells(ZeileZiel, _
.Cells.SpecialCells(xlCellTypeLastCell).Column))
.ClearFormats
wksQuelle.Range("B5").Copy
.PasteSpecial Paste:=xlPasteFormats
End With
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Daten ohne Lerrzeilen Transponieren
07.05.2011 10:29:47
Stephan
Super, Vielen lieben Dank für die Mühe!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige