vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Kombinationen als CSV-Sätze 
Autor: Manfred X
Datum: 24.02.15 07:47

Hallo!

Zu Copy'n Paste:
Wenn Du Code aus einem Forum ausführst, bist Du selbst für etwaige negative Folgen verantwortlich.
Die Software zur Verwaltung von Internet-Foren ist oft nicht besonders sicher.
Es könnten sich eventuell z.B. Dritte einhacken und Änderungen an Code-Beiträgen vornehmen,
die bei Ausführung zu Datenverlusten o.ä. führen.
Es ist sehr wichtig, den heruntergeladenen Code sorgfältig zu überprüfen.

Zur Ausgabe-Datei:
Ich hatte zwei mal gefragt, zu welchem Zweck Du diese Daten benötigst und wie sie weiter verwendet
werden sollen. Das hast Du ignoriert. Dann sind auch keine gezielten Hinweise möglich.
Ich hatte davor gewarnt, daß Millionen von Datensätzen entstehen würden.
Um die Datenmenge zu begrenzen, habe ich die Gruppen weg gelassen. (Und weil mir Deine Anforderung
nicht eingeleuchtet hat.)
Übrigens: Die Ausgabe-Datei wird in meinem Beispiel mit "Append" geöffnet - eventuell benötigst
Du die Option "OutPut".

Zur Sortierung:
Bei der Ausgabe von unterschiedlichen Kombinationen (2-4) ist das Sortieren nach Häufigkeit nicht
mehr eindeutig durchführbar: innerhalb der 2er, 3er, 4er Kombis oder über alle Sätze ??
Man verwendet den Quicksort-Algorithmus, um solche Datenmengen zu bewältigen.

Hier eine weitere modifizierte Fassung der Routine NueberK_Output.
Sie erstellt die von Dir definierten Datensätze (unsortiert) als CSV-Datei: Gruppe;Kombination;Häufigkeit
Diese Datei wird - grob geschätzt- bezogen auf Deinen Input zwischen 10 und 100 Millionen Datensätzen umfassen.
Blackbox kann Dir zeigen, wie man so eine CSV effizient sortiert und abfragt per OLEDB-Treiber.

    Function NueberK_Output(values() As Integer, k%, kanal_out As Integer) As _
      Boolean
 
        'Liste aller Kombinationen der Werte in Values
 
        'values: null-basiertes Array mit Werteliste n = ubound(values)+1)
        'k: Anzahl der Werte in einer Kombination
        'Ausgabe in den geöffneten Ausgabekanal: kanal_out
 
        On Error GoTo fehler
        NueberK_Output = False
 
        Dim indices%()
        ReDim indices%(k - 1)
        indices(0) = -1
 
        Dim anz&, kombistr$, groups() As Integer
        anz = CLng(NueberK(UBound(values) + 1, k))
        If anz = -1 Then Exit Function
 
        ReDim kombi(k - 1) As Integer
        Dim i&, j%, l%, freq&
        For i = 1 To anz
            NextIndex indices, UBound(values) + 1
 
            'aktuelle Kombination aus Indices ermitteln
            'und AusgabeString erstellen
            kombistr = ""
            For j = 0 To k - 1
               kombi(j) = values(indices(j))
               kombistr = kombistr & CStr(kombi(j))
               If j < k - 1 Then kombistr = kombistr & "-"
            Next j
 
            ReDim groups(10)
            'Häufigkeit dieser Kombi in den Gruppen zählen
            freq = 0
            'Schleife über Werteliste in Gruppen
            For j = 1 To UBound(kombis)
                If ContainsAll(kombis(j).V1, kombi) Then
                   freq = freq + 1
                   If freq > UBound(groups) Then
                      ReDim Preserve groups(UBound(groups) + 10)
                   End If
                   'Gruppe, in der die Kombi auftritt, notieren
                   groups(freq) = kombis(j).Group
                End If
            Next j
 
            If freq > 0 Then
               'jeweils Gruppe, Kombination und Häufigkeit ausgeben
               'aufgebaut als Zeile einer CSV-Datei (Strichpunkte trennen 3 
               ' Felder)
               For j = 1 To freq
                   Print #kanal_out, CStr(groups(j)) & ";" & kombistr & ";" & _
                     CStr(freq)
               Next j
            End If
        Next i
 
        NueberK_Output = True
        Exit Function
 
fehler:
 
    End Function


Beitrag wurde zuletzt am 24.02.15 um 07:50:15 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
2er-Kombinationen bilden VBA4.133JBL16.02.15 19:11
Re: 2er-Kombinationen bilden VBA (1.Teil)2.835Manfred X17.02.15 06:33
Re: 2er-Kombinationen bilden VBA (1.Teil)3.075JBL21.02.15 13:35
Re: 2er-Kombinationen bilden VBA (1.Teil)2.822Manfred X21.02.15 14:43
Re: 2er-Kombinationen bilden VBA (1.Teil)2.780JBL22.02.15 08:17
Re: 2er-Kombinationen bilden VBA (1.Teil)2.862Manfred X22.02.15 08:30
Re: 2er-Kombinationen bilden VBA (1.Teil)2.877JBL22.02.15 10:18
Liste der Kombinationen zu einem Wertearray3.053Manfred X23.02.15 06:37
Re: Liste der Kombinationen zu einem Wertearray2.986JBL23.02.15 09:53
Re: Liste der Kombinationen zu einem Wertearray2.886Manfred X23.02.15 10:09
Re: Liste der Kombinationen zu einem Wertearray2.881JBL23.02.15 12:06
Re: Liste der Kombinationen zu einem Wertearray2.784Manfred X23.02.15 12:21
Re: Liste der Kombinationen zu einem Wertearray3.035JBL23.02.15 12:46
Re: Liste der Kombinationen zu einem Wertearray2.892Manfred X23.02.15 12:51
Re: Liste der Kombinationen zu einem Wertearray2.998JBL23.02.15 13:13
Re: Liste der Kombinationen zu einem Wertearray2.864Manfred X23.02.15 13:30
Re: Liste der Kombinationen zu einem Wertearray2.923JBL23.02.15 14:13
Re: Liste der Kombinationen zu einem Wertearray2.734Manfred X23.02.15 14:21
Re: Liste der Kombinationen zu einem Wertearray2.851JBL23.02.15 16:32
Meinen Beitrag vielleicht überlesen2.810Blackbox23.02.15 21:26
Re: Meinen Beitrag vielleicht überlesen2.858JBL23.02.15 21:58
Re: Meinen Beitrag vielleicht überlesen2.793Franki24.02.15 07:14
Kombinationen als CSV-Sätze2.825Manfred X24.02.15 07:47
Re: Kombinationen als CSV-Sätze2.818JBL24.02.15 07:57
Re: Kombinationen als CSV-Sätze2.886Manfred X24.02.15 08:14
Re: 2er-Kombinationen bilden VBA (2.Teil)3.001Manfred X17.02.15 06:35
Re: 2er-Kombinationen bilden VBA2.775JBL17.02.15 07:22
Re: 2er-Kombinationen bilden VBA2.843Manfred X17.02.15 07:26
Re: 2er-Kombinationen bilden VBA2.863JBL17.02.15 07:45
Re: 2er-Kombinationen bilden VBA3.105Manfred X17.02.15 07:53
Re: 2er-Kombinationen bilden VBA2.791JBL17.02.15 08:04
Re: 2er-Kombinationen bilden VBA2.927Manfred X17.02.15 08:12
Re: 2er-Kombinationen bilden VBA2.847JBL19.02.15 07:20
Re: 2er-Kombinationen bilden VBA2.804Manfred X19.02.15 11:39
Re: 2er-Kombinationen bilden VBA2.922JBL19.02.15 11:56
Re: 2er-Kombinationen bilden VBA2.789Manfred X19.02.15 12:11
Re: 2er-Kombinationen bilden VBA2.804JBL19.02.15 12:45
Re: 2er-Kombinationen bilden VBA2.842Manfred X19.02.15 13:03
Re: 2er-Kombinationen bilden VBA2.886JBL19.02.15 13:31
Re: 2er-Kombinationen bilden VBA2.793Manfred X19.02.15 13:47
Re: 2er-Kombinationen bilden VBA2.807JBL19.02.15 14:38
Re: 2er-Kombinationen bilden VBA2.851Franki20.02.15 09:00
Re: 2er-Kombinationen bilden VBA2.867JBL20.02.15 09:31
Einspruch, Text Dateien sind sehr schnell3.074Blackbox19.02.15 18:14
CSV-Dateien sind meist keine echte Alternative2.971Manfred X19.02.15 18:25

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel