Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1036to1040
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

Anzahl eines Kriteriums in Zahl

Anzahl eines Kriteriums in Zahl
09.01.2009 08:36:45
Fm
Hallo,
folgendes Problem habe ich. Ich habe eine kleine Funktion gebastelt die nichts anderes macht 8amchen soll) als zu schauen wie oft eine bestimmte Zahl (z.b. 1) in einer Zahl vorkommt.
Das funktioniert wenn ich (siehe Bsp-Code) in der Funktion, die Variable Zeichen so definiere (z.b. Zeichen = "1"). Dann wird in diesem Beispiel korrekt 3 mal die 1 angezeigt. Wenn ich aber die Anführungszeichen weglasse und Zeichen wirklich eine Zahl ist dann wird immer 0 angezeigt am Ende.
Weiss jemand wo mein Fehler liegt?
Danke im Voraus
Florian

Sub test()
Dim X
Dim zeichen
zahl = 1112324
X = AnzZeichen(zahl)
MsgBox X
End Sub



Function AnzZeichen(ByVal zeichen As Variant) As Boolean
Dim j As Integer
For zeichen = 1 To 9 Step 1
For j = 1 To Len(zahl)
If Mid(zahl, j, 1) = zeichen Then
count = count + 1
End If
Next j
Next zeichen
End Function


10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzahl eines Kriteriums in Zahl
09.01.2009 09:14:09
Hajo_Zi
Hallo Florian,

Option Explicit
Sub test()
Dim Zahl As String
Zahl = 1112324
MsgBox AnzZeichen(1, Zahl)
End Sub
Function AnzZeichen(ByVal zeichen As String, Zahl As String) As Long
Dim j As Integer
For j = 1 To Len(Zahl)
If Mid(Zahl, j, 1) = zeichen Then
AnzZeichen = AnzZeichen + 1
End If
Next j
End Function



AW: Anzahl eines Kriteriums in Zahl
09.01.2009 09:39:00
Fm
Hallo,
danke schonmal für die vielen Antworten. Eines ist mir nur aufgefallen:
die Zahl hat wohl immer eine verschiedene Anzahl an Ziffern. Und die Zahl ist also Long definiert, da sie in einer anderen Sub davor ausgerechnet wird. Wie kann ich die Anzahl der Ziffern der Zahl bestimmen wenn es KEIN string ist?
Danke und Gruss
Flo
Anzeige
AW: Anzahl eines Kriteriums in Zahl
09.01.2009 09:41:00
Hajo_Zi
Hallo Florian,
warum dies, mache Dir das Leben doch nicht komplizierter. Jede Zahl bekommst Du in ein String umgewandelt.
Gruß Hajo
AW: Anzahl eines Kriteriums in Zahl
09.01.2009 09:48:00
yusuf
Hi,

Sub test()
Dim X Double
X = AnzZeichen(5, 255255)
MsgBox X
End Sub



Function AnzZeichen(ByVal zeichen As Double, ByVal zahl As Double) As Double
Dim j As Integer
For j = 1 To Len(CStr(zahl))
If Mid(zahl, j, 1) = zeichen Then
Count = Count + 1
End If
Next j
AnzZeichen = Count
End Function


Anzeige
AW: Anzahl eines Kriteriums in Zahl
09.01.2009 09:53:00
Fm
ok verstehe. Vielen Dank an alle. Hat funktioniert !
AW: Anzahl eines Kriteriums in Zahl
09.01.2009 10:20:00
Luschi
Hallo Hajo,
Dein Vorschlag funktioniert zwar, aber diese Art von Vba-Programmierung lehne ich ab.
Wie kann man eine Variable als 'String' definieren und dann einen Long-Wert zuweisen.
Im 2. Fall übergibst Du einer Funktion den Long-Wert, obwohl die Funktion einen String-Wert erwartet.
Sicher macht hier VB/VBA jedesmal eine Typkonvertierung (im 2. Fall durch Zusatz von ByVal),
aber hier sollte der Programmersteller genauer arbeiten und sich überlegen was er tatsächlich
erreichen will.
Auch das weglassen von Variablendefinitionen ('count' wie im Beispiel von yusuf) ist eine Unsitte,
die immer mehr um sich greift.
Mit der folgenden Aussage: 'warum dies, mache Dir das Leben doch nicht komplizierter' beschönigst Du nur Deinen unsauberen Programmierstil; ob Du Dir das als 'MVP für Excel' überhaupt leisten kannst?
Gerade die Neueinsteiger erwarten von Dir professionelle Hilfe und kein Wischiwaschi...
Gruß von Luschi
aus klein-Paris
PS: hier meine Lösung

Sub test()
Dim Zahl As Long, z As Integer
Zahl = 1112324
z = 1
MsgBox AnzZeichen(CStr(1), CStr(Zahl))
End Sub
Function AnzZeichen(gesZ As String, uebgebZK As String) As Integer
Dim j As Integer, i As Integer
i = 0
For j = 1 To Len(uebgebZK)
If Mid(uebgebZK, j, 1) = gesZ Then
i = i + 1
End If
Next j
AnzZeichen = i
End Function


Anzeige
AW: Anzahl eines Kriteriums in Zahl
09.01.2009 11:10:31
Hajo_Zi
Hallo Luschi,
ich weise keinem Strng eine Long Wert zu.
Gruß Hajo
AW: Anzahl eines Kriteriums in Zahl
11.01.2009 18:11:11
Luschi
Hallo Hajo,
und was ist das:
'Dein Original-Code
Dim Zahl As String
Zahl = 1112324

Gruß von Luschi
aus klein -Paris
AW: Anzahl eines Kriteriums in Zahl
09.01.2009 09:14:46
yusuf
Hi,
ist es das was du gesucht hast?

Sub test()
Dim X
Dim zeichen As String
Dim zahl As String
zahl = 22525
X = AnzZeichen(5, zahl)
MsgBox X
End Sub



Function AnzZeichen(ByVal zeichen As String, ByVal zahl As String) As Integer
Dim j As Integer
For j = 1 To Len(zahl)
If Mid(zahl, j, 1) = zeichen Then
Count = Count + 1
End If
Next j
AnzZeichen = Count
End Function


Gruß
Yusuf

Anzeige
AW: Anzahl eines Kriteriums in Zahl
09.01.2009 09:15:50
Ralf
Hallo Florian,
mir fällt auf, dass Du in der Sub test eine Zeile "Dim zeichen"stehen hast. Die muss weg.
Dafür musst Du beim Aufruf Deiner Function AnzZeichen 2 Argumente übergeben, nämlich
zahl und zeichen. Also auch die vorherige Zuweisung (hier: zahl = 1112324) entfältt.
Es müsste also z. B. heißen: X = AnzZeichen(1112324, 1) und die Kopfzeile Deiner Function
würde dann heißen:
Function AnzZeichen(zahl as Variant, zeichen As Variant) As integer
(beachte: das "as boolean" am Ende ist auch falsch !!).
Wenn zahl auch mal Text sein sollte, würde ich es auch anders nennen.
Die Sache mit den Anführungszeichen erklärt sich wohl daraus, dass Du ja mit einer Text-Funktion
(Mid) arbeitest und VBA bei einem Vergleich dann wohl auch aus Ziffern intern einen Text macht.
Ich hoffe, dass ich Dir helfen konnte, lasse aber die Frage trotzdem offen.
Grüße
Ralf
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige