Anzeige
Archiv - Navigation
1152to1156
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen zählen

Zeilen zählen
Thomas
Hallo zusammen,
ich möchte folgende Aufgabe per VBA lösen:
In einem bestimmten Bereich soll die Anzahl der Zeilen ermittelt werden,
in denen ein bestimmtes Zeichen gefunden wird.
Das Zeichen kann in mehreren Spalten in einen Zeile stehen.
Ich hab schon einige Versuche durch, hab es aber nicht geschafft.
Z. B.:
'For Z_Row = 25 To 5002
' Set Bereich = Sheets(1).range(Cells(Z_Row, 47), Cells(Z_Row, 156))
' For Each Zelle In Bereich
' If Zelle Like Zeichen1 Then
' Aend_Text = Aend_Text + 1
' End If
' Next Zelle
'Next Z_Row
oder
'For Z_Row = 25 To 10000
' If Sheets(1).range(Cells(Z_Row, 47), Cells(Z_Row, 156)).Find(Zeichen1) Then
' Aend_Text = Aend_Text + 1
' End If
'Next Z_Row
Grüße
Thomas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zeilen zählen
28.04.2010 08:06:16
Tino
Hallo,
vielleicht geht es so.
Sub ZaehleZeichen()
Dim Bereich As Range
Dim Z_Row As Long, Aend_Text As Long
Dim MaxRow As Long

Const Zeichen1$ = "H"

With Application.WorksheetFunction
    
    With ActiveSheet.UsedRange
        MaxRow = .Rows(.Rows.Count).Row
        If MaxRow > 5002 Then MaxRow = 5002
    End With
    
    If MaxRow > 24 Then
        For Z_Row = 25 To 5002
         Set Bereich = Sheets(1).Range(Cells(Z_Row, 47), Cells(Z_Row, 156))
         If .CountIf(Bereich, "*" & Zeichen1$ & "*") > 0 Then
            Aend_Text = Aend_Text + 1
         End If
        Next Z_Row
    End If

End With

MsgBox "Zeichen: " & Zeichen1$ & vbCr & "kommt in " & Aend_Text & " Zeilen vor"
End Sub
Gruß Tino
Anzeige
AW: Zeilen zählen
28.04.2010 08:26:39
Thomas
Hallo Tino,
hat geklappt, vielen für die schnelle Hilfe.
Gruß
Thomas
Zeilen im Code vergessen einzubauen
28.04.2010 08:26:53
Tino
Hallo,
hier die Korrektur.
Code kommt in ein Modul und wird auf der aktiven Tabelle ausgeführt.
Sub ZaehleZeichen()
Dim Bereich As Range
Dim Z_Row As Long, Aend_Text As Long
Dim MaxRow As Long

Const Zeichen1$ = "H"

With Application.WorksheetFunction
    
    With ActiveSheet.UsedRange
        MaxRow = .Rows(.Rows.Count).Row
        If MaxRow > 5002 Then MaxRow = 5002
    End With
    
    If MaxRow > 24 Then
        For Z_Row = 25 To MaxRow
         Set Bereich = Range(Cells(Z_Row, 47), Cells(Z_Row, 156))
         If .CountIf(Bereich, "*" & Zeichen1$ & "*") > 0 Then
            Aend_Text = Aend_Text + 1
         End If
        Next Z_Row
    End If

End With

MsgBox "Zeichen: " & Zeichen1$ & vbCr & "kommt in " & Aend_Text & " Zeilen vor"
End Sub
Gruß Tino
Anzeige
Zeilen zählen - COUNTIF
28.04.2010 08:12:00
Erich
Hi Thomas,
probiers mal damit:

Option Explicit
Sub ZaehleZeilen()
Dim lngZ As Long, lngAnz As Long, strZeichen1 As String
strZeichen1 = "a"
With Sheets(1)
For lngZ = 25 To 5002
lngAnz = lngAnz - (WorksheetFunction.CountIf(.Range( _
.Cells(lngZ, 47), .Cells(lngZ, 156)), "*" & strZeichen1 & "*") > 0)
Next lngZ
End With
End Sub
Noch eine Bemerkung:
Sheets(1).range(Cells(Z_Row, 47), Cells(Z_Row, 156))
ist dann nicht sinnvoll (und fehlerhaft), wenn Sheets(1) nicht das aktive Blatt ist oder das Blatt, zu dem der Code gehört.
Damit das sicher ist, müsste man schreiben:
Sheets(1).range(Sheets(1).Cells(Z_Row, 47), Sheets(1).Cells(Z_Row, 156))
oder das kürzer mit "With" und ausreichend vielen Punkten erledigen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
... und das wär´ mein Vorschlag
28.04.2010 08:18:02
xr8k2
Hallo Thomas,
Function ZeichenZeilenZählen(SuchZeichen As String) As Long
Dim i As Long
For i = 25 To 10000
If Not Rows(i).Find(what:=SuchZeichen, LookIn:=xlValues, lookat:=xlPart) Is Nothing Then _
ZeichenZeilenZählen = ZeichenZeilenZählen + 1
Next i
End Function
Könnte man auch als UDF in einer Excelzelle einsetzen.
Gruß,
xr8k2
AW: Zeilen zählen
28.04.2010 08:56:26
Dirk
hallo!
Versuch mal so:
meinString="Was auch immer..." 'hier den suchwert festlegen
With Worksheets(1).Range("a1:a500") 'hier Deinen Bereich festlegen
Set c = .Find(what:=MeinString, lookin:=xlValues, searchorder:=xlrows)
If Not c Is Nothing Then
firstAddress = c.Address
Do
'c.value= "Was ich will" <- hier festlegen, was mit dem gefundenen wert gemacht werden soll
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Lass' mal hoeren, ob so ok.
Gruss
Dirk aus Dubai
Anzeige
AW: Zeilen zählen
28.04.2010 09:45:34
Thomas
Hallo zusammen,
vielen Dank für Vorschläge. Ich habe den ersten Vorschlag von Tino in abgespeckter Form
übenommen und es funkioniert:
For Z_Row = 25 To 10000
Set Bereich = Sheets(1).Range(Cells(Z_Row, 47), Cells(Z_Row, 156))
If Application.WorksheetFunction.CountIf(Bereich, Zeichen1) > 0 Then
Aend_Text = Aend_Text + 1
End If
Next Z_Row
Etwas irritiert mich, als ich um ca. 8:26 die Rückmeldung an Tino schrieb, hatte ich die restlichen
Vorschläge nicht angezeigt bekommen - erst jetzt.
Nochmals vielen Dank!
Grüße
Thomas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige