Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
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

Spalten spiegeln

Spalten spiegeln
17.02.2021 09:04:31
Chris
Hallo Zusammen,
ich habe keine einfache Lösung für folgenden Sachverhalt gefunden:
Vereinfacht ausgedrückt ist der Aufbau wie folgt:
Ist
Spalte A Spalte B Spalte C Spalte D
5 8 15 9
Soll:
Spalte A Spalte B Spalte C Spalte D
9 15 8 5
Ich möchte also einfach den Inhalt von mehreren Spalten spiegeln. In den Zellen befinden sich jeweils Formeln.
Also Inhalt von D in A, und Inhalt von A in D.
Danke für euer Feedback
Christian

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
F1:J999: =INDEX(A1:D999;;{4.3.2.1}) Formelarray
17.02.2021 09:09:43
lupo1
AW: ohne zusätzliches spiegeln ...
17.02.2021 09:10:03
neopa
Hallo Chris,
... denn wenn da Formel stehen, warum ermittelst Du denn damit nicht gleich die Werte entsprechend?
Gruß Werner
.. , - ...
AW: ohne zusätzliches spiegeln ...
17.02.2021 09:29:45
Chris
Hallo Werner,
das wäre mir selbst sogar lieber, aber die Daten beziehen sich aber auf ein anderes Tabellenblatt und dort ist die Reihenfolge allerdings vorgegeben und jetzt muss ich die Reihenfolge ändern um die Daten in einem Diagramm weiter zu verarbeiten.
Danke für deinen Input
Chris
AW: wäre aber auch dann möglich owT
17.02.2021 09:36:35
neopa
Gruß Werner
.. , - ...
Hatte mir schon gedacht: "Formeln" war ohne Belang
17.02.2021 09:31:31
lupo1
AW: Spalten spiegeln
17.02.2021 09:23:08
Daniel
Hi
schneide die Spalten nacheinander aus und füge sie in der richtigen Reihenfolge ein.
beim Ausschneiden sollten sich die Zellbezüge der Formeln nicht verändern.
Gruß Daniel
Anzeige
AW: Spalten spiegeln
17.02.2021 10:01:54
Chris
Hallo Zusammen
danke für die Idee Daniel, das funktioniert! Mit der oben genannten Array Formel von Lupo habe ich es nicht hin bekommen, das Makro unten von Nepumuk scheint recht aufwendig für das was ich da vorhabe. Danke an alle!
AW: Spalten spiegeln
17.02.2021 10:29:21
Nepumuk
Hallo Chris,
es ist doch völlig egal wie viele Zeilen ein Code hat. Funktionieren muss er. Du beschwerst dich doch auch nicht über die 10 Millionen Zeilen Code die dein Betriebssystem hat.
Gruß
Nepumuk
AW: Spalten spiegeln
17.02.2021 10:36:55
Daniel
Es ist aber ein Unterschied, ob man den Code nur verwendet ohne dass man ihn zu Gesicht bekommt, oder ob man selber für den Code verantwortlich ist, dh ihn kennen und verstehen muss.
Für Codes, die man aus anonymer Quelle aus dem Internet kopiert, ist man selber voll verantwortlich, so als hätte man ihn selber geschrieben.
Daher sollte man auch Quellcode aus anoynmer Quelle dem Internet nur dann übernehemen, den man auch versteht.
Gruß Daniel
Anzeige
AW: Spalten spiegeln
17.02.2021 12:14:14
Chris
Hallo Nepumuk,
du hast absolut recht, auf der anderen Seite habe ich nicht vor das Betriebssystem weiter zu entwickeln, die Tabelle aber schon und wenn ich dann kein VBA kann und das Makro nicht anpassen kann... ;-) aber danke sehr für deine Hilfe, für andere Anwender hilft das sicher weiter.
Nicht Arrayformel. FORMELARRAY!
17.02.2021 10:41:41
lupo1
Das gibt man ein wie eine Arrayformel, hat aber den kompletten genannten Bereich markiert.
AW: Spalten spiegeln
17.02.2021 09:27:03
Nepumuk
Hallo Christian
teste mal:
Option Explicit

Public Sub Transpose_Test()
    
    Dim vntArt As Variant
    Dim rngInputrange As Range, rngOutputrange As Range
    
    On Error Resume Next
    
    Set rngInputrange = Application.InputBox( _
        Prompt:="Eingabebereich mit der Maus markieren.", Title:="Auswahl", Type:=8)
    
    If Err.Number <> 0 Then Exit Sub
    
    Set rngOutputrange = Application.InputBox( _
        Prompt:="Oberste linke Zelle des Ausgabebereiches mit der Maus markieren.", _
        Title:="Auswahl", Type:=8)
    
    If Err.Number <> 0 Then Exit Sub
    
    On Error GoTo Err_Exit
    
    Do
        
        vntArt = Application.InputBox(Prompt:="Art auswählen" & vbLf & vbLf & _
            "0 = Normales transponieren" & vbLf & _
            "1 = Zeilen und Spalten spiegeln" & vbLf & _
            "2 = Zeilen und Spalten spiegeln und transponieren", _
            Title:="Auswahl", Default:=0, Type:=1)
        
        If VarType(vntArt) = vbBoolean And vntArt = False Then Exit Sub
        
        If Fix(vntArt) = vntArt Then If vntArt >= 0 And vntArt <= 3 Then Exit Do
        
        MsgBox Prompt:="Nur die Zahlen 0 / 1 / 2 zulässig.", _
            Buttons:=vbExclamation, Title:="Hinweis"
        
    Loop
    
    Call Transpose_special(rngInputrange, rngOutputrange, Clng(vntArt))
    
    Err_Exit:
    
End Sub

Private Sub Transpose_special(ByVal rngInputrange As Range, _
        ByVal rngOutputrange As Range, _
        ByVal lngArt As Long)

    
    Dim avntArray() As Variant, lngRow As Long, lngColumn As Long
    
    On Error GoTo Err_Exit
    
    Select Case lngArt
            
        Case 0
            
            If rngOutputrange.Column + rngInputrange.Rows.Count - 1 <= Columns.Count Then
                
                avntArray = Application.Transpose(rngInputrange.Formula)
                
                rngInputrange.Clear
                
                Range(rngOutputrange.Cells(1, 1), Cells(rngOutputrange.Row + _
                    rngInputrange.Columns.Count - 1, rngOutputrange.Column + _
                    rngInputrange.Rows.Count - 1)).Formula = avntArray
                
            Else
                Err.Raise Number:=vbObjectError + 1, Description:="Das passt nicht rein."
            End If
            
        Case 1
            
            If rngOutputrange.Row + rngInputrange.Rows.Count - 1 <= Columns.Count Then
                
                Redim avntArray(1 To rngInputrange.Rows.Count, 1 To rngInputrange.Columns.Count)
                
                For lngColumn = 1 To rngInputrange.Columns.Count
                    
                    For lngRow = 1 To rngInputrange.Rows.Count
                        
                        avntArray(lngRow, lngColumn) = rngInputrange.Cells( _
                            rngInputrange.Rows.Count - lngRow + 1, _
                            rngInputrange.Columns.Count - lngColumn + 1).Formula
                        
                    Next
                Next
                
                rngInputrange.Clear
                
                Range(rngOutputrange.Cells(1, 1), Cells(rngOutputrange.Row + _
                    rngInputrange.Rows.Count - 1, rngOutputrange.Column + _
                    rngInputrange.Columns.Count - 1)).Formula = avntArray
                
            Else
                Err.Raise Number:=vbObjectError + 2, Description:="Das passt nicht rein."
            End If
            
        Case 2
            
            If rngOutputrange.Column + rngInputrange.Rows.Count - 1 <= Columns.Count Then
                
                Redim avntArray(1 To rngInputrange.Columns.Count, 1 To rngInputrange.Rows.Count)
                
                For lngColumn = 1 To rngInputrange.Columns.Count
                    
                    For lngRow = 1 To rngInputrange.Rows.Count
                        
                        avntArray(lngColumn, lngRow) = _
                            rngInputrange.Cells(rngInputrange.Rows.Count - _
                            lngRow + 1, rngInputrange.Columns.Count - lngColumn + 1).Formula
                        
                    Next
                Next
                
                rngInputrange.Clear
                
                Range(rngOutputrange.Cells(1, 1), Cells(rngOutputrange.Row + _
                    rngInputrange.Columns.Count - 1, rngOutputrange.Column + _
                    rngInputrange.Rows.Count - 1)) = avntArray
                
            Else
                Err.Raise Number:=vbObjectError + 3, Description:="Das passt nicht rein."
            End If
    End Select
    Exit Sub
    
    Err_Exit:
    
    MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & _
        Err.Description, vbCritical, "Fehler"
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Spalten spiegeln
17.02.2021 13:09:28
Günther
Moin,
"einfach" ist ja ein relativer Begriff. Aber ich denke, dass der Weg über Power Query (wenige Mausklicks führen zum Ergebnis) gut nachvollziehbar ist.
 
Gruß
Günther  |  mein Excel-Blog

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige