Единственный форум где по экселю получаю качественные и интересные решения! За это Вам огромное спасибо!
Вот и настал вопрос...уже третий на этом форуме)
Задача состоит в следующем: разбив на две под задачи. 1. Есть ряд чисел, 32 ячейки по порядку. В каждой ячейке может находится значение 0,1,2,3 С помощью гугла не смог найти программу, что бы выгрузить в эксель все возможные комбинации, только смог найти для значения 0,1, того получилась матрица 32 на 32. А вот под четыре числа не смог. Может ли кто нибудь выгрузить в эксель эти значения по строчно, для 0,1,2,3.
2. Имеем несколько строк. Прикрепил эксель. Строка 5,6,7,8. Объясню пример 5й строки. Имеем числа 0,1,2,3. В ячейки M5, N5, O5, P5 вставляются значения 0,1,2,3 из столбиков А, B, C, D. Затем на основе некой формулы происходит расчет для текущей строки, для каждого значения 5й строки. результат добавляется в столбцы W X Y Z. Задача состоит в том, что бы следующую строку, 6-ю, подставить в ячейки M5 N5 O5 P5 для просчета формулы и результат копирнуть в ячейки W6 X6 Y6 Z6. Сразу скажу, что формулу просто не могу протянуть, так как тут пример, в реале она занимает много места и не может быть скопирована для протяжки. И так по 6,7,8 строке и по аналогии далее. В результате идут строки с данными и после них, на этой же строке данные с результатом. Но ячейки для подстановки значений и строк, едины. Так же как и результат по формуле (строка 5-я столбцы M N O P R S T U)
Добрый день!
Единственный форум где по экселю получаю качественные и интересные решения! За это Вам огромное спасибо!
Вот и настал вопрос...уже третий на этом форуме)
Задача состоит в следующем: разбив на две под задачи. 1. Есть ряд чисел, 32 ячейки по порядку. В каждой ячейке может находится значение 0,1,2,3 С помощью гугла не смог найти программу, что бы выгрузить в эксель все возможные комбинации, только смог найти для значения 0,1, того получилась матрица 32 на 32. А вот под четыре числа не смог. Может ли кто нибудь выгрузить в эксель эти значения по строчно, для 0,1,2,3.
2. Имеем несколько строк. Прикрепил эксель. Строка 5,6,7,8. Объясню пример 5й строки. Имеем числа 0,1,2,3. В ячейки M5, N5, O5, P5 вставляются значения 0,1,2,3 из столбиков А, B, C, D. Затем на основе некой формулы происходит расчет для текущей строки, для каждого значения 5й строки. результат добавляется в столбцы W X Y Z. Задача состоит в том, что бы следующую строку, 6-ю, подставить в ячейки M5 N5 O5 P5 для просчета формулы и результат копирнуть в ячейки W6 X6 Y6 Z6. Сразу скажу, что формулу просто не могу протянуть, так как тут пример, в реале она занимает много места и не может быть скопирована для протяжки. И так по 6,7,8 строке и по аналогии далее. В результате идут строки с данными и после них, на этой же строке данные с результатом. Но ячейки для подстановки значений и строк, едины. Так же как и результат по формуле (строка 5-я столбцы M N O P R S T U)AGinvest
Sub t() Dim a%(1 To 1, 1 To n), j& Cells(1, 1).Resize(, n) = a j = 1 Do While getNext(a) j = j + 1 Cells(j, 1).Resize(, n) = a Loop End Sub
Function getNext(a() As Integer) As Boolean Dim i%, j% i = n Do While a(1, i) = 3 i = i - 1 If i = 0 Then getNext = False: Exit Function Loop a(1, i) = a(1, i) + 1 For j = i + 1 To n: a(1, j) = 0: Next getNext = True End Function
[/vba]
внимание! 32^4 - ровно столько строк в Excel 2007-2013
2. "одна тема - один вопрос"
1.
Цитата (AGinvest)
С помощью гугла не смог найти программу
это вы его чем-то разозлили, не иначе...
[vba]
Код
Const n = 32
Sub t() Dim a%(1 To 1, 1 To n), j& Cells(1, 1).Resize(, n) = a j = 1 Do While getNext(a) j = j + 1 Cells(j, 1).Resize(, n) = a Loop End Sub
Function getNext(a() As Integer) As Boolean Dim i%, j% i = n Do While a(1, i) = 3 i = i - 1 If i = 0 Then getNext = False: Exit Function Loop a(1, i) = a(1, i) + 1 For j = i + 1 To n: a(1, j) = 0: Next getNext = True End Function
[/vba]
внимание! 32^4 - ровно столько строк в Excel 2007-2013
ну... я не модератор. вопросы, возможно, связанные. просто первую часть мне было интересно решать, а вторая, судя по описанию, не вдохновила как-то
ну... я не модератор. вопросы, возможно, связанные. просто первую часть мне было интересно решать, а вторая, судя по описанию, не вдохновила как-то ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Поправьте: =ЧИСЛКОМБ(32;4) ввел значения, то есть длина комбинации 32 значения, количество значений 4, вывело 35960 комбинаций, на мой взгляд их должно быть намного больше, или я не прав?
Поправьте: =ЧИСЛКОМБ(32;4) ввел значения, то есть длина комбинации 32 значения, количество значений 4, вывело 35960 комбинаций, на мой взгляд их должно быть намного больше, или я не прав?AGinvest
Предположил на листочке, если к примеру длина 32 значения, а переменных всего два, это 1 или 0. То комбинаций уже 32*32=1024. А у нас переменных 0,1,2,3. Если я не прав, поправьте...
Предположил на листочке, если к примеру длина 32 значения, а переменных всего два, это 1 или 0. То комбинаций уже 32*32=1024. А у нас переменных 0,1,2,3. Если я не прав, поправьте...AGinvest
AGinvest, число комбинаций - это кол-во различных выборок по 4 (в вашем случае) из заданных 32 чисел. Это совсем не то, что Вы ищете. У Вас определяется число размещений из 4 по 32, а это 4^32 (строк не хватит) http://ru.wikipedia.org/wiki/Размещение
AGinvest, число комбинаций - это кол-во различных выборок по 4 (в вашем случае) из заданных 32 чисел. Это совсем не то, что Вы ищете. У Вас определяется число размещений из 4 по 32, а это 4^32 (строк не хватит) http://ru.wikipedia.org/wiki/РазмещениеPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
AGinvest, число комбинаций - это кол-во различных выборок по 4 (в вашем случае) из заданных 32 чисел. Это совсем не то, что Вы ищете. У Вас определяется число размещений из 4 по 32, а это 4^32 (строк не хватит) http://ru.wikipedia.org/wiki/Размещение
то есть получается 7,378697629483821e+19 комбинаций?! посчитал на калькуляторе...
Цитата (Pelena)
AGinvest, число комбинаций - это кол-во различных выборок по 4 (в вашем случае) из заданных 32 чисел. Это совсем не то, что Вы ищете. У Вас определяется число размещений из 4 по 32, а это 4^32 (строк не хватит) http://ru.wikipedia.org/wiki/Размещение
то есть получается 7,378697629483821e+19 комбинаций?! посчитал на калькуляторе...AGinvest
У меня строка состоит из 32 чисел. Числа могут быть только 0,1,2,3. Сколько существует комбинаций? Если числа 0,1 то комбинаций 4294967296 если числа 0,1,2,3 то 7,378697629483821e+19 комбинаций?! посчитал на калькуляторе...
мое решение верно?!
У меня строка состоит из 32 чисел. Числа могут быть только 0,1,2,3. Сколько существует комбинаций? Если числа 0,1 то комбинаций 4294967296 если числа 0,1,2,3 то 7,378697629483821e+19 комбинаций?! посчитал на калькуляторе...
внимание! 32^4 - ровно столько строк в Excel 2007-2013
это, конечно, правда. и ничего другого я не говорил. но, наверное, можно было подумать, что и комбинаций получится столько же. хотя это, конечно же, не так.
сорри.
наверное, это я виноват
Цитата (ikki)
внимание! 32^4 - ровно столько строк в Excel 2007-2013
это, конечно, правда. и ничего другого я не говорил. но, наверное, можно было подумать, что и комбинаций получится столько же. хотя это, конечно же, не так.
Упростил задание, до 8-ми, вместо 32 значений в стоке с 4-мя переменными, с помощью макроса от ikki, большое спасибо) получилось 65536 комбинаций...эксель выдержал, меня это устраивает-пока. Теперь буду пока сам ломать голову над пунктом 2.
Упростил задание, до 8-ми, вместо 32 значений в стоке с 4-мя переменными, с помощью макроса от ikki, большое спасибо) получилось 65536 комбинаций...эксель выдержал, меня это устраивает-пока. Теперь буду пока сам ломать голову над пунктом 2.AGinvest
Sub www() Dim i&, j&, k&, m&, a&() Const n& = 8 ReDim a&(1 To 4 ^ n, 1 To n) For i = 0 To 4 ^ n - 1 k = k + 1 m = i For j = 1 To n a(k, j) = m Mod 4 m = m \ 4 Next j, i Cells(1, 1).Resize(UBound(a, 1), UBound(a, 2)) = a End Sub
[/vba]
вариант генерации [vba]
Код
Sub www() Dim i&, j&, k&, m&, a&() Const n& = 8 ReDim a&(1 To 4 ^ n, 1 To n) For i = 0 To 4 ^ n - 1 k = k + 1 m = i For j = 1 To n a(k, j) = m Mod 4 m = m \ 4 Next j, i Cells(1, 1).Resize(UBound(a, 1), UBound(a, 2)) = a End Sub