472 Aufrufe
Gefragt in Textverarbeitung von
Hallo zusammen,
ich habe eine Tabelle mit einer Spalte in der Zaheln und Buchstabenkombinationen durch Kommas getrennt sind.

z.B.
Spalte A
Zeile1: 1xCAM2, 2xCAM1, 3xCAM3
Zeile2: 5xCAM1, 4xCAM2, 2xCAM3

2xCAM2 zeigt an, das "CAM2" vom Makro 2 mal gezählt werden soll.
Jetzt möchte ich gerne Anzahl für: CAM1, CAM2, CAM3 zählen lassen.

Ziel:
Es erscheint eine Abfrage. Ich gebe ein: CAM2
Makro zeigt an: 5 mal gefunden

Nämlich:
In Zeile 1: 1 mal
In Zeile 2: 4 mal

Kann mir da Jemand helfen???
Vielen Dank für die Unterstützung jetzt schon.

4 Antworten

0 Punkte
Beantwortet von
Hi,

probiers mal so

Sub CAMZaehlen()

Dim a As Long, b As Long, c As Long, cam As String
Dim Spalten As Range, Pruefen As Range, cl As Range

Set Spalten = Range("A:A") 'die zu durchsuchenden Spalten von:bis

cam = InputBox("Welches CAM wollen Sie zählen?", "CAM zählen", "CAM1")

Set Pruefen = Range(Spalten.Cells(1), Spalten.Columns(Spalten.Columns.Count).Rows(Rows.Count).End(xlUp))

For Each cl In Pruefen
a = InStr(1, cl.Value, cam)
b = InStrRev(cl.Value, ",", a)
If b = 0 Then b = 1 Else b = b + 2
c = c + Val(Mid(cl.Value, b, a - b - 1))
Next cl

MsgBox cam & " wurde " & c & "x gefunden"

End Sub
0 Punkte
Beantwortet von
Eine Wennbedingung hatte noch gefehlt.

Sub CAMZaehlen()

Dim a As Long, b As Long, c As Long, cam As String
Dim Spalten As Range, Pruefen As Range, cl As Range

Set Spalten = Range("A:A") 'die zu durchsuchenden Spalten von:bis

cam = InputBox("Welches CAM wollen Sie zählen?", "CAM zählen", "CAM1")

Set Pruefen = Range(Spalten.Cells(1), Spalten.Columns(Spalten.Columns.Count).Rows(Rows.Count).End(xlUp))

For Each cl In Pruefen
a = InStr(1, cl.Value, cam)
If a > 0 Then
b = InStrRev(cl.Value, ",", a)
If b = 0 Then b = 1 Else b = b + 2
c = c + Val(Mid(cl.Value, b, a - b - 1))
End If
Next cl

MsgBox cam & " wurde " & c & "x gefunden"

End Sub
0 Punkte
Beantwortet von
Ersetze noch die Zeile
Set Pruefen = Range(Spalten.Cells(1), Spalten.Columns(Spalten.Columns.Count).Rows(Rows.Count).End(xlUp))
durch
Set Pruefen = Range(Spalten.Cells(1), Spalten.SpecialCells(xlLastCell))
falls mehrere Spalten mit unterschiedlicher Anzahl Zeilenvorhanden sind.
0 Punkte
Beantwortet von
Hallo xlKing,
prima!!! Das Makro funktioniert!!!
Besten Dank, das ist einfach klasse!!!
Viele Grüße
Gill
...