
Funzionante:
Sub Sheet_Fill_Array()
Dim myarray As Variant
dim i as long
myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
for i = 0 to 9
debug.print myarray(i)
next i
End Sub
Errata:
Option Explicit
Sub Sheet_Fill_Array()
Dim myarray As Variant
Dim i As Long
myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
For i = 1 To 10
Debug.Print myarray(i)
Next i
End Sub
Ri-Funzionante:
Option Explicit
Option Base 1
Sub Sheet_Fill_Array()
Dim myarray As Variant
Dim i As Long
myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
For i = 1 To 10
Debug.Print myarray(i)
Next i
End Sub |
Sub A() Dim myarray(0 To 9) For Y = 0 To 9 myarray(Y) = Cells(Y + 1, 2) 'Somma = WorksheetFunction.Sum(myarray) 'If Somma = "il richiesto" Then 'Cellaxy = Somma 'End If Next Y End Sub Sub B() Dim myarray(1 To 10, 1 To 2) For Y = 1 To 2 For X = 1 To 10 myarray(X, Y) = Cells(X, Y) 'Somma = WorksheetFunction.Sum(myarray) 'MsgBox (Somma) 'If Somma = "il richiesto" Then 'Cellaxy = Somma 'End If Next X Next Y End Sub |
Set v = [b1:b10]
somma=Application.Sum(v)
somma=Application.Sum(v.columns(1))
Public Function SommeCombinazioniSemplici(ByVal arrayElementi As Variant, _
ByVal dimensioneGruppo As Integer, _
ByVal sommaTest As Integer) As Collection
Dim sommaTemp As Integer
Dim LC As New Collection
If UBound(arrayElementi) = 0 Then Set SommeCombinazioniSemplici = LC
If dimensioneGruppo = 0 Or dimensioneGruppo > UBound(arrayElementi) Then Set SommeCombinazioniSemplici = LC
Dim aP() As Integer
ReDim aP(dimensioneGruppo - 1)
Dim i As Integer
For i = 0 To UBound(aP)
aP(i) = i
Next i
Dim j As Integer
Dim C As String
Dim cnt As Integer
Do
C = ""
sommaTemp = 0
For i = 0 To UBound(aP)
C = C & "[" & arrayElementi(aP(i)) & "]"
sommaTemp = sommaTemp + arrayElementi(aP(i))
Next i
If sommaTemp = sommaTest Then LC.Add (C)
cnt = 0
For i = UBound(aP) To 0 Step -1
If aP(i) = UBound(arrayElementi) - cnt Then
cnt = cnt + 1
If cnt = UBound(aP) + 1 Then Exit Do
Else
aP(i) = aP(i) + 1
For j = 0 To UBound(aP)
If i < j Then aP(j) = aP(i) + (j - i)
Next
Exit For
End If
Next i
Loop
Set SommeCombinazioniSemplici = LC
End Function
Sub Combinazioni()
Dim N() As Variant
N = Array(5, 1, 23, 7, 10, 2, 8, 15, 20, 4, 30)
Dim sommaDesiderata As Integer
sommaDesiderata = 30
Dim K As Byte
K = 3
Dim Comb As Collection
Set Comb = SommeCombinazioniSemplici(N, K, sommaDesiderata)
'Test
Dim s As String
Dim i As Integer
For i = 1 To Comb.Count
s = s & (Comb(i)) & vbCrLf
Next i
MsgBox s
End Sub
|
Sub Combinazioni()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Columns("E:XFD").ClearContents
URiga = Range("A" & Rows.Count).End(xlUp).Row
C = 5
Dim N() As Variant
N = Array([A1], [A2], [A3], [A4], [A5], [A6], [A7], [A8], [A9], [A10], [A11], [A12], [A13], [A14], [A15], [A16], [A17], [A18], [A19], [A20])
Dim sommaDesiderata As Integer
'sommaDesiderata = InputBox("Digitare la somma da ricercare", , 0)
'If sommaDesiderata = 0 Then Exit Sub
''''''
sommaDesiderata = 30
''''''
Dim Quanti As Integer
Quanti = InputBox("La procedura sarebbe lunga, inserisci un numero di quanti potrebbero essere gli addendi?", , 0)
If Quanti = 0 Then Exit Sub
Dim K As Byte
'For K = 2 To 4
For K = Quanti To Quanti + 1
Dim Comb As Collection
Set Comb = SommeCombinazioniSemplici(N, K, sommaDesiderata)
For i = 1 To Comb.Count
Cells(i, C) = (Comb(i))
Next i
C = C + 1
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox "Ho Terminato"
End Sub |
