我想做什么:我有一个数据列表,我想知道哪些值加起来特定的总和[即。 1.61],我想知道所有的组合[即。我不知道有多少数字需要加起来],应该以某种方式指出anwsers
我做了什么:我将数据相乘,将其放入三个数组并遍历每个元素;然后检查之前是否出现了溶液,如果没有在细胞中指示组合
Sub po_mojemu()
Dim macierz1(1 To 30)
Dim macierz2(1 To 30)
Dim macierz3(1 To 30)
Dim ostatnia_dane As Long
Dim ostatnia As Long
ostatnia_dane = Range("b" & Rows.Count).End(xlUp).Row
For i = 1 To ostatnia_dane
macierz1(i) = Cells(i, 2).Value
macierz2(i) = Cells(i, 2).Value
macierz3(i) = Cells(i, 2).Value
Next i
For Each element1 In macierz1
For Each element2 In macierz2
For Each element3 In macierz3
If element1 + element2 + element3 = 1.61 Then
Set c = Range("f:f").Find(What:=element1 & " : " & element2 & " : " & element3)
If c Is Nothing Then
ostatnia = Range("f" & Rows.Count).End(xlUp).Row + 1
Cells(ostatnia, 6) = element1 & " : " & element2 & " : " & element3
End If
End If
Next element3
Next element2
Next element1
End Sub
问题是什么:它没有效果,只看某种情况[即。我知道将有30行数据,我需要3个数字组成总和]
我将非常感谢能够使此代码更加灵活的任何帮助
答案 0 :(得分:0)
所以我会回答我自己的问题,但不是完全的,但它仍然没什么好处[也许有人会发现它有用]
Sub ostateczna(suma As Double)
Dim macierz()
Dim ostatnia_dane As Double
Dim ostatnia As Double
ostatnia_dane = Range("b" & Rows.Count).End(xlUp).Row
ReDim macierz(1 To ostatnia_dane)
For i = 1 To ostatnia_dane
macierz(i) = Cells(i, 2).Value
Next i
i = 0
For i = 1 To ostatnia_dane
For j = 1 To ostatnia_dane
For k = 1 To ostatnia_dane
If (i + j + k) <= ostatnia_dane Then
If macierz(i) + macierz(i + k) + macierz(i + k + j) = suma Then
ostatnia = Range("f" & Rows.Count).End(xlUp).Row + 1
Cells(ostatnia, 6) = macierz(i) & " : " & macierz(i + k) & " : " & macierz(i + k + j)
End If
End If
Next k
Next j
Next i
我认为它更有效率,我摆脱了一个静态值,但仍然不知道如何解决我想要加起来的固定数量的问题。