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 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.....

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
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


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
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
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

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige