Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Automa gleiche Zellen in mehreren Zeilen verbinden

Betrifft: Automa gleiche Zellen in mehreren Zeilen verbinden von: Balu
Geschrieben am: 24.11.2014 12:54:52

Hallo Leute!
Ich suche mich schon seit Tagen kaputt, finde aber leider keine 100%ig funktionierende Lösung für mein Problem.
Ich habe schon alles versucht, was ich so gefunden habe und auch versucht die Makros auf mein Problem anzupassen (aufgrund mangelnder vernünftiger VBA Kenntnisse gescheitert)
Ich füge hier einfach mal das Makro ein, was meiner Meinung nach am Besten funktioniert.
Jedoch funktioniert das nur für die angegebene Zeile, ich möchte es aber für 4 Zeilen (1-4)
Ich hab überall gelesen, dass man das auch mit bedingter Formatierung lösen kann, das habe ich aber auch nicht hingekriegt :(
Hintergrund: Ich habe eine riesen Tabelle, in der alle Daten von jedem Tag im Jahr automatisch generiert werden (d.h. 365 Spalten)
Aufgrund dieser Daten werden in den 4 Zeilen drüber Kalenderwoche, Monat, Quartal, und Jahr ausgegeben.
Diese Werte sollen dann zusammengefasst werden, wenn sie gleich sind (nur für optische zwecke, von daher wäre VBA ok, dann müsste ich nur einmal zum Jahresende die Zeilen wieder überschreiben)

Also: Wenn ihr mir sagen könnt, wie ich das mit Bedingter Formatierung lösen kann, wäre super.
Ansonsten: hier ist der Code, der angepasst werden kann



Sub VerbindenGleicheWerte() 
Dim Zeile As Long 
Dim Zelle1 As Range 
Dim Zelle2 As Range 
Dim rngZeile As Range 
Dim sp As Long 
Dim Verbinden As Boolean 
Zeile = 14 
Set rngZeile = Intersect(ActiveSheet.UsedRange, Rows(Zeile)) 
Set Zelle1 = rngZeile.Cells(1, 1) 
For sp = 3 To rngZeile.Columns.Count + 1 
    If rngZeile.Cells(1, sp) = Zelle1 Then 
        Verbinden = True 
    Else 
        With Range(Zelle1, rngZeile.Cells(1, sp - 1)) 
            If Verbinden = True Then 
                .Offset(0, 1).Resize(1, .Columns.Count - 1).ClearContents 
                .merge 
                .HorizontalAlignment = xlCenter 
              End If 
            
        End With 
        Verbinden = False 
        Set Zelle1 = rngZeile.Cells(1, sp) 
    End If 
Next 
End Sub


Ich danke schonmal für Mühe und Antworten!

  

Betrifft: Na, dann iat das vielleicht was für dich, ... von: Luc:-?
Geschrieben am: 24.11.2014 14:23:19

…Balu:
http://www.online-excel.de/fom/fo_read.php?f=3&bzh=0&h=251#a123x
Ist übrigens auch hier im Archiv zu finden. Viell mal'n bissken Recherchieren trainieren… ;->
Gruß, Luc :-?


  

Betrifft: AW: Na, dann iat das vielleicht was für dich, ... von: Balu
Geschrieben am: 24.11.2014 14:39:48

hui, Luc, ich denke das ist für mein Problem ein bisschen zu heavy :D


  

Betrifft: Wieso, es kommt doch auf das Ergebnis an! owT von: Luc:-?
Geschrieben am: 24.11.2014 15:10:35

:-?


  

Betrifft: Nebenbei, für LinkFolger aus dem MOF; ... von: Luc:-?
Geschrieben am: 24.11.2014 15:38:49

…wer wie ein gewisser Earl Fred aus dem MOF VerbundZellen pauschal als „Mist“ abtut und dann dort die bekannte StandardLösung anbietet, schmückt sich sehr zu unrecht mit einem „Adelstitel“, denn das zeugt in meinen Augen nicht gerade von Xl/VBA-Kompetenz, sondern nur von gedankenloser Nachbeterei der vermeintlichen Mehrheitsmeinung.
Merke: Auch Mehrheiten schützen nicht vor Irrtümern! Immerhin war eine Mehrheit mal der Ansicht, die Erde sei eine Scheibe und die Sonne drehe sich um sie (einige glauben das ja auch heute noch → um die zu finden, muss man nur mal nach geozentrischem Weltbild googeln)!
Übrigens, Balu,
Ein universales Tool muss alles oder wenigstens soviel wie möglich berücksichtigen, sonst wäre es ja nicht universal, also ohne Anpassung (für den angegebenen Zweck und mit den ggf genannten Einschränkungen) allgemein verwendbar. Alles Andere ist eine sog InselLösung! Letztere wdn in Foren ohnehin massenhaft produziert und landen letztlich schneller im EDV-Nirvana des Vergessens als man glauben will.
Luc :-?


  

Betrifft: AW: Automa gleiche Zellen in mehreren Zeilen verbinden von: Balu
Geschrieben am: 24.11.2014 14:36:32

Damit sich keiner doppelte Mühe macht:
in diesen Threads wird das Problem auch behandelt:
http://www.office-loesung.de/p/viewtopic.php?f=166&t=673104&p=2808583#p2808583
http://www.ms-office-forum.net/forum/showthread.php?p=1629124#post1629124


  

Betrifft: hier mein Lösungsvorschlag... von: Tino
Geschrieben am: 24.11.2014 15:18:57

Hallo,

Sub VerbindenGleicheWerte()
Dim ArData, varWert, rngVerbund As Range, rngData As Range
Dim n&, nn&, MaxCol&, AbZeile&, AbSpalte&

AbZeile = 14
AbSpalte = 3

With Tabelle1 'Tabelle anpassen !!! 
    Set rngData = .Range(.Cells(AbZeile, AbSpalte), .Cells(.Rows.Count, AbSpalte).End(xlUp))
    If rngData.Rows(1).Row < AbZeile Then Exit Sub
    Set rngData = rngData.Resize(, .Columns.Count - rngData.Columns(1).Column + 1)
    Set rngData = Intersect(rngData, .UsedRange)
    If rngData Is Nothing Then Exit Sub
    If rngData.Columns.Count < 2 Then Exit Sub
End With

On Error GoTo ErrorHandler:
Events_ False

For n = 1 To rngData.Rows.Count
    
    ArData = rngData.Rows(n).Value2
    varWert = ArData(1, 1)
    MaxCol = Ubound(ArData, 2)
    
    For nn = 2 To MaxCol
        If varWert = ArData(1, nn) Then
            If Not rngVerbund Is Nothing Then
                Set rngVerbund = Union(rngVerbund, rngData.Cells(n, nn - 1).Resize(, 2))
            Else
                Set rngVerbund = rngData.Cells(n, nn - 1).Resize(, 2)
            End If
        End If
        
        If varWert = ArData(1, nn) Or nn = MaxCol Then
            If Not rngVerbund Is Nothing Then
                For Each rngVerbund In rngVerbund.Areas
                    If Not rngVerbund.MergeCells Then
                        varWert = rngVerbund.Cells(1, 1).Value
                        rngVerbund.ClearContents
                        rngVerbund.Merge
                        rngVerbund.Cells(1, 1).Value = varWert
                    End If
                Next rngVerbund
                Set rngVerbund = Nothing
            End If
        End If
        
        varWert = ArData(1, nn)
    Next nn
Next n

ErrorHandler:

Events_ True

If Err.Number <> 0 Then
    MsgBox Err.Description, _
           vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
           "Error: " & Err.Number, Err.HelpFile, Err.HelpContext
End If
End Sub

Sub Events_(booSchalter As Boolean)
With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .DisplayAlerts = False
    .Calculation = IIf(booSchalter, xlCalculationAutomatic, xlCalculationManual)
End With
End Sub
Gruß Tino


  

Betrifft: AW: hier mein Lösungsvorschlag... von: Balu
Geschrieben am: 24.11.2014 15:34:47

hey Tino,

viele Dank für deine Mühe und Lösungsvorschlag.
Leider bekomme ich eine Fehlermeldung: Laufzeitfehler 424, Objekt erforderlich
Folgende Zeile wird gelb markiert: Set rngData = .Range(.Cells(AbZeile, AbSpalte), .Cells(.Rows.Count, AbSpalte).End(xlUp))

Wie passe ich den Code an, dass nur bis zu einer bestimmten Zeile gesucht wird?
Ich hätte in der obigen Zeile .Cells(.Rows.Count, AbSpalte).End(xlUp) durch .Cells(EndZeile, AbSpalte).End(xlUp) ersetzt, wäre das richtig?


  

Betrifft: hier meine Testdatei von: Tino
Geschrieben am: 24.11.2014 16:38:11

Hallo,

im Code kannst du dies einstellen, ab welcher Zeile, Spalte und wieviel Spalten!

AbZeile = 14
AbSpalte = 3
MaxSpalten = 4

https://www.herber.de/bbs/user/93989.xlsm


Gruß Tino


  

Betrifft: AW: hier meine Testdatei von: Balu
Geschrieben am: 25.11.2014 08:01:53

Hey Tino,
ich habe jetzt erst deine Testdatei gesehen.
Ja das mit AbZeile, AbSpalte und MaxSpalten ist richtig, aber ich bräuchte eine Variable BisZeile.
Ich krieg die nicht vernünftig eingebaut :/

Dein Makro fügt nur die angegebene Zeile bei AbZeile zusammen :/


  

Betrifft: das ergibt sich doch automatisch von: Tino
Geschrieben am: 25.11.2014 11:23:28

Hallo,
AbZeile und MaxSpalten ergibt doch einen definierten Bereich?!

Bsp.
AbZeile 4 und MaxSpalten 5 = Zeile 4 bis 8
AbZeile 12 und MaxSpalten 1 = Zeile 12 bis 12

(MaxSpalten ist falsch gewählt, müsste eigentlich MaxZeilen heißen)

Gruß Tino


  

Betrifft: AW: das ergibt sich doch automatisch von: Balu
Geschrieben am: 25.11.2014 12:54:39

gut damit hätte sich das geklärt, war mit der Bezeichnung natürlich etwas verwirrend :D
vielen vielen Dank für diese (auf mich persönlich zugeschnittene (!!!!)) Insellösung. Top!


  

Betrifft: Die Neigung der Deutschen, das Fahrrad immer ... von: Luc:-?
Geschrieben am: 24.11.2014 15:43:16

…wieder neu zu erfinden, scheint ungebrochen. Wieder eine Insel-„Lösung“ mehr… :->
Luc :-?


  

Betrifft: Mach so viel wie nötig, aber so wenig wie möglich! von: Tino
Geschrieben am: 24.11.2014 16:43:15

Hallo,
sonst sind die für mich nicht zu gebrauchen, lieber mach ich die täglich neu!

Gruß Tino


  

Betrifft: Das wäre was, wenn die Pgmierer einer ... von: Luc:-?
Geschrieben am: 24.11.2014 17:38:42

…universellen Software wie Xl dieser „Logik“ gefolgt wären, Tino,
dann müsste man für jedes TeilProblem eine andere XlVersion benutzen… :->>
Letztlich müllen sich die so Handelnden nur ihren Rechner voll bzw jedes Projekt ist in sich geschlossen und kann nicht anderweitig verwendet oder (teil-)genutzt wdn.
InselLösungen sind die PlastikTüten der EDV, AddIns mit Universal-Tools die rationelle Lösung!
Luc :-?


  

Betrifft: AW:Luc du musst endlich mal lernen... von: Daniel
Geschrieben am: 24.11.2014 17:49:31

zwischen einem Profi-Programmierer und einem einfachen Excelandwender mit rudimentären Programmierkenntnissen zu differnzieren.
Profis und solche die es werden wollen, stellen hier mit Sicherheit keine Fragen.
Das Problem ist, das mit zunehmender "universalität" der Aufwand und die Komplexität der Lösung exponential zunimmt und für die meisten Hobby-Anwender die einfache Insellösung die bessere ist, weil der mit der "eierlegenden Wollmilchsau" schlichtweg überfordert ist.
Gruß Daniel


  

Betrifft: Warum denn, er muss sie ja nur anwenden, ... von: Luc:-?
Geschrieben am: 24.11.2014 18:04:28

…weil alles bereits fertig ist, Daniel;
und ich entscheide immer noch selbst, was ich lernen will. Bestimmt muss ich keine „Tiefflug“-EDV, auch nicht von dir oder diversen „PlastikTüten“-Produzenten „lernen“! Wer nicht mal daran denkt, seine Pgmm pflegeleicht bzw anpassungsfähig zu schreiben, obwohl hier schon desöfteren darauf hingewiesen wurde, ist für mich einfach nicht ernst zu nehmen…
Luc :-?


  

Betrifft: AW: Warum denn, er muss sie ja nur anwenden, ... von: Balu
Geschrieben am: 25.11.2014 07:53:47

wenn mir jemand sagen könnte, wie ich die Formel auf das o.g. Problem anpassen kann, wäre ich sehr dankbar, ich kriege es alleine leider nicht hin (da kommt immer irgendein Mist raus :( )


  

Betrifft: AW: AW:Luc du musst endlich mal lernen... von: Balu
Geschrieben am: 25.11.2014 12:55:39

"Das Problem ist, das mit zunehmender "universalität" der Aufwand und die Komplexität der Lösung exponential zunimmt und für die meisten Hobby-Anwender die einfache Insellösung die bessere ist, weil der mit der "eierlegenden Wollmilchsau" schlichtweg überfordert ist."

genau so sieht es nämlich aus!


  

Betrifft: Siehe meine AW oben; 'universal' heißt auch ... von: Luc:-?
Geschrieben am: 25.11.2014 17:01:54

ohne nennenswerten AnpassungsAufwand, aber so etwas seid ihr Code-„Zusammenklauber“ und -Anpasser ja wohl nicht gewohnt… :->
Allerdings kann es dann gut sein, dass ihr einen solchen Code nicht versteht, aber den so mancher XlFkt würdet ihr ja auch nicht verstehen, nur seht ihr ihn nicht, was mich in meiner Auffassung bestärkt, so etwas nur ausnahmsweise zu zeigen!
Bastelt mal schön weiter…! ;->
Luc :-?


  

Betrifft: AW: Siehe meine AW oben; 'universal' heißt auch . von: Daniel
Geschrieben am: 25.11.2014 17:54:20

lieber basteln, als für Code, den man nicht versteht, verantwortlich sein zu müssen.


  

Betrifft: Deshalb hat es offensichtlich keinen Sinn, ... von: Luc:-?
Geschrieben am: 25.11.2014 18:53:01

…hier so etwas zu zeigen, obwohl ich da weder der Erste war noch der Einzige bin. Aber die Doku nicht vergessen, sonst landet alles idR spätestens bei Verantwort­lichkeits­wechsel im Müll oder wir dürfen uns dann mit den zusammen­gestoppelten Basteleien aus­ein­ander­set­zen → ohne mich…!
Luc :-?


  

Betrifft: ich lege mehr wert auf Geschwindigkeit... von: Tino
Geschrieben am: 24.11.2014 19:19:54

Hallo,
soweit es meine Kenntnisse/Ideen zulassen!
Meist sollen die auch nicht für die ganze Welt sein sondern nur mein Problem effizient lösen.

Gruß Tino


  

Betrifft: Dann wirst du aber hoffentlich auch die ... von: Luc:-?
Geschrieben am: 25.11.2014 05:04:17

…Übersicht behalten, was ich bei vielen VBA-Anfängern bezweifle; und ohne ordentliche Doku kann dann kein evtl Nachfolger was damit anfangen.
Luc :-?


  

Betrifft: AW: Dann wirst du aber hoffentlich auch die ... von: Daniel
Geschrieben am: 25.11.2014 10:12:37

es ist verdammt schwer, eine ordentliche Doku für Codes zu schreiben, die man sich irgendwo aus dem Internet zusammenkopiert hat und die man nur anwendenden kann, ohne sie zu verstehen.
Gruss Daniel


  

Betrifft: Wennde recht hast, haste ooch recht...! ;-] von: Luc:-?
Geschrieben am: 25.11.2014 16:54:04

:-?


  

Betrifft: AW: Werte stehen lassen, Bedingte Formatierung von: Daniel
Geschrieben am: 24.11.2014 17:17:21

Hi
wenn du damit leben kannst, dass bei einem Wechsel der neue Text links (dh in der ersten Zelle des Bereichs) steht, dann einfach mit Bedingter Formatierung.

Annahme:
der Kalender beginnt ab Spalte B!
dann Zellen B1-NC4 markieren und folgende Bedingte Formatierung anlegen:
Formel: =B1<>A1
Format: Schriftfarbe schwarz; Rahmen links

Grundformat der Zelle: Schriftfarbe = Hintergrundfarbe

Gruß Daniel


  

Betrifft: Das wäre neben analoger benutzerdefinierter ... von: Luc:-?
Geschrieben am: 24.11.2014 17:43:01

…Formatierung die einzig vernünftige Alternative, weil dann ebenfalls noch sinnvoll in dieser Spalte gefiltert wdn kann.
Luc :-?


  

Betrifft: AW: Filtern geht auch mit Verbundenen Zellen... von: Daniel
Geschrieben am: 24.11.2014 18:04:40

... Wenn man zwischen den Kopfzeilen, die die Zellbveründe enthalten und den Datenzeilen eine Leerzeile lässt, so dass diese Zeilen nicht zur eigenetlichen Tabelle gehören.
Sollte man sowieso machen, da eine gefilterte Tabelle nur eine Zeile Überschrift haben sollte.
Gruß Daniel


  

Betrifft: Fktioniert unter Xl12 aber b.'konventionellen'... von: Luc:-?
Geschrieben am: 24.11.2014 18:29:35

…VerbundZellen nicht zuverlässig, Daniel,
bei unkonventionellen VbZellen bzw der FormatierungsLösung aber schon.
Luc :-?


  

Betrifft: AW: Werte stehen lassen, Bedingte Formatierung von: Balu
Geschrieben am: 25.11.2014 12:56:35

Hallo Daniel,
klingt interessant die Lösung. Nur wie ist dann A1 formatiert?


  

Betrifft: AW: Werte stehen lassen, Bedingte Formatierung von: Balu
Geschrieben am: 25.11.2014 12:57:23

Ich wollte nur mal anmerken, dass das Forum hier seeeeehr unübersichtlich ist und Beiträge sehr leicht untergehen. Habe erst jetzt alle Antworten gefunden


  

Betrifft: So ein Quatsch, ich sehe alle! Gerade die ... von: Luc:-?
Geschrieben am: 25.11.2014 16:48:53

Thread-Struktur (FORUMSLISTE) zeigt doch alle BTe, Balu,
und wenn du einen davon gelesen hast, hat der anschließend auf deinem Browser 'ne andere Farbe, was allerdings von deinen Browser-Einstellungen und deinem Umgang mit der Surf-History abhängt.
Gruß, Luc :-?


  

Betrifft: AW: Werte stehen lassen, Bedingte Formatierung von: Daniel
Geschrieben am: 25.11.2014 13:02:48

Hi
der Kalender beginnt zu 99% in Spalte B oder später, weil Spalte A noch die Zeilenbeschriftung enthält, Dh A1 ist sowieso abweichend formatiert.
sollte der Kalender tatsächlich in Spalte A beginnen, so braucht Spalte A keine Bedingte Formatierung, weil du hier immer "am Anfang" bist, dh du kannst hier die Schrift generell Schwarz machen.

Gruß Daniel


  

Betrifft: AW: Werte stehen lassen, Bedingte Formatierung von: Balu
Geschrieben am: 25.11.2014 13:13:44

ok, formatiert ist das falsche Wort.
Was soll in A stehen? Weil bei der bedingten Formaatierung steht ja was von =B1<>A1
also wenn in A1 jetzt immer was anderes steht, trifft doch die Bedingung immer zu?


  

Betrifft: AW: Werte stehen lassen, Bedingte Formatierung von: Balu
Geschrieben am: 25.11.2014 13:38:06

Ok ich hab es jetzt ausprobiert:
Es werden die ersten beiden Vorkommen ausgegeben (Warum?)
Das die Sachen dann in der ersten Spalte jeweils stehen stört mich nicht, aber das Problem ist, dass die Zeilen so schmal sind, dass da maximal 2 Zahlen reinpassen. Kann man irgenwie zulassen, dass die Ränder überschrieben werden?

Und ich würde gerne die Formatierung verstehen, also was diese Bedingung auslöst (eigentlich bin ich in Excel abgesehen von VBA ziemlich fit, aber irgendwie komme ich nicht dahinter?)


  

Betrifft: AW: Werte stehen lassen, Bedingte Formatierung von: daniel
Geschrieben am: 25.11.2014 15:46:10

Überschreiben von Rändern nur bei Texten und wenn die Nachbarzelle leer ist.

Bei schmalen Spalten kannst du auch den Monatsnamen in Einzelbiuchstaben in die Zellen schreiben.

=teil(text(datum;"MMMM")&wiederholen(" ";31);tag(Datum);1)

Hat den Vorteil, dass alle Zellen einer Zeile den selben Inhalt haben (formel).

Gruss Daniel


  

Betrifft: AW: Werte stehen lassen, Bedingte Formatierung von: Balu
Geschrieben am: 25.11.2014 15:56:20

Mein Fehler habe ich gefunden, hatte eine Spalte ausgelassen.
Ahh, ich wusste gar nicht, dass bedingte Formatierungen so schlau sind und die Formel dann intelligent weiterführt.

Ok, also ist es nicht möglich, über den Rand zu schreiben, wenn die benachbarte Zelle beschrieben ist?
Ansonsten müsste ich die Spalten breiter machen, wäre nicht so optimal, aber naja


 

Beiträge aus den Excel-Beispielen zum Thema "Automa gleiche Zellen in mehreren Zeilen verbinden"