Microsoft Excel

Herbers Excel/VBA-Archiv

Reihenfolge Union beim kopieren ändern

Betrifft: Reihenfolge Union beim kopieren ändern von: Werner
Geschrieben am: 03.11.2014 11:38:55

Hallo an alle Helfer,

ich definiere mehrere unzusammenängende Zellbereiche über Union

dim Bereich as range
dim BereichA as range
dim BereichB as range
dim BereichC as range
set BereichA = Tabelle1.range(SpalteA)
set BereichB = Tabelle1.range(SpalteC)
set BereichC = Tabelle1.range(SpalteH)
set Bereich = Union(BereichA, BereichB, BereichC)
Bereich.copy Tabelle2.range("A1")

So kopiert er die Union von Tabelle1 nach Tabelle2, so weit so gut. Allerdings kopiert er die Union immer quasi aufsteigend von Spalte A nach Spalte C.
Ich möchte aber beim Einfügen in Tabelle2 die Reihenfolge ändern. Er soll mir BereichH nach A1, BereichC nach B1 und BereichA nach C1 kopieren.
Lässt sich so etwas über Union überhaupt realisieren und wenn ja wie?

Der Code ist natürlich nur schematisch dargestellt, um mein Anliegen zu verdeutlichen.

Gruß Werner

  

Betrifft: AW: Reihenfolge Union beim kopieren ändern von: Rudi Maintaire
Geschrieben am: 03.11.2014 11:49:13

Hallo,
Lässt sich so etwas über Union überhaupt realisieren und wenn ja wie?
Nein. Dann musst du die Bereiche einzeln kopieren.

Gruß
Rudi


  

Betrifft: AW: Reihenfolge Union beim kopieren ändern von: Werner
Geschrieben am: 03.11.2014 11:51:34

Hallo Rudi,

danke für deine Antwort. Das habe ich vermutet.

Gruß Werner


  

Betrifft: Falls du unbedingt mit 'Union' arbeiten willst,... von: Luc:-?
Geschrieben am: 03.11.2014 14:37:37

…Werner,
wird das (wie schon Rudi schrieb) nichts mit Copy → Paste, aber relativ einfach durch Eintrag einer entsprd MatrixFml ins ZielBlatt, wobei allerdings die EinzelBereiche auf das gemeinsame Maximum eingegrenzt wdn sollten, damit nicht so viele 0en erzeugt wdn:

Sub UnionFmlSpTausch()
    Dim iZ As Long, wSh As Worksheet, Bereich As Range, _
        BereichA As Range, BereichB As Range, BereichC As Range
    Set BereichA = Tabelle1.Range("A:A"): Set BereichB = Tabelle1.Range("C:C")
    Set BereichC = Tabelle1.Range("H:H"): Set wSh = ActiveSheet
    Set Bereich = Union(BereichA, BereichB, BereichC): iZ = Bereich.Rows.Count
    Tabelle2.Range("A1").Resize(iZ, 3).FormulaArray = "=index((" & wSh.Name & "!" & _
        Replace(Bereich.Address(0, 0), ",", "," & wSh.Name & "!") & "),row(1:" & iZ & _
        "),1,4-column(A:C))"
    Set BereichA = Nothing: Set BereichB = Nothing: Set BereichC = Nothing
    Set Bereich = Nothing: Set wSh = Nothing
End Sub
Gruß, Luc :-?


  

Betrifft: AW: Falls du unbedingt mit 'Union' arbeiten willst,... von: Werner
Geschrieben am: 04.11.2014 10:43:58

Hallo Luc,

danke für deine Antwort. Kann das derzeit aber nicht testen, geht erst in drei Tagen. Werde es dann mal ausprobieren und mich melden.

Danke Werner


  

Betrifft: AW: Falls du unbedingt mit 'Union' arbeiten willst,... von: Werner
Geschrieben am: 06.11.2014 22:29:15

Hallo Luc,

danke für deine Lösung.

Gruß Werner


  

Betrifft: Bitte sehr, gern geschehen! Gruß owT von: Luc:-?
Geschrieben am: 07.11.2014 04:09:13

:-?


 

Beiträge aus den Excel-Beispielen zum Thema "Reihenfolge Union beim kopieren ändern"