Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Transponieren

Forumthread: Transponieren

Transponieren
Achim
Hallo Excel Freunde
Wer kann helfen?
Ich möchte einen Block an Daten von einer zur anderen Tabelle
Transponieren.Wie geht das?
Alles weiter siehe Beispielsdatei
https://www.herber.de/bbs/user/5936.xls
Tausend dank
Achim
Anzeige
AW: Transponieren
Rolf
Hallo Achim meinst Du dies?
Transponieren von Zeilen und Spalten
Daten aus der obersten Zeile des Kopierbereichs werden in der linken Spalte des Einfügebereichs angezeigt, Daten aus der linken Spalte werden in der obersten Zeile angezeigt.
Markieren Sie die Zellen, die Sie transponieren möchten.
Klicken Sie auf Kopieren .
Markieren Sie die linke obere Zelle des Einfügebereichs. Der Einfügebereich muss sich außerhalb des Kopierbereichs befinden.
Klicken Sie auf den Pfeil rechts neben Einfügen , und klicken Sie dann auf Transponieren.
Gruß Rolf
Anzeige
AW: Transponieren
Uwe
Hallo, Ralf!
M.E. will Achim aus einer Matrix, mit der Dimension [maxZeilen;31] einen Vektor [31*maxZeilen] herstellen, wobei die Ordnung in Vektor zeilenweise aus der Matrix übernommen werden soll.
Natürlich würde dies auch über ein Makro gehen, der Deinen Befehlssatz verwendet, und der in einer Schleife über die Zeilen "eingepackt" wird.
Gruß!
Anzeige
AW: Transponieren mit Index(Matrix, Zeile, Spalte)
Uwe
Hallo, Achim!
Dies ist eine Lösung als Zellenformel, die Du über die Spalte ziehen müßtest.
=INDEX(Matrix_Eint_Dienste!$G$31:$AK$232;GANZZAHL((ZELLE("Zeile";A2)-ZELLE("Zeile";$A$2))/31)+1;(ZELLE("Zeile";A2)-ZELLE("Zeile";$A$2)+1)-31*GANZZAHL((ZELLE("Zeile";A2)-ZELLE("Zeile";$A$2))/31))
Der "Bandwurm" wird übersichtlicher, wenn Du die Teile zerlegst:
  • Matrix_Eint_Dienste!$G$31:$AK$232
    Dieser Ausdruck ist klar; er bezeichnet die gegebene Matrix (n-Zeilen; 31-Spalten)
  • GANZZAHL((ZELLE("Zeile";A2)-ZELLE("Zeile";$A$2))/31)+1
    In abhängihkeit von der Startzeile (Zeile 2 ... ZELLE("Zeile";$A$2)) wird aus der Zeilennummer des Vektors die vor diesem Feld liegende Anzehl der Zeilen in der Orginal-Matrix bestimmt. Um 1 erhöht, liefert das Ergebnis die aktuelle Zeile.
  • ZELLE("Zeile";A2)-ZELLE("Zeile";$A$2)+1) ... in diesem Teil wird in Abhängigkeit von der Startzeile des Vektors im Tabellenblatt, der tatsächsliche Vektorindex bestimmt. Von diesem Wert sind die Anzahl der Wert in den Vorzeilen der Orginalmatrix 31*(akt.Zeile-1) abzuziehen: )-31*GANZZAHL((ZELLE("Zeile";A2)-ZELLE("Zeile";$A$2))/31))
    Gruß!

  • Anzeige
    AW: Transponieren mit Index(Matrix, Zeile, Spalte)
    Achim
    Hi, Uwe
    Zunächst erst mal vielen Dank für die schnelle antwort!!!!!!
    Ich hätte noch eine bescheidene Bitte.
    Ginge das ganze auch als Makro?
    1tausen
    Dank
    Achim:)
    AW: Transponieren mit Index(Matrix, Zeile, Spalte)
    Uwe
    Hallo, Achim!
    Komme selbst jetzt nicht mehr dazu (erst morgen wieder). Wenn also bis dahin diese Aufgabe noch offen sein wird, werde ich das Makro schreiben.
    Die Skizze (ohne Anspruch auf Richtigkeit):
    
    Sub MatrixToVector
    dim z%, s%, r0%, vIndex%
    dim wsM as worksheet, wsV as Worksheet
    wsV=Worksheets("Tabelle1") 'bitte korrekten Namen einsetzen
    wsM=Worksheets("Tabelle2") 'bitte korrekten Namen einsetzen
    r0=2 ' Zeilennummer des ersten Vektorfeldes aus dem Arbeitsblatt
    for z=0 to maxZ-1
    for s=1 to 31
    vIndex=31*z+s
    wsV.Cells(r0+vIndex,"E")=wsM.Cells(31+z,6+s)
    next s
    next z
    End Sub
    

    Gruß!
    Anzeige
    AW: Index(Matrix, Zeile, Spalte)... PS
    Uwe
    Hallo, Achim!
    Wenn zwei Spalten in der Ergebnistabelle mit dem Vektor noch frei sind, dann könntest Du die Teile zur Indexberechnung (Zeile und Spalte) dort Dir anzeigen lassen:
    "Zeile"-Spalte:
    =GANZZAHL((ZELLE("Zeile";A2)-ZELLE("Zeile";$A$2))/31)+1
    "Spalte"-Spalte:
    =(ZELLE("Zeile";A2)-ZELLE("Zeile";$A$2)+1)-31*GANZZAHL((ZELLE("Zeile";A2)-ZELLE("Zeile";$A$2))/31)
    Gruß!
    Anzeige
    AW: Transponieren
    Kay
    Hallo Achim,
    dies wäre eine Möglichkeit
    
    Sub transponieren()
    Dim arr(30, 0) As String
    Dim r As Integer
    Dim r1 As Integer
    Dim sp As Integer
    Dim spp As Long
    Dim we As Integer
    ' daten einlesen
    For r = 31 To 232
    spp = -1
    For sp = 7 To 37
    spp = spp + 1
    arr(spp, 0) = Worksheets("Matrix_Eint_Dienste").Cells(r, sp)
    Next sp
    ' Daten zurückschreiben
    we = (r - 31) * 31
    Worksheets("Einteilung").Range(Cells(2 + we, 14), Cells(32 + we, 14)) = arr
    Next r
    End Sub
    

    Gruß
    Kay
    Anzeige
    AW: Transponieren
    Achim
    Danke für eure Mühe.
    Makro von Kay hat geklappt.
    Super!!!!!!!!!
    Nochmals tausend Dank:)
    AW: Danke für die Rückmeldung o.T.
    Kay
    ...
    ;

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige