Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: verbundene Zellen, Anzahl ermitteln

verbundene Zellen, Anzahl ermitteln
02.07.2016 00:46:46
Michael
Hallo liebes Forum,
ich habe eine Frage und hoffe, dass diese jemand von euch beantworten kann. Ich bin gerade dabei, mit Excel eine Schichteinteilung für die Arbeit zu erstellen. Eine Schichtdauer wird mit einer verbundenen Zelle dargestellt.
Mein Makro sucht alle verbundenen Zellen im vorgegebenen Bereich und soll, wenn eine verbundene Zelle gefunden wurde die Anzahl der Zellen in diese schreiben.
So weit bin ich bisher gekommen:
Sub Verbundene_Zellen_suchen_und_jeweilige_Anzahl_ermitteln()
Dim rngZelle As Range
For Each rngZelle In Range("B4:Z78")
If rngZelle.MergeCells Then
'hier soll die Anzahl der verbundenen Zellen ermittelt werden
'und der Wert in die Zelle geschrieben werden
End If
Next rngZelle
End Sub

Ich bedanke mich für eure Hilfe und bin mir sicher, dass jemand eine Lösung weiß.
Viele Grüße
Michael

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: verbundene Zellen, Anzahl ermitteln
02.07.2016 07:42:53
Beverly
Hi Michael,
meinst du so etwas:
Sub Verbundene_Zellen_suchen_und_jeweilige_Anzahl_ermitteln()
Dim rngZelle As Range
Dim lngZaehler As Long
For Each rngZelle In Range("B4:Z78")
If rngZelle.MergeCells Then
'hier soll die Anzahl der verbundenen Zellen ermittelt werden
lngZaehler = lngZaehler + 1
End If
Next rngZelle
'und der Wert in die Zelle geschrieben werden
Range("B2") = lngZaehler
End Sub


Anzeige
AW: verbundene Zellen, Anzahl ermitteln
02.07.2016 09:18:08
Luschi
Hallo Michael,
Karins Code zählt, wiviele Zellen sich in 'verbundenen Zellen' befinden.
Ich habe diesen Code deshalb ein bischen abgeändert:

Sub Verbundene_Zellen_suchen_und_jeweilige_Anzahl_ermitteln()
Dim rngZelle As Range, rngUnion As Range, rngTest As Range
Dim lngZaehler As Long
For Each rngZelle In Range("B3:Z78")
If rngZelle.MergeCells Then
If rngUnion Is Nothing Then
lngZaehler = lngZaehler + 1
Set rngUnion = rngZelle.MergeArea
Else
Set rngTest = Application.Intersect(rngUnion, rngZelle)
If rngTest Is Nothing Then
lngZaehler = lngZaehler + 1
Set rngUnion = Application.Union(rngUnion, rngZelle.MergeArea)
End If
End If
End If
Next rngZelle
'und der Wert in die Zelle geschrieben werden
Range("B2") = lngZaehler
MsgBox "Anzahl der verbundenen Zellen: " & lngZaehler, vbSystemModal + 48, "zur Info..."
End Sub
Gruß von Luschi
aus klein-Paris

Anzeige
verbundene Zellen/Zellbereiche, Anzahl ermitteln
02.07.2016 10:08:57
Beverly
Hi Michael,
hier noch eine Möglichkeit, sowohl die verbundenen Bereiche als auch die Anzahl Zellen zu ermitteln:
Sub Verbundene_Bereiche_und_Zellen_zaehlen()
Dim rngZelle As Range
Dim lngBereiche As Long
Dim lngZellen As Long
Dim strBereich As String
For Each rngZelle In Range("B4:Z78")
If rngZelle.MergeCells Then
lngZellen = lngZellen + 1
If InStr(strBereich, rngZelle.MergeArea.Address) = 0 Then
'hier soll die Anzahl der verbundenen Bereiche ermittelt werden
'und der Wert in die Zelle geschrieben werden
rngZelle = rngZelle.MergeArea.Cells.Count
strBereich = strBereich & "," & rngZelle.MergeArea.Address
lngBereiche = lngBereiche + 1
End If
End If
Next rngZelle
MsgBox "In den " & lngBereiche & " verbundenen Bereichen: " & vbLf & Mid(strBereich, 2) _
& vbLf & "insgesamt " & lngZellen & " Zellen"
End Sub

Anzahl der Zellen wird in den jeweiligen verbundenen Zellbereich geschrieben. Zellbereiche und Gesamtanzahl der Zellen wird in einer MsgBox auseggeben.


Anzeige
AW: verbundene Zellen/Zellbereiche, Anzahl ermitteln
02.07.2016 20:51:52
Luschi
Hallo Karin,
warum sowas: If InStr(strBereich, rngZelle.MergeArea.Address) = 0 Then
Vba nähert sich stark einem objekt-orientierten Datenmodell und da sollten Rangebereiche als Objekt und nicht als String-Adresse behandelt werden.
Ich ahne es schon, denn es wird die Frage folgen:
- wie kann ich die verbundenen Zellen in allen WorkSheets der entsprechenden Arbeitsmappe
  ermitteln.
Und da braucht man Objekte und nicht Adressen von Objekten.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: verbundene Zellen, Anzahl ermitteln
02.07.2016 07:56:47
Hajo_Zi
Hallo Michael,
Option Explicit
Sub Verbundene_Zellen_suchen_und_jeweilige_Anzahl_ermitteln()
Dim rngZelle As Range
For Each rngZelle In Range("B4:Z78")
If rngZelle.MergeCells Then
If WorksheetFunction.CountIf(Range(rngZelle.MergeArea.Address), "") = rngZelle. _
MergeArea.Count Then
rngZelle = rngZelle.MergeArea.Count
End If
'hier soll die Anzahl der verbundenen Zellen ermittelt werden
'und der Wert in die Zelle geschrieben werden
End If
Next rngZelle
End Sub

Anzeige
AW: verbundene Zellen, Anzahl ermitteln
02.07.2016 12:29:22
Michael
Problem gelöst!
Vielen Dank für eure schnellen Antworten.
Viele Grüße
Michael
;
Anzeige
Anzeige

Infobox / Tutorial

Verbundene Zellen in Excel: Anzahl Ermitteln und Suchen


Schritt-für-Schritt-Anleitung

Um die Anzahl der verbundenen Zellen in Excel zu ermitteln, kannst Du ein einfaches VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden Code in das Modul:

    Sub Verbundene_Zellen_suchen_und_jeweilige_Anzahl_ermitteln()
       Dim rngZelle As Range
       Dim lngZaehler As Long
       For Each rngZelle In Range("B4:Z78")
           If rngZelle.MergeCells Then
               lngZaehler = lngZaehler + 1
           End If
       Next rngZelle
       Range("B2") = lngZaehler
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Drücke ALT + F8, wähle das Makro aus und klicke auf Ausführen.

Jetzt wird die Anzahl der verbundenen Zellen in den Bereich B2 geschrieben.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler: 1004"

    • Lösung: Stelle sicher, dass der angegebene Bereich (z.B. B4:Z78) tatsächlich existiert und keine Leerzeilen oder -spalten enthält.
  • Fehler: Ergebnis zeigt 0

    • Lösung: Überprüfe, ob die Zellen tatsächlich verbunden sind. Wenn Du die verbundenen Zellen suchen möchtest, stelle sicher, dass diese Zellen richtig formatiert sind.

Alternative Methoden

Eine alternative Methode ist die Verwendung der CountIf-Funktion in Kombination mit dem VBA-Code. Hier ist ein Beispiel:

Sub Verbundene_Zellen_suchen_und_jeweilige_Anzahl_ermitteln()
    Dim rngZelle As Range
    For Each rngZelle In Range("B4:Z78")
        If rngZelle.MergeCells Then
            If WorksheetFunction.CountIf(rngZelle.MergeArea, "") = rngZelle.MergeArea.Count Then
                rngZelle = rngZelle.MergeArea.Count
            End If
        End If
    Next rngZelle
End Sub

Diese Methode ermöglicht es Dir, die verbundenen Zellen zu finden und deren Anzahl direkt in die Zelle zu schreiben.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Anwendung des VBA-Codes:

  • Beispiel 1: Du hast einen Bereich mit verbundenen Zellen, die Schichten in einer Schichteinteilung darstellen. Mit dem obigen Makro kannst Du schnell die Anzahl der Zellen zählen, die diese Schicht betreffen.

  • Beispiel 2: Wenn Du mehrere Blätter in einer Arbeitsmappe hast, kannst Du den Code so anpassen, dass er alle Blätter durchläuft und die verbundenen Zellen in jedem Blatt zählt.


Tipps für Profis

  • Verwendung von Variablen: Nutze Variablen, um den Code effizienter zu gestalten. Anstatt die Zellen direkt zu referenzieren, speichere wichtige Werte in Variablen.

  • Debugging: Verwende Debug.Print innerhalb des Codes, um Informationen über den Prozess in der Direktansicht des VBA-Editors auszugeben. Dies kann hilfreich sein, um Probleme zu identifizieren.

  • Makros automatisieren: Du kannst das Makro so einstellen, dass es automatisch beim Öffnen der Datei ausgeführt wird. Füge dazu den Code in das Workbook_Open-Ereignis ein.


FAQ: Häufige Fragen

1. Wie finde ich verbundene Zellen in Excel?
Du kannst die Funktion MergeCells in VBA verwenden, um verbundene Zellen zu finden. Der oben angegebene VBA-Code ist eine effektive Methode dafür.

2. Kann ich verbundene Zellen in mehreren Arbeitsblättern suchen?
Ja, Du kannst den VBA-Code anpassen, um über alle Arbeitsblätter in Deiner Arbeitsmappe zu iterieren und die verbundenen Zellen zu zählen.

3. Gibt es eine Möglichkeit, verbundene Zellen zu formatieren?
Ja, Du kannst die Formatierung der verbundenen Zellen über VBA ändern, indem Du beispielsweise die Interior.Color-Eigenschaft anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige