Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
748to752
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
748to752
748to752
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Zählenwenn &

VBA Zählenwenn &
25.03.2006 02:42:26
Timonski
Servus
wollte gern per VBA was schreiben.. und zwar soll er mir aus einer Zelle mit dem Inhalt X1234512345 sagen wieviel 1, wieviel 2 ... wieviel 9 und wieviel 0 drin sind...
jeden wert natürlich in eine eigen spalte.. klar...
z.b. Spalte 1 X123450123
Spalte 2 Überschrift 1 = 2
Spalte 3 Überschrift 2 = 2
.
.
.
Spalte X Überschrift 9 = 0
Spalte X Überschrift 0 = 1
geht so was und wenn ja wie...
danke

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Zählenwenn &
25.03.2006 04:13:26
Mustafa
Hallo Timonski,
Versuchs mal so:

Sub teilen()
Dim inti As Byte
Dim Wert As Byte
Dim Zelle As Range
Range("B2:K2").ClearContents
Set Zelle = Range("A1")
For inti = 1 To Len(Zelle)
If IsNumeric(Mid(Zelle, inti, 1)) = True Then
Wert = Mid(Zelle, inti, 1)
Select Case Wert
Case 1
Cells(2, 2).Value = Cells(2, 2).Value + 1
Case 2
Cells(2, 3).Value = Cells(2, 3).Value + 1
Case 3
Cells(2, 4).Value = Cells(2, 4).Value + 1
Case 4
Cells(2, 5).Value = Cells(2, 5).Value + 1
Case 5
Cells(2, 6).Value = Cells(2, 6).Value + 1
Case 6
Cells(2, 7).Value = Cells(2, 7).Value + 1
Case 7
Cells(2, 8).Value = Cells(2, 8).Value + 1
Case 8
Cells(2, 9).Value = Cells(2, 9).Value + 1
Case 9
Cells(2, 10).Value = Cells(2, 10).Value + 1
Case 0
Cells(2, 11).Value = Cells(2, 11).Value + 1
End Select
End If
Next
End Sub

Rückmeldung wäre nett.
Viele Grüße aus Köln.
Anzeige
'ne udFunktion wär' eleganter! - Gruß owT
25.03.2006 04:37:04
Luc:-?
:-?
Das kannst du ja übernehmen ;-)
25.03.2006 04:41:40
Mustafa
Bin selbst noch am lernen und habe den Code mit hilfe des ersten Threads von Timonski erstellt.
Eine udFunktion verlangt schon zu viel von mir ab.
Viele Grüße aus Köln.
AW: Das kannst du ja übernehmen ;-)
25.03.2006 12:12:45
Reinhard
Hi Mustafa,
Option Explicit
Sub teilen()
Dim inti As Byte, Zelle As Range, Wert As Integer
Range("B2:K2").ClearContents
Set Zelle = Range("A1")
For inti = 1 To Len(Zelle)
Wert = Mid(Zelle, inti, 1)
If IsNumeric(Wert) Then Cells(2, 1 + CInt(Wert) - 10 * (Wert = "0")).Value = Cells(2, 1 + CInt(Wert) - 10 * (Wert = "0")).Value + 1
Next inti
End Sub
Function zaehl(Zelle As Range, Ziffer As String) As Integer
Dim inti As Byte, Wert As String
For inti = 1 To Len(Zelle)
Wert = Mid(Zelle, inti, 1)
If Ziffer = Mid(Zelle, inti, 1) Then zaehl = zaehl + 1
Next inti
End Function

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: Das kannst du ja übernehmen ;-)
26.03.2006 23:02:17
Mustafa
Hallo Reinhard,
danke für die Funktion.
Könntest du mir die Zeile noch kurz erklären.
If IsNumeric(Wert) Then Cells(2, 1 + CInt(Wert) - 10 * (Wert = "0")).Value = Cells(2, 1 + CInt(Wert) - 10 * (Wert = "0")).Value + 1
Ausserdem ist in deiner Funktion eine überflüssige Zeile.

Function zaehl(Zelle As Range, Ziffer As String) As Integer
Dim inti As Byte, Wert As String
For inti = 1 To Len(Zelle)
Wert = Mid(Zelle, inti, 1)
If Ziffer = Mid(Zelle, inti, 1) Then zaehl = zaehl + 1
Next inti
End Function

Geht auch ohne die Zeile :
Wert = Mid(Zelle, inti, 1)
Oder wenn mit der Zeile dann so:
If Ziffer = Wert Then zaehl = zaehl + 1
Viele Grüße aus Köln.
Anzeige
AW: Das kannst du ja übernehmen ;-)
26.03.2006 23:21:04
Reinhard
Hi Mustafa,
mach mal
msgbox (1=1)*10
und
msgbox (1=123)*10
dann siehst du warum der Ausdruck
1 + CInt(Wert) - 10 * (Wert = "0")
bei Wert=0 11 ergibt
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige