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

Forumthread: Abstand zwischen Zeilen bestimmen

Abstand zwischen Zeilen bestimmen
04.06.2008 14:28:58
Tommi
Hallöchen,
und noch eine Frage. Ich möchte den Abstand zwischen 2 Zeilen (mit dem Wort Anfang) bestimmen. Im Moment lasse ich eine Schleife vom Stil
Abstand = 1
Do While Left(Cells(zeile + Abstand, 1), 6) "Anfang"
Abstand = Abstand + 1
Loop
laufen. Ist das so okay oder gibt es da irgendeine Funktion für um Abstände zu bestimmen oder das ganze vlt. auch schneller zu machen (For-Next...). Ist ein Schleifentyp überhaupt zu bevorzugen, also was die Geschwindigkeit angeht?
Anfang
sdf
sdf
sdf
sdfsdf
Anfang
sdf
sdf
sdf
Anfang
usw.
LG,
Tommi

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ermitteln der Zeilendifferenz gleicher Werte
04.06.2008 14:50:53
NoNet
Hallo Tommi,
grundsätzlich ist die DO....LOOP Variante schon dafür geeignet, nur würde ich nicht JEDE Zelle einzeln überprüfen, sondern gezielt die SUCH-Funktion von Excel verwenden, um die jeweils nächste Zelle mit diesem Wert zu ermitteln :
VBA-Code:
Sub AbstandBestimmen()
    Dim strWort As String
    Dim lngAnfang As Long, lngEnde As Long
    Dim rngZelle As Range
    strWort = "Anfang"
    If Application.CountIf([A:A], strWort) > 1 Then
        Set rngZelle = [A:A].Find(strWort, lookat:=xlWhole, LookIn:=xlValues)
        If [A1] = strWort Then Set rngZelle = [A1]
        lngAnfang = rngZelle.Row
        Do
            Set rngZelle2 = [A:A].FindNext(after:=rngZelle)
            If Not rngZelle2 Is Nothing Then
                lngEnde = rngZelle2.Row
                If lngEnde > lngAnfang Then
                    MsgBox "Abstand : " & lngAnfang & " bis " & lngEnde & " : " & lngEnde - lngAnfang & " Zeile(n)"
                    Set rngZelle = rngZelle2
                    lngAnfang = lngEnde
                End If
            End If
        Loop Until lngEnde < lngAnfang
    ElseIf Application.CountIf([A:A], strWort) = 1 Then
        Set rngZelle = [A:A].Find(strWort, lookat:=xlWhole, LookIn:=xlValues)
        MsgBox rngZelle.Address, vbOKOnly + vbInformation, "Suchbegriff nur einmalig in Spalte A vorhanden :"
    Else
        MsgBox strWort, vbOKOnly + vbInformation, "Suchbegriff nicht in Spalte A gefunden !"
    End If
End Sub
Hier wird zunächst geprüft, wie häufig der Suchbegriff in Spalte A vorhanden ist und eine entsprechende Meldung angezeigt.
Gruß, NoNet

Anzeige
AW: Abstand zwischen Zeilen bestimmen
04.06.2008 22:43:33
Daniel
Hi
wenn die erste Zeile mit dem Wort "Anfang" gegeben ist, dann so vielleicht:

Dim Zeile1 As Long
Dim Zeile2 As Long
Dim Abstand As Long
Zeile1 = 1 '--- das sei mal ein bekannter Zeilenwert für "Anfang"´
Zeile2 = Columns(1).Find(what:="Anfang", after:=Cells(Zeile1, 1)).Row
Abstand = Zeile2 - Zeile1


ist Zeile1 schon die letze Zeile mit dem Inhalt Abstand, so wird Zeile2 kleiner oder gleich Zeile1 (Excel beginnt wieder von vorne zu suchen)
Gruß, Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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