Microsoft Excel

Herbers Excel/VBA-Archiv

Spalten verbinden | Herbers Excel-Forum


Betrifft: Spalten verbinden von: Jens
Geschrieben am: 19.01.2012 08:38:11

Guten morgen,

ich würde gern über eine Makro Spalten miteinander verbinden.

Der Grund ist, ich möchte gern für Verschiedene Jahre Summen über die Kalenderwochen
eines Monats bilden. Da ich immer nur drei Jahre anzeigen möchte und im komenden Jahr dann alles um eine Zeile nach oben rutscht, passen die Verbundenen Zellen nicht mehr. Deshalb hätte ich das gern ein wenig variable.

Ich habe hier eine Tabelle, mit zwei Tabellenblättern, im ersten stehen die Jahre mit den Wochen und den Werten darunter sollten dann die Summen in der richtigen Spaltenbreite erscheinen. Im zweiten Tabellenblatt haben ich schon vorbereitet wieviele Wochen ich pro Monat möchte, wo die Zelle dann anfängt und Endet und den Wert den ich darin haben möchte.

Ich hatte auch schon ein kleines Makro angefangen, habe aber schnell gemerkt das ich da leider noch nicht weiter komme. Ich wäre sehr froh menn mir da jemand helfen könnte.

https://www.herber.de/bbs/user/78505.zip

Aktuell sind nur zwei Jahr vorhanden, das dritte würde dann analog der beiden anderen eingeügt werden.

Vielen herzlichen Dank.

Jens

  

Betrifft: AW: Spalten verbinden von: fcs
Geschrieben am: 19.01.2012 13:53:27

Hallo Jens,


es ist nicht optimal hier mit "Zellen verbinden" zu arbeiten.
Insgesamt wird es einfacher, wenn in der Formatierung der Zellen mit den Summen "Zentrieren über Auswahl" verwendet wird.

Die Darstellung in den Vorgaben in Tabelle2 kann man auch vereinfachen als Basis für ein Makro. Die Buchstaben der Spalten braucht man nicht. Die Spalten kan man aus den Wochenzahlen berechnen.

Gruß
Franz
https://www.herber.de/bbs/user/78521.xls


  

Betrifft: AW: Spalten verbinden von: Jens
Geschrieben am: 19.01.2012 16:21:20

Guten abend Franz,

vielen Dank für deine Hilfe.
Leider kann ich die Datei auf meinem Rechner nicht öffnen, bekomme da eine schwere Fehlermeldung. Würdest du die Datei nochmal erstellen möglichweise in einem anderen Excel Format als dem welches du benutzt, bei mir läuft nur Excel 2003.

Vielen Dank
Jens


  

Betrifft: AW: Spalten verbinden von: fcs
Geschrieben am: 19.01.2012 18:17:45

Hallo Jens,

die Datei wurde von mir unter Excel2007 bearbeitet aber Format Excel 97-2003 gespeichert (Kompatibilitätsmodus).
Neu speichern und hochladen dürfte also nichts bringen.
Hier einige Screenshots und das Makro.
Die Tabellen muss du dann entsprechend anpassen.
In Tabelle1 im Bereich B3:BB5 die verbundenen Zellen wieder vereinzen und das Zellformat "Horizotale Ausrichtung" ändern in "Zentrieren über Auswahl".

Gruß
Franz

Tabelle1:


Tabelle2:

'Makro in einem allgemeinen Modul
Sub aaTest()
  Dim wksZiel As Worksheet, wksQuelle As Worksheet
  Set wksZiel = Worksheets("Tabelle1")
  Set wksQuelle = Worksheets("Tabelle2")
  
  Dim ZeileQ As Long, SpalteQ As Long
  Dim ZeileZ As Long, SpalteZ As Long
  
  Const ZeileZ1 = 3 'Zeile des 1. Jahres
  Const SpalteZ1 = 2 'Spalte der 1. Woche
  
  Const ZeileQ1 = 3 'Zeile des 1. Jahreszahl
  Const SpalteQ1 = 2 'Spalte der 1. Jahreszahl
  
  With wksZiel
    .Range(.Cells(ZeileZ1, SpalteZ1), .Cells(ZeileZ1 + 2, SpalteZ1 + 52)).ClearContents
    .Range(.Cells(ZeileZ1, SpalteZ1), .Cells(ZeileZ1 + 2, SpalteZ1)).Value = " "
    .Range(.Cells(ZeileZ1, SpalteZ1 + 52), .Cells(ZeileZ1 + 2, SpalteZ1 + 52)).Value = " "
  End With
  
  ZeileZ = ZeileZ1
  
  With wksQuelle
    For SpalteQ = SpalteQ1 To SpalteQ1 + 2 * 2 Step 2
      SpalteZ = SpalteZ1
      If Not IsEmpty(.Cells(ZeileQ1, SpalteQ)) Then
        ZeileQ = ZeileQ1 + 2 'Zeile 1. Monat
        wksZiel.Cells(ZeileZ, SpalteZ1 - 1).Value = .Cells(ZeileQ1, SpalteQ).Value
        Do
          With wksZiel
            .Range(.Cells(ZeileZ, SpalteZ), _
              .Cells(ZeileZ, SpalteZ + wksQuelle.Cells(ZeileQ, SpalteQ).Value - 1)). _
ClearContents
            .Cells(ZeileZ, SpalteZ).Value = wksQuelle.Cells(ZeileQ, SpalteQ + 1).Value
          End With
          SpalteZ = SpalteZ + wksQuelle.Cells(ZeileQ, SpalteQ).Value
          ZeileQ = ZeileQ + 1
        Loop Until ZeileQ - ZeileQ1 = 14
        ZeileZ = ZeileZ + 1
      End If
    Next
  End With
End Sub



Beiträge aus den Excel-Beispielen zum Thema "Spalten verbinden"