Re: Zeilen mit Kombinationen vergleichen ??? | |
|
Autor: JBL |
Datum: 07.04.14 10:34 |
|
hallo Manfred,
ich habe nun alles fertig eingearbeitet.
Läuft so wie es soll - großen lieben Dank an dich nochmals
Das Modul - was du geschrieben hast arbeitet ja derzeit wie folgt:
"Wie oft kommt welche Zahl in einem gewissen Zeitraum vor"
Könntest du bitte eine kleine Veränderung/Erweiterung vornehmen?
"Wie oft kommt welche Zahl in einem gewissen Zeitraum vor" = Soll so bleiben
"In welchen Abständen folgt die Zahl nochmals"
Beispiel:
Derzeit:
1 1
2 0
3 1
4 3
Die Zahl 4 kommt 3 mal vor
Aber in welchen Abständen?
Kommt sie z.B. in 3000 das erste mal
Kommt sie z.B. in 3005 das zweite mal
dann ist der Abstand 5 (3005-3000)
Kommt sie z.B. in 3012 das dritte mal
dann ist der Abstand 7 (3012-3005)
Ergebnis/=output Erweiterung: So eventuell
Zahl 4 = Abstand 5 - 1x
Zahl 4 = Abstand 7 - 1x
usw. mit allen Zahlen natürlich
Public Sub NumberFrequency _
(ByVal Filename, ByVal start As Integer, ByVal ende As Integer)
Dim ik As Integer, ak As Integer 'Kanäle
Dim line As String, fields() As String 'Dateizeile
Dim dateval As Integer 'Datum in Zeile
Dim i As Integer, k As Integer 'Loopings
Dim z As Integer ' Ziehungszähler
'Zeit-Intervall: Grenzen sicher stellen
If ende < start Then
i = start
start = ende
ende = i
End If
'Zählerregister
Dim frequency(49) as Integer
ik = FreeFile
Open Filename For Input As #ik
While Not EOF(ik)
Line Input #ik, line
'(numerische) Felder in einer Zeile
fields = Split(line, " ")
'Check
If Not UBound(fields) = 7 Then Stop
'Datumsfeld wandeln
dateval = CInt(fields(0))
'Zeitfilter setzen
If dateval >= start And dateval <= ende Then
'Häufigkeitszähler füllen
For i = 1 To 7
frequency(CInt(fields(i))) = frequency(CInt(fields(i))) + 1
Next i
z = z + 1
End If
Wend
Close #ik
ak = FreeFile
Open "C:\daten\numberfrequencies.txt" For Output As #ik
Print #ak, Filename
Print #ak, "Start: "; start
Print #ak, "Ende: "; ende
Print #ak, "Ziehungen: "; z
For i = 1 To 49
Print #ak, i, frequency(i)
Next i
Close #ak
End Sub
Aufruf der Routine:
Call NumberFrequency("C:\daten\sa-ziehungen.txt", 3050, 2999) Verständlich erklärt?
sa-ziehungen.txt
Vorab nochmals danke
LG
Angelina |
|