Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1320to1324
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

Ergebnisse mittels Makro verschieben

Ergebnisse mittels Makro verschieben
04.07.2013 09:13:50
Matthias
Hallo zusammen,
ich habe folgendes Problem.
Bei mir stehen in Spalte A Themen und zugehörige Ergebnisse untereinander.
Bsp.:
A1: Thema 1
A2: Ergebnis Thema 1 (Zahl)
A3: Thema 2
A4: Ergebnis Thema 2 (Zahl)
..
..
..
Ann: Thema nn
.. : Ergebnis ..
Dazu suche ich ein Makro welches mir die Ergebnisse die unter dem Thema stehen in die Spalte B neben das Thema setzen (cut & paste). Das ganze soll solange laufen bis in Spalte A keine Zellen mehr gefüllt sind.
Könnt ihr mir bei meinem Problem bitte weiterhelfen?
Im Forum konnte ich leider nichts passendes finden. Evtl. hab ich auch nicht die richtigen Suchbegriffe verwendet.
Danke & viele Grüße.
Matthias

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ergebnisse mittels Makro verschieben
04.07.2013 09:17:26
Hajo_Zi
Hallo Matthias,
in Deinem Beispiel steht nichts in Spalte B?
was bedeutet unter Thema?
Gruß Hajo

AW: Ergebnisse mittels Makro verschieben
04.07.2013 09:25:07
Matthias
Also die Spalte B ist komplett leer.
Ich mach ein Beispiel dazu:
A1: Audi
A2: 328
A3: BMW
A4: 124
A5: Mercedes
A6: 213
...
Ziel ist folgendes Ergebnis zu bekommen:

Spalte A Spalte B
Audi        328
BMW         124
Mercedes    213
Ich hoffe die Erklärung hilft Dir weiter?
Danke & Grüße.
Matthias

Anzeige
AW: Ergebnisse mittels Makro verschieben
04.07.2013 09:33:07
Hajo_Zi
Hallo Matthias,



Tabelle2
 AB
1Audi328
2BMW124
3Mercedes213
4   
5   

verwendete Formeln
Zelle Formel Bereich R1C1 für Add In
A1:A5=WENN(INDIREKT("Tabelle1!A"&(ZEILE() *2-1) ) ="";"";INDIREKT("Tabelle1!A"&(ZEILE() *2-1) ) )   =IF(INDIRECT("Tabelle1!A"&(ROW() *2-1) ) ="","",INDIRECT("Tabelle1!A"&(ROW() *2-1) ) )
B1:B5=WENN(INDIREKT("Tabelle1!A"&(ZEILE() *2) ) ="";"";INDIREKT("Tabelle1!A"&(ZEILE() *2) ) )   =IF(INDIRECT("Tabelle1!A"&(ROW() *2) ) ="","",INDIRECT("Tabelle1!A"&(ROW() *2) ) )

http://Hajo-Excel.de/tools.htm XHTML Tabelle für Darstellung in Foren,
einschl. Bedingter Formatierung ab Version 2007
XHTML-Version 11.30 einschl 64 Bit Version

Gruß Hajo

Anzeige
AW: Ergebnisse mittels Makro verschieben
04.07.2013 09:45:09
Matthias
Hallo Hajo,
die Lösung mit INDIREKT war mir so bekannt.
Ich brauchte aber speziell eine VBA Lösung da die Ergebnisse aus einer Datenbankabfrage kommen und dann ohne nochmal Formeln eintragen zu müssen umformatiert werden sollen.
Ich schau mir Deine Lösung gleich mal an und melde mich nochmal.
Erstmal vielen Dank & viele Grüße.
Matthias

Anzeige
AW: Ergebnisse mittels Makro verschieben
04.07.2013 11:45:03
Matthias
Hallo Hajo,
also ich habe getestet.
Funktioniert leider nicht wie gewünscht.
Das Makro macht bei mir im Prinzip eine Art "Transponieren von Zellen".
Was ich bräuchte ist eine Schleifenlösung folgender Art:

Range("A2").Select
Selection.Cut
Range("B1").Select
ActiveSheet.Paste
Range("A4").Select
Selection.Cut
Range("B3").Select
Wert aus Zelle A2 ausschneiden und in B1 einfügen
Dann A3 ausschneiden und in B2 einfügen
Dann A4 ausschneiden und in B3 einfügen
Dann A5 ausschneiden und in B4 einfügen
Dann A6 ausschneiden und in B5 einfügen
usw.
Ich möchte also die absolute Adressierung der Zellen gerne mit Variablen umsetzen, da ich nicht weiß wieviele Zeilen in Spalte A gefüllt sind. Das ganze soll deshalb in einer Schleife laufen bis in Spalte A keine gefüllten Zellen mehr enthalten sind.
Viele Grüße.
Matthias

Anzeige
AW: Ergebnisse mittels Makro verschieben
04.07.2013 11:46:43
Hajo_Zi
Hallo Matthias,
du hast schon angegeben das Du 2 Zeilen hast?
Gruß Hajo

AW: Ergebnisse mittels Makro verschieben
04.07.2013 11:50:13
Matthias
ja hab ich gemacht...
er bringt dann nur die erste Überschrift und den ersten zugehörigen Wert.
Den Rest der Liste schneidet er ab.

AW: Ergebnisse mittels Makro verschieben
04.07.2013 11:56:43
Hajo_Zi
du solltest Spalte B schon auf a ändern.
Option Explicit                                     ' Variablendefinition erforderlich
Sub Umordnen()
'* H. Ziplies                                  *
'* 08.11.12                                    *
'* erstellt von HajoZiplies@web.de             *
'* http://Hajo-Excel.de/
' ein Datensatz besteht immer aus der gleichen Anzahl von Zeilen
' (einschl. Leerzeile)
' die Anzahl wird abgefragt, die Daten sind in Spalte B
' falls Spalte A belegt ist dies der Tabellenkopf
' es werden die Daten vom ersten Datensatz übernommen
' die Datensätze werden umgeordnet von einer Spalte in mehreren Zeilen
Dim LoLetzte As Long                            ' letzte Zeile
Dim LoZeile As Long                             ' Zeile in die geschrieben wird
Dim RaFound As Range                            ' Suchergebnis für Datensatzlänge
Dim LoAnzahl As Long                            ' Zellen je Datensatzanzahl
Dim LoI As Long                                 ' Schleifenvariable
Application.ScreenUpdating = False              ' Bildschirmaktualisierung aus
With ActiveSheet
' letzte Zeile in der Datentabelle feststellen in Spalte B (2)
LoLetzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), _
.Cells(Rows.Count, 1).End(xlUp).Row, .Rows.Count)
Set RaFound = .Range("A1:A" & LoLetzte).Find("", .Range("A" & LoLetzte) _
, , xlWhole, , xlNext)
If RaFound Is Nothing Then
LoAnzahl = 5                            ' fester Wert da keine Leerzelle in SpaltE  _
B
Else
LoAnzahl = RaFound.Row                  ' Anzahl entsprechend Leerzeile
End If
Set RaFound = Nothing                       ' Variable leeren
' Abfrage Zellen je Datensatz. Inputbox mit Type 0, nur Zahlen als Eingabe
LoAnzahl = Application.InputBox("Bitte geben Sie die Anzahl " & "der Zeilen je  _
Datensatz ein." _
& Chr(13) & "(einschl. Leerzeile)", "Zeilen je Datensatz", LoAnzahl, Type:=1)
LoAnzahl = Fix(LoAnzahl)                    ' Eingabe umwandeln in Ganzzahl
Select Case LoAnzahl
Case Is  .Columns.Count
MsgBox "Excel hat nur " & .Columns.Count & " Spalten"
Case Else
' neue Tabelle einfügen, kein eigener Name
Sheets.Add After:=Sheets(Sheets.Count)
'                If .Cells(1, 1)  "" Then          ' Prüfen ob Tabellenkopf
'                    ' Tabellenkopf schreiben einschl. Format und drehen um 90°
'                    .Range(.Cells(1, 1), .Cells(LoAnzahl, 1)).Copy
'                    Cells(LoZeile + 1, 1).PasteSpecial Paste:=xlAll, Transpose:=True
'                    LoZeile = LoZeile + 1
'                End If
' Schleife über alle Datensätze
For LoI = 1 To LoLetzte Step LoAnzahl
' Datensatz umschreiben
.Range(.Cells(LoI, 1), .Cells(LoI + LoAnzahl - 1, 1)).Copy
Cells(LoZeile + 1, 1).PasteSpecial Paste:=xlAll, Transpose:=True
LoZeile = LoZeile + 1
Next LoI
End Select
End With
Application.ScreenUpdating = True               ' Bildschirmaktualisierzng ein
Application.CutCopyMode = False                 ' Zwischenspeicher löschen
End Sub
Gruß Hajo

Anzeige
AW: Ergebnisse mittels Makro verschieben
04.07.2013 13:13:06
Matthias
peinlich peinlich... :-)
Kaum macht man es richtig.... schon geht's!
Funktioniert bestens!
Vielen Dank für deine Unterstützung & viele Grüße.
Matthias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige