O código a seguir funciona, mas tem a possibilidade de retornar 0 para um ou mais dos valores, dependendo da rapidez com que ele atinge o total necessário (usando seu exemplo, se o primeiro número aleatório for 36, os outros quatro será 0). o bom pessoal do Stack OverFlow pode ser melhor em escrever códigos que evitam isso do que eu.
Código Gerador Aleatório Central
Sub RandomNumbers(ByVal ReqNum As Integer, ByVal ReqSum As Integer, Output As Collection)
Dim NewNum As Integer, SumNum As Integer
Dim I As Integer
SumNum = 0
Do Until (SumNum = ReqSum) Or (Output.Count = (ReqNum - 1))
Randomize Timer
NewNum = Int((ReqSum - SumNum) * Rnd + 1)
SumNum = SumNum + NewNum
Output.Add NewNum
Loop
If Output.Count < ReqNum Then
If SumNum < ReqSum Then
Output.Add (ReqSum - SumNum)
Else
NewNum = Output.Count
For I = (NewNum + 1) To ReqNum
Output.Add 0
Next I
End If
End If
End Sub
você pode chamar este Sub usando código com algo ao longo das linhas deste. Este código simplesmente coloca os valores aleatórios na coluna A.
Dim Numbers As New Collection, NumNum As Integer, SumofNum As Integer
Range("A:A").ClearContents
NumNum = 5
SumofNum = 36
Call RandomNumbers(NumNum, SumofNum, Numbers)
For SumofNum = 1 To Numbers.Count
NumNum = Numbers(SumofNum)
Cells(SumofNum, 1).Value = NumNum
Next SumofNum