Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten innerhalb einer Zeile um 180 Grad drehen

Forumthread: Daten innerhalb einer Zeile um 180 Grad drehen

Daten innerhalb einer Zeile um 180 Grad drehen
Stephan
Hallo Forum,
wie kann ich denn die Zelleninhalte (alles) umdrehen?
Aus
| |1|2|3|4|
| |3|2|7|8|9|5|2|

soll
|x|4|3|2|1|
|x|2|5|9|8|7|2|3|

werden.
Um festzustellen welche Zeile bereits gedreht ist, soll in der z.B. festen Spalte 1 ein "x" geschrieben werden. Beim zurückdrehen soll das "x" entfernt werden.
Das drehen soll sich immer nur auf die selektierte(n) Zeilen auswirken.
hoffe jemand hat ein Idee.....
Anzeige
AW: Daten innerhalb einer Zeile um 180 Grad drehen
07.05.2011 11:59:31
Stephan
Hab mich wohl falsch ausgedrückt. Es sollen die ganzen Zellen mit den Zelleninhalte vertauscht werden.
Hab mal eine Beispielldatei erstellt

Die Datei https://www.herber.de/bbs/user/74702.xls wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Daten innerhalb einer Zeile um 180 Grad drehen
07.05.2011 12:19:52
Josef

Hallo Stephan,
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Sub drehen()
  Dim vntValues As Variant, vntNew() As Variant
  Dim lngIndex As Long
  If Selection.Rows.Count = 1 Then
    If Selection.Columns.Count > 1 Then
      vntValues = Selection
      Redim vntNew(1 To 1, 1 To UBound(vntValues, 2))
      For lngIndex = UBound(vntValues, 2) To 1 Step -1
        vntNew(1, UBound(vntValues, 2) - lngIndex + 1) = vntValues(1, lngIndex)
      Next
      Selection = vntNew
    End If
  Else
    MsgBox "Es darf nur eine Zeile markiert werden!", vbInformation
  End If
End Sub


Unter den Optionen kannst du dem Makro eine Tastenkombination zuweisen.

« Gruß Sepp »

Anzeige
Das "X" vergessen!
07.05.2011 12:26:01
Josef

Hallo nochmal,
hier der Code mit den X in Spalte 1.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Sub drehen()
  Dim vntValues As Variant, vntNew() As Variant
  Dim lngIndex As Long
  If Selection.Rows.Count = 1 Then
    If Selection.Columns.Count > 1 Then
      If Cells(Selection.Row, 1) = "x" Then
        Cells(Selection.Row, 1) = ""
      Else
        Cells(Selection.Row, 1) = "x"
      End If
      vntValues = Selection
      Redim vntNew(1 To 1, 1 To UBound(vntValues, 2))
      For lngIndex = UBound(vntValues, 2) To 1 Step -1
        vntNew(1, UBound(vntValues, 2) - lngIndex + 1) = vntValues(1, lngIndex)
      Next
      Selection = vntNew
    End If
  Else
    MsgBox "Es darf nur eine Zeile markiert werden!", vbInformation
  End If
End Sub



« Gruß Sepp »

Anzeige
Frage @ Sepp
07.05.2011 12:48:11
hary
Hallo Sepp
Da ich noch am kapieren von Arrays bin, hab auch mal was versucht.
Kannst Du mal bitte drueberschauen?

Sub andersrum()
Dim i As Long
Dim b As Long
Dim a()
a = Application.Transpose(Range(Cells(ActiveCell.Row, "B"), Cells(ActiveCell.Row, Cells( _
ActiveCell.Row, Columns.Count).End(xlToLeft).Column)))
b = UBound(a)
For i = LBound(a) To UBound(a)
Cells(ActiveCell.Row, b + 1) = a(i, 1)
b = b - 1
Next
If Cells(ActiveCell.Row, 1) = "" Then
Cells(ActiveCell.Row, 1) = "x"
Else
Cells(ActiveCell.Row, 1) = ""
End If
End Sub

Dein Code ist schoener, geht mir aber nur ums verstehen.
gruss hary
Anzeige
ist doch auch OK! o.T.
07.05.2011 12:53:26
Josef
« Gruß Sepp »

Danke owt gruss hary
07.05.2011 12:58:17
hary
.
AW: Das "X" vergessen!
07.05.2011 13:10:31
Stephan
Hallo Sepp,
besten Dank, doch irgend etwas habe ich wohl falsch gemacht. x, inhalte und Formatierung wird gelöscht und weiter passiert nichts erkennbares.
Habe die Datei beigelegt.
https://www.herber.de/bbs/user/74705.xls
Kannst du nochmals kurz darüber schauen.
Danke
Anzeige
AW: doch geht....
07.05.2011 13:27:35
hary
Hallo Stephan
wenn Du Die Zeile von Spalte B bis Spalte letzter eintrag markierst und dann das Makro ausfuehrst.
hier mal meine. Einfach eine Zelle in der Zeile klicken und Makro ausfuehren.
https://www.herber.de/bbs/user/74706.xls
Gruss hary
Anzeige
AW: doch geht....
07.05.2011 13:42:38
Stephan
Hallo harry, Danke für die info, hast recht so läuft es,
wenn wir es jetzt noch schaffen, daß er genau die manuelle Markierung automatisch durchführt ist perfekt.
Ich möchte eigentlich nur die Zeile markieren und nun soll er mir den rest selber machen.
Gruß
Stephan
AW: doch geht....
07.05.2011 15:15:51
hary
Hallo Stephan
Hast Du meine Bsp.Mappe getestet? Da brauchst Du nur eine zelle in der zeile manuell markieren.
gruss hary
Anzeige
Dank an alle !!!
08.05.2011 12:05:20
Stephan
Alles super.
Problem gelöst
Dank an alle die beteiligt waren .......
andere Lösung
07.05.2011 13:09:53
CitizenX
Hallo Stephan,
wenn Du ein "x" in die Spalte 1 einträgst wird der Bereich vertauscht,löscht Du das "x" wird wieder zurück getauscht.
Code kommt ins Modul der Tabelle
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myArray()
Dim i As Long, n As Long
On Error GoTo ErrH
If Target.Column = 1 Then
If Not LCase(Target) = "x" And Target  "" Then Exit Sub
Application.EnableEvents = False
ReDim myArray(1 To Cells(Target.Row, Columns.Count).End(xlToLeft).Column)
For i = UBound(myArray) To 2 Step -1
n = n + 1
myArray(n) = Cells(Target.Row, i)
Next
Range(Target.Address).Offset(0, 1).Resize(1, n) = myArray
End If
ErrH:
Application.EnableEvents = True
End Sub
Grüße
Steffen
Anzeige
AW: andere Lösung
07.05.2011 13:28:44
Stephan
Hallo Steffen,
habe deinen Code auch mal ausprobiert, doch auch der läuft irgenwie nicht. Vieleicht habe ich heute wirklich ein schlechten Tag. Kannst du mir den Code in der Tabelle einbauen und die Tabelle hochladen.
Danke im Vorraus.
Gruß
Stephan
;

Forumthreads zu verwandten Themen

Anzeige

Infobox / Tutorial

Daten innerhalb einer Zeile um 180 Grad drehen


Schritt-für-Schritt-Anleitung

Um Daten innerhalb einer Zeile in einer Excel-Tabelle um 180 Grad zu drehen, kannst Du ein einfaches VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen und wähle Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub drehen()
       Dim vntValues As Variant, vntNew() As Variant
       Dim lngIndex As Long
    
       If Selection.Rows.Count = 1 Then
           If Selection.Columns.Count > 1 Then
               vntValues = Selection
               ReDim vntNew(1 To 1, 1 To UBound(vntValues, 2))
               For lngIndex = UBound(vntValues, 2) To 1 Step -1
                   vntNew(1, UBound(vntValues, 2) - lngIndex + 1) = vntValues(1, lngIndex)
               Next
               Selection = vntNew
           Else
               MsgBox "Es darf nur eine Zeile markiert werden!", vbInformation
           End If
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Markiere die Zeile, die Du drehen möchtest, und führe das Makro aus, indem Du ALT + F8 drückst und das Makro auswählst.


Häufige Fehler und Lösungen

  • Fehler: Das Makro funktioniert nicht, wenn mehrere Zeilen ausgewählt sind.

    • Lösung: Stelle sicher, dass nur eine Zeile ausgewählt ist, bevor Du das Makro ausführst.
  • Fehler: Es passiert nichts bei der Ausführung des Makros.

    • Lösung: Überprüfe, ob die Auswahl mehr als eine Spalte enthält. Das Makro dreht nur Zeilen mit mehr als einer Spalte.

Alternative Methoden

Eine weitere Möglichkeit, Daten um 180 Grad zu drehen, ist die Verwendung der Excel-Funktion TRANSPOSE. Hierbei wird der Bereich transponiert und anschließend umgedreht. Allerdings ist diese Methode weniger flexibel, da sie die Daten in eine andere Richtung anzeigt.

Hier ist ein Beispiel für eine Alternative:

  1. Wähle die Zellen aus, die Du transponieren möchtest.
  2. Kopiere die Auswahl (Strg + C).
  3. Klicke mit der rechten Maustaste auf die Zielzelle und wähle Inhalte einfügen.
  4. Aktiviere das Kontrollkästchen für Transponieren.

Praktische Beispiele

Angenommen, Du hast die folgende Zeile:

| 1 | 2 | 3 | 4 |

Nach der Ausführung des Makros wird sie umgedreht zu:

| 4 | 3 | 2 | 1 |

Zusätzlich wird bei der Drehung ein "x" in die erste Spalte eingefügt. Das Umkehren der Drehung entfernt das "x" und stellt die ursprüngliche Reihenfolge wieder her.


Tipps für Profis

  • Du kannst eine Tastenkombination für Dein Makro festlegen, um den Prozess zu beschleunigen. Gehe dazu im VBA-Editor auf Extras > Makros > Makros, wähle Dein Makro aus und klicke auf Optionen, um eine Tastenkombination zu vergeben.

  • Nutze Fehlerbehandlung im Makro, um die Benutzerfreundlichkeit zu erhöhen, falls eine falsche Auswahl getroffen wird.


FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehrere Zeilen zu drehen?
Das aktuelle Makro ist so konzipiert, dass es nur eine Zeile verarbeitet. Du müsstest den Code anpassen, um mehrere Zeilen zu ermöglichen.

2. Kann ich das Makro in einer Excel-Tabelle speichern?
Ja, speichere die Excel-Datei als Excel-Makroaktivierte Arbeitsmappe (*.xlsm), um das Makro zu behalten.

3. Wie kann ich den Text in den Zellen um 180 Grad drehen?
Dafür gibt es keine direkte Funktion in Excel, jedoch kannst Du die Schriftart in den Zellen anpassen, um den Text zu drehen. Wähle die Zellen aus, gehe zu Start > Ausrichtung und stelle den Winkel auf 180° ein.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige