Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo liebes Forum, im Netz habe ich ein tolles Makro gefunden das mir in einer Tabelle zwei auszuwählende Daten-Spalten vertauscht. Was ich aber benötige ist eine Möglichkeit (Makro) die eine ausgewählte Spalte, ab einer wählbaren Zeile, an eine wählbare Spalte verschiebt. Dabei soll natürlich deren Inhalt nicht überschrieben werden sondern diese Spalte soll um eine Spalte nach rechts verschoben werden. Habt Ihr mir da vielleicht einen Lösungsvorschlag? Hier mal das Makro zum Spalten vertauschen: Code: Sub SpaltenAustauschen() Dim rngSpalteA As Range Dim rngSpalteB As Range Dim Zwischenspeicher As Variant
On Error GoTo ErrorHandle
Set rngSpalteA = Application.InputBox(prompt:="1. Spalte markieren:", Type:=8) If rngSpalteA.Columns.Count > 1 Then MsgBox "Die 1. Markierung enthält mehr als eine Spalte", vbCritical Exit Sub End If
Set rngSpalteB = Application.InputBox(prompt:="1. Spalte ist " & _ rngSpalteA.Address & vbLf & "2. Spalte markieren:", Type:=8) If rngSpalteB.Columns.Count > 1 Then MsgBox "Die 2. Markierung enthält mehr als eine Spalte", vbCritical Exit Sub End If
Zwischenspeicher = rngSpalteA.Value rngSpalteA.Value = rngSpalteB.Value rngSpalteB.Value = Zwischenspeicher Exit Sub
ErrorHandle: MsgBox "Das Makro wurde abgebrochen!", vbExclamation
End Sub
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Erich, vielleicht so: Code: Sub SpaltenteilVerschiebenEinfuegen() Dim rngSpalteA As Range Dim rngSpalteB As Range
On Error GoTo ErrorHandle
Set rngSpalteA = Application.InputBox(prompt:="1. Zelle der Spalte markieren:", Type:=8) If rngSpalteA.Columns.Count > 1 Then MsgBox "Die 1. Markierung enthält mehr als eine Spalte", vbCritical Exit Sub End If
Set rngSpalteB = Application.InputBox(prompt:="1. Spalte ist " & _ rngSpalteA.Address & vbLf & "2. Spalte markieren:", Type:=8) If rngSpalteB.Columns.Count > 1 Then MsgBox "Die 2. Markierung enthält mehr als eine Spalte", vbCritical Exit Sub End If rngSpalteB.Insert Range(rngSpalteA, Cells(Rows.Count, rngSpalteA.Column)).Cut rngSpalteB.Offset(, -1) Exit Sub
ErrorHandle: MsgBox "Das Makro wurde abgebrochen!", vbExclamation
End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Uwe,
vielen Dank für Deinen Vorschlag. Funktioniert soweit ganz gut. Will das aber noch genauer ausprobieren.
Danke!
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Uwe,
wollte Dir noch eine Rückmeldung geben.
Also, wenn ich eine Spalte verschiebe, funktioniert das sehr schön. Es wird die zu verschiebende Spalte an den neuen Ort eingefügt, aber alle Spalten rechts davon werden jetzt auch nach rechts verschoben......das ist ja auch so gewollt.... .... aber die verschobene Spalte lässt eine "Leerspalte" zurück und dadurch bekomme ich natürlich jetzt eine Spalte mehr.
Wichtig dabei ist mir zusätzlich dass eine mögliche Kopfzeile nicht mit verschoben wird!
Vielleicht hast Du da noch eine Idee?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Erich, Sub SpaltenteilVerschiebenEinfuegen() Dim rngSpalteA As Range Dim rngSpalteB As Range On Error GoTo ErrorHandle Set rngSpalteA = Application.InputBox(prompt:="1. Zelle der Spalte markieren:", Type:=8) If rngSpalteA.Columns.Count > 1 Then MsgBox "Die 1. Markierung enthält mehr als eine Spalte", vbCritical Exit Sub End If Set rngSpalteB = Application.InputBox(prompt:="1. Spalte ist " & _ rngSpalteA.EntireColumn.Address & vbLf & "2. Spalte markieren:", Type:=8) If rngSpalteB.Columns.Count > 1 Then MsgBox "Die 2. Markierung enthält mehr als eine Spalte", vbCritical Exit Sub Else Set rngSpalteB = rngSpalteB.EntireColumn End If Application.ScreenUpdating = False rngSpalteB.Insert Range(rngSpalteA, Cells(Rows.Count - rngSpalteA.Row + 1, rngSpalteA.Column)).Copy rngSpalteB.Cells(1).Offset(rngSpalteA.Row - 1, -1) rngSpalteA.EntireColumn.Delete Application.ScreenUpdating = True Exit Sub ErrorHandle: MsgBox "Das Makro wurde abgebrochen!", vbExclamation End Sub Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Uwe, cool....das Vertauschen klappt toll....es bleibt keine Leerspalte mehr zurück und die Anzahl der Spalten bleibt gleich. Jetzt verhaut es aber die Kopfzeile (Zelle). So sieht das vor dem Spaltentausch aus.... Tabelle1 | A | B | C | D | 1 | A | B | C | D | 2 | 1 | 2 | 3 | 4 | 3 | 1 | 2 | 3 | 4 | 4 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 |
Excel-Inn.de | Hajo-Excel.de | XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 | Add-In-Version 21.08 einschl. 64 Bit |
...und so nachher... Tabelle1 | A | B | C | D | 1 | A | | B | D | 2 | 1 | 3 | 2 | 4 | 3 | 1 | 3 | 2 | 4 | 4 | 1 | 3 | 2 | 4 | 5 | 1 | 3 | 2 | 4 |
Excel-Inn.de | Hajo-Excel.de | XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 | Add-In-Version 21.08 einschl. 64 Bit |
Die Kopfzellen sollen nicht beeinflußt werden. Hast Du vielleicht noch ne Idee?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Erich,
zeige bitte einen Vorher-/Nachhervergleich wie Du es Dir vorstellst.
Gruß Uwe
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Uwe, so sieht es vorher aus... Tabelle1 | A | B | C | D | 1 | A | B | C | D | 2 | 1 | 2 | 3 | 4 | 3 | 1 | 2 | 3 | 4 | 4 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 |
Excel-Inn.de | Hajo-Excel.de | XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 | Add-In-Version 21.08 einschl. 64 Bit |
.... und so soll es nachher aussehen..... Tabelle1 | A | B | C | D | 1 | A | B | C | D | 2 | 1 | 4 | 2 | 3 | 3 | 1 | 4 | 2 | 3 | 4 | 1 | 4 | 2 | 3 | 5 | 1 | 4 | 2 | 3 |
Excel-Inn.de | Hajo-Excel.de | XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 | Add-In-Version 21.08 einschl. 64 Bit |
....oder auch so......je nachdem welcher Spaltenbereich verschoben werden soll.... Tabelle1 | A | B | C | D | 1 | A | B | C | D | 2 | 4 | 1 | 2 | 3 | 3 | 4 | 1 | 2 | 3 | 4 | 4 | 1 | 2 | 3 | 5 | 4 | 1 | 2 | 3 |
Excel-Inn.de | Hajo-Excel.de | XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007 | Add-In-Version 21.08 einschl. 64 Bit |
....... aber......die Titel-Zelle soll nicht verschoben werden!
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Erich,
interessant wäre nun noch, was Du in welcher Reihenfolge bei Deinen Beispielen anklickst.
Gruß Uwe
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Uwe,
zuerst markiere ich die Werte (Spalte , ohne Titel-Zelle) die ich verschieben will....dann markiere ich die Zellen (Spalte, ohne Titel-Zelle) wohin ich verschieben will. Die Anzahl der Auswahlzellen ist in beiden Fällen gleich groß.
In meinem letzten Beitrag wurden im ersten Beispiel zuerst... alle Werte (4) in Spalte "D" markiert .... dann alle Werte (2) in Spalte "B".....also zuerst Quell-Daten (oder Quell-Ort) ..dann Ziel-Ort...wohin die Quelldaten geschoben werden sollen.
Im zweiten Beispiel wurden zuerst..... alle Werte (4) in Spalte "D" markiert .... dann alle Werte (1) in Spalte "A".....
Du wirst Dich fragen was das ganze soll.....nun, ich bekomme verschiedene Daten geliefert die eine ähnliche Struktur im Tabellenaufbau haben. Mir ist durchaus bewusst dass es einfacher ist einheitliche Tabellenstrukturen zu generieren.....das ist sozusagen auch das "Endziel". Im Moment muss ich mir aber selbst etwas zusammenbasteln.
Daraus ergibt sich für mich die Frage ob es eine einfachere, effektivere und elegantere Methode gibt Tabellen zusammenzuführen?
|