Tach’chen.
Gerne würde ich in einer Excel-Tabelle eine alphabetische Reihenfolge
der Zellen erreichen. Leider macht Excel da zicken, weil es sich um
verbundene Zellen handelt.
Beispiel:
----------------------------------------------
| Alter | Größe |
B -------------------------------------
| Tel | Fax |
----------------------------------------------
| Alter | Größe |
A --------------------------------------
| Tel | Fax |
----------------------------------------------
Nach der ersten Spalte soll nun sortiert werden.
Hat jemand eine Lösungsidee?
Vielen Dank
TTR
Tach’chen.
Hallo!
Gerne würde ich in einer Excel-Tabelle eine alphabetische
Reihenfolge
der Zellen erreichen. Leider macht Excel da zicken, weil es
sich um
verbundene Zellen handelt.
geht leider nicht mit Excel-Standardfunktionen
Beispiel:
| Alter | Größe |
B -------------------------------------
| Tel | Fax |
| Alter | Größe |
A --------------------------------------
| Tel | Fax |
Nach der ersten Spalte soll nun sortiert werden.
Hat jemand eine Lösungsidee?
Mit VBA kann man den Verbund der Zellen aufheben und in jede Zelle des ehemaligen Verbundes den entsprechenden Wert übertragen.
Anschließend kann man wie gewohnt sortieren und im Anschluss wiederum mit VBA die Zellen wie vorher verbinden.
Hier die entsprechenden VBA-Prozeduren:
Sub VerbundAufheben()
Const Spalte As String = "A" 'Spalte mit verbundenen Zellen
Const ObenLinks As String = "A1" 'Linke obere Zelle des Bereichs (Kopfzelle erste Spalte)
Dim ErsteDatZeile As Integer
Dim VBBereich As Range
Dim VBZeilAnz As Integer
Dim zähler As Integer
Dim zeilen As Integer
With ActiveSheet
ErsteDatZeile = .Range(ObenLinks).Row + 1
zeilen = .Range(ObenLinks).CurrentRegion.Rows.Count - 1
For zähler = ErsteDatZeile To ErsteDatZeile + zeilen - 1
Set VBBereich = .Range(Spalte & zähler).MergeArea
VBZeilAnz = VBBereich.Rows.Count
If VBZeilAnz \> 1 Then
.Range(Spalte & zähler).UnMerge
VBBereich.Value = .Range(Spalte & zähler).Value
End If
zähler = zähler + VBZeilAnz - 1
Next zähler
End With
End Sub
Sub VerbundHerstellen()
Const Spalte As String = "A" 'Spalte in der die Zellen verbunden werden sollen
Const ObenLinks As String = "A1" 'Linke obere Zelle des Bereichs(Kopfzelle erste Spalte)
Const VBZeilAnz As Integer = 3 'Anzahl der untereinanderliegenden Zellen, die verbunden werden sollen
Dim ErsteDatZeile As Integer
Dim VBBereich As Range
Dim zähler As Integer
Dim zeilen As Integer
With ActiveSheet
ErsteDatZeile = .Range(ObenLinks).Row + 1
zeilen = .Range(ObenLinks).CurrentRegion.Rows.Count - 1
For zähler = ErsteDatZeile To ErsteDatZeile + zeilen - 1 Step VBZeilAnz
.Range(Spalte & zähler).Offset(1, 0).Resize(VBZeilAnz - 1, 1).Value = ""
Set VBBereich = .Range(Spalte & zähler).Resize(VBZeilAnz, 1)
VBBereich.Merge
Next zähler
End With
End Sub
Der Konstantenbereich muss evtl. noch angepasst werden
Vielen Dank
TTR
Viele Grüße, tester
Zunächst vielen Dank.
Ist mit dieser Methode auch gewährleistet, dass die Zeilen neben der vormals verbundenen Zelle in anfänglicher Reihenfolge bestehen bleiben?Also bleibt ‚Alter/Größe‘ oben und ‚Tel/Fax‘ unten?
Beispiel:
| Alter | Größe |
B -------------------------------------
| Tel | Fax |
| Alter | Größe |
A --------------------------------------
| Tel | Fax |
Vielen Dank
TTR
Zunächst vielen Dank.
Bitte.
Ist mit dieser Methode auch gewährleistet, dass die Zeilen
neben der vormals verbundenen Zelle in anfänglicher
Reihenfolge bestehen bleiben?Also bleibt ‚Alter/Größe‘ oben
und ‚Tel/Fax‘ unten?
Eigentlich ja, sofern Du nur nach der 1. Spalte sortierst.
Am besten in einer Kopie Deiner Tabelle probieren.
Gruß, tester