Добрый вечер! Подскажите, как можно осуществить в Excel пересечение чисел друг с другом. В примере показано, что все числа(строки) столбца А пересекаются с числами (строками) столбца В. Ниже приведен результат (в ручную) как это надо сделать. Возможно ли это? Заранее благодарен за ответ!!!
Добрый вечер! Подскажите, как можно осуществить в Excel пересечение чисел друг с другом. В примере показано, что все числа(строки) столбца А пересекаются с числами (строками) столбца В. Ниже приведен результат (в ручную) как это надо сделать. Возможно ли это? Заранее благодарен за ответ!!!yakutt-1573
можно отключить автопересчет формул - будет быстрее. Макрос заточен на два столбца. Если нужно больше - поищите на сайте уже много раз про комбинации говорили.
можно отключить автопересчет формул - будет быстрее. Макрос заточен на два столбца. Если нужно больше - поищите на сайте уже много раз про комбинации говорили.SLAVICK
Перестановки без повторов подойдут? Если да, то как-то так можно [vba]
Код
Function Комбинации(ParamArray ParArr() As Variant) As Variant Application.Volatile False Dim ArrA(), ArrB(), ArrC(), CountArr&, x&, i&, j& CountArr = UBound(ParArr): ReDim ArrB(CountArr), ArrC(CountArr) For i = 0 To CountArr ArrC(i) = ParArr(i).Count: ArrB(i) = ArrC(i) If i > 0 Then ArrB(i) = ArrB(i - 1) * ArrB(i) Next ReDim ArrA(ArrB(CountArr) - 1, CountArr) For i = 0 To ArrB(CountArr) - 1 For j = 0 To CountArr x = 1: If j > 0 Then x = ArrB(j - 1) ArrA(i, j) = ParArr(j).Cells(Int(i / x) Mod ArrC(j) + 1) Next Next Комбинации= ArrA() End Function
[/vba]
Перестановки без повторов подойдут? Если да, то как-то так можно [vba]
Код
Function Комбинации(ParamArray ParArr() As Variant) As Variant Application.Volatile False Dim ArrA(), ArrB(), ArrC(), CountArr&, x&, i&, j& CountArr = UBound(ParArr): ReDim ArrB(CountArr), ArrC(CountArr) For i = 0 To CountArr ArrC(i) = ParArr(i).Count: ArrB(i) = ArrC(i) If i > 0 Then ArrB(i) = ArrB(i - 1) * ArrB(i) Next ReDim ArrA(ArrB(CountArr) - 1, CountArr) For i = 0 To ArrB(CountArr) - 1 For j = 0 To CountArr x = 1: If j > 0 Then x = ArrB(j - 1) ArrA(i, j) = ParArr(j).Cells(Int(i / x) Mod ArrC(j) + 1) Next Next Комбинации= ArrA() End Function