Thema Datum  Von Nutzer Rating
Antwort
22.07.2019 09:27:16 Frank H.
NotSolved
22.07.2019 09:41:09 Torsten
NotSolved
22.07.2019 09:54:22 Gast7392
NotSolved
22.07.2019 10:01:25 Gast14544
NotSolved
22.07.2019 10:02:00 Torsten
NotSolved
22.07.2019 10:21:32 Frank. H
NotSolved
Rot KombinationenOhneZuruecklegenArray
22.07.2019 10:34:38 Frank H.
NotSolved

Ansicht des Beitrags:
Von:
Frank H.
Datum:
22.07.2019 10:34:38
Views:
450
Rating: Antwort:
  Ja
Thema:
KombinationenOhneZuruecklegenArray

Hallo zusammen, ich möchte mit diesem Array gerne alle Kombinationen (z.B. 5 aus 50) erzeugen und in Excel anzeigen lassen. Die Anzahl der Kombinationen (2118760 Stück) überschreitet jedoch die Zeilen eines Sheets und es kommt eine Fehlermeldung. Wie muss der Code umgeschrieben werden, damit wenn ein sheet zeilenmäßig (1048576 Zeilen) ausgereizt ist in einem neuen sheet weiter gemacht wird? Grundsätzlich funktioniert der Code, wenn zum Beispiel weniger Kombinationen ( z.B. 3 aus 50)erzeugt werden sollen. Die Einstellung wird unter Sub TestIt() KombinationenOhneZuruecklegenArray 50, 3 gemacht. Für eure Hilfe wäre ich euch sehr dankbar.

Gruß Frank


Sub KombinationenOhneZuruecklegenArray(ByVal n As Integer, ByVal k As Integer)
   Dim ar As Variant, i As Long, j As Integer, lngSize As Long
    
   lngSize = WorksheetFunction.Combin(n, k)
   ReDim ar(1 To lngSize, 1 To k)
   For j = 1 To k
      ar(1, j) = j ' j - 1  um ab 0 zu zählen
   Next
    
   For i = 2 To lngSize
      For j = 1 To k
         ar(i, j) = ar(i - 1, j)
      Next
      arInc ar, i, n, k, k  ' arInc ar, i, n - 1, k, k ' um ab 0 zu zählen
   Next
   Range("A1").Resize(lngSize, k) = ar
End Sub

Sub arInc(ByRef ar As Variant, ByVal i As Long, ByVal n As Integer, ByVal k As Integer, ByVal intSpalte As Integer)
   Dim intVal As Integer, j As Integer
    
   intVal = ar(i, intSpalte)
   If intVal < n - (k - intSpalte) Then
      For j = intSpalte To k
         intVal = intVal + 1
         ar(i, j) = intVal
      Next
   Else
      arInc ar, i, n, k, intSpalte - 1
   End If
End Sub

Sub TestIt()
   KombinationenOhneZuruecklegenArray 50, 5
   
End Sub


 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
22.07.2019 09:27:16 Frank H.
NotSolved
22.07.2019 09:41:09 Torsten
NotSolved
22.07.2019 09:54:22 Gast7392
NotSolved
22.07.2019 10:01:25 Gast14544
NotSolved
22.07.2019 10:02:00 Torsten
NotSolved
22.07.2019 10:21:32 Frank. H
NotSolved
Rot KombinationenOhneZuruecklegenArray
22.07.2019 10:34:38 Frank H.
NotSolved