2016-06-15 9 views
-5

Hallo Ich möchte n Zufallszahlen in VBA erzeugen, so dass ihre Summe 100 sein muss und sie so platziert werden müssen, dass 7 Zahlen in der ersten Reihe kommen, dann nächste 7 in der zweiten Reihe und so weiter. Ich habe so viele Lösungen im Internet versucht, aber nichts funktioniert für mich. Also kann jeder eine Lösung vorschlagen oder mir einen Link für die Lösung geben.Erzeuge n Zufallszahlen Summiert bis 100 VBA

Vielen Dank im Voraus.

+1

was die nächste Sache war steckt du versuchtest? –

+0

Alles wird für mich funktionieren, ob ich ein Element oder etwas anderes hinzufügen soll, da ich jetzt nirgends bin. Zufällige Zahlen sollten in einem Bereich [1,10] liegen. Ich habe noch nichts versucht, aber ich habe so viele Lösungen im Internet gesehen, aber sie sind nicht wert für mich. –

+7

"Ich habe noch nichts versucht". Sie haben 2737 rep ... Ich will nicht unhöflich sein, aber, IMO sollten Sie besser wissen, als dies zu posten. –

Antwort

3

Sagen wir wollen Zahlen, die zu . In A1 eingeben:

=RANDBETWEEN(1,50) 

und in A2 eingeben:

=IFERROR(RANDBETWEEN(1,100-SUM($A$1:A1)),0) 

Kopie A2 nach unten durch A10:

enter image description here

EDIT # 1:

ein Makro zu verwenden, versuchen:

Sub randomality() 
    Dim ary(1 To 10) As Double, zum As Double 
    Dim i As Long 
    Randomize 
    zum = 0 

    For i = 1 To 10 
     ary(i) = Rnd 
     zum = zum + ary(i) 
    Next i 

    For i = 1 To 10 
     ary(i) = ary(i)/zum 
    Next i 

    With Application.WorksheetFunction 
     For i = 1 To 10 
      Cells(i, "D").Value = Round(100 * ary(i), 0) 
     Next i 
     Cells(10, "D").Value = 100 - .Sum(Range("D1:D9")) 
    End With 
End Sub 

Diese Werte in D1 durch D10

enter image description here

+0

Diese Lösung in Excel ist, aber ich die Lösung in VBA wollen nur so ist es nicht der Fall ist Hilf mir. Sorry ........ –

+1

@AnkitBajpai Siehe meine ** EDIT # 1 ** –

+0

Vielen Dank für Ihre Antwort. Hoffe, das wird meinen Zweck lösen. –

0

Der Code unten wird tun, was Sie gefragt haben, aber Sie haben mehr Fragen, die Sie überprüfen müssen: -

Public Sub Sample() 
Dim AryNumbers() As Long 
Dim LngCounter  As Long 
ReDim AryNumbers(0) 

Randomize 

Do Until LngCounter = 100 
    AryNumbers(UBound(AryNumbers, 1)) = Int(10 * Rnd + 1) 
    If (LngCounter + AryNumbers(UBound(AryNumbers, 1))) > 100 Then 
     AryNumbers(UBound(AryNumbers, 1)) = 100 - LngCounter 
    Else 
     LngCounter = LngCounter + AryNumbers(UBound(AryNumbers, 1)) 
     ReDim Preserve AryNumbers(UBound(AryNumbers, 1) + 1) 
    End If 
Loop 

End Sub 
  • Sie nicht angeben, wo die Zahlen gespeichert oder wenn die werden sollen Um ganze Zahlen zu sein, habe ich sie in ganzen Zahlen in einem Array bereitgestellt, um die Frage zu beantworten.
  • Sie müssen sie überlegen, die zufällig die Zahl ist, wenn Sie im Internet sehen Sie wissen, dies ist eine schwierige Frage
  • ich die zusätzliche Anforderung in den Kommentaren geehrt von
zwischen 1 und 10 seinem
+0

Könnten Sie diese Antwort bitte Kommentar Ankit –

+0

als auch für Antwort, die Sie so sehr danken, aber ich denke, die durch @ gegebene Antwort garys Schüler viel besser ist –

Verwandte Themen