Страницы: 1
RSS
Генерировать комбинации слов из столбцов, Формула
 
Добрый день помогите, пожалуйста, буду вам признателен, если поможете решить проблему.
Есть 3 столбца, с разным количеством заполненных строк. Нужно, чтобы, сначала, сделаны были все возможные комбинации в 1 и 2 столбце (местами менять не надо, то есть, из первого столбца слова всегда на первом месте, из второго на втором), и вписались в 4й столбец, потом тоже самое произошло между 2 и 3 столбцом, и результат записался в 4 столбце, ниже. (Важно 1 и 3й столбик друг с другом не комбинируются)
Так же не должна возникать ошибка, если с самого начала будет пустой 1 или 3 столбец.
Все равно будут это макросы или формула, главное, решить проблему.

Премного благодарен, за то что уделите время, на мою проблему.
 
Добрый.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир, спасибо большое. Вот только одна загвозка, простите пожалуйста. Там когда добавляешь, еще одну ячейку, допустим к египту и китаю, еще и италию. То алгоритм рушиться. Как это исправить?
 
Вот что выходит
 
Кросс:
http://www.excelworld.ru/forum/2-8518-1
Я сам - дурнее всякого примера! ...
 
Поправил. Тестируйте.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Протестил, он не адекватно работает, даже на том примере. Посмотрите пожалуйста. 1й столбик - все отлично. Из 3го он полностью сделал малайзию. Всего 3 раза китай. И потом пошел работать в холостую, оставив египет нетронутым. Я цветами выделил, чтобы вам понятно было. Зеленым значит норм. А красным нет
 
Кто он?
=ЕСЛИ(СЧЁТЗ(A:A)*СЧЁТЗ(B:B)<СТРОКА();ИНДЕКС($B$1:$B$20;ОСТАТ((СТРОКА(A1)-СЧЁТЗ(A:A)*СЧЁТЗ(B:B)+СЧЁТЗ(C:C)-1)/СЧЁТЗ(C:C)+1;СЧЁТЗ(C:C))-1)&" "&ИНДЕКС($C$1:$C$12;ОСТАТ((СТРОКА(A1)-1);СЧЁТЗ(C:C))+1);ИНДЕКС($A$1:$A$20;ОСТАТ((СТРОКА(A1)+СЧЁТЗ(B:B)-1)/СЧЁТЗ(B:B)-1;СЧЁТЗ(A:A))+1)&" "&ИНДЕКС($B$1:$B$20;ОСТАТ(СТРОКА(A1)-1;СЧЁТЗ(B:B))+1))
Цитата
А красным нет
Ну, проверку-то на конец данных и самому можно сделать.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Цитата
Ну, проверку-то на конец данных и самому можно сделать.
Хотел сказать Вам, Владимир, большое спасибо, за такой труд, и за то время, которое у Вас отнимаю.  Мне так стыдно уже Вам еще раз писать, но там есть еще 2 недостатка.
1. Когда добавляешь элемент в 3  столбец, то возникает глюк
2. Могли бы вы что нибудь сделать. Когда заканчиваются комбинации,  то формула начинает просто писать элементы 3его столбца, можно ли сделать так, чтобы как только закончились все комбинации, то остальные ячейки были бы пустыми?

Еще раз, большое спасибо, Владимир.
 
=ЕСЛИ(СЧЁТЗ(A:A)*СЧЁТЗ(B:B)+СЧЁТЗ(B:B)*СЧЁТЗ(C:C)<СТРОКА();"";ЕСЛИ(СЧЁТЗ(A:A)*СЧЁТЗ(B:B)<СТРОКА();ИНДЕКС($B$1:$B$20;ОСТАТ((СТРОКА(A1)-СЧЁТЗ(A:A)*СЧЁТЗ(B:B)+СЧЁТЗ(C:C)-1)/СЧЁТЗ(C:C)+1;СЧЁТЗ(C:C))-1)&" "&ИНДЕКС($C$1:$C$20;ОСТАТ((СТРОКА(A1)-1);СЧЁТЗ(C:C))+1);ИНДЕКС($A$1:$A$20;ОСТАТ((СТРОКА(A1)+СЧЁТЗ(B:B)-1)/СЧЁТЗ(B:B)-1;СЧЁТЗ(A:A))+1)&" "&ИНДЕКС($B$1:$B$20;ОСТАТ(СТРОКА(A1)-1;СЧЁТЗ(B:B))+1)))
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Большущее спасибо!!
 
Простите меня, но я совсем тупой. Как сделать тоже самое только в упрощенном варианте. Есть столбцы 1 и 2. В 3й нужно просто записать все возможные комбинации (местами также менять не надо). Буду очень признателен за помощь =)
 
Цитата
LonelyTuco пишет: Есть столбцы 1 и 2. В 3й нужно просто записать все возможные комбинации
 
Спасибо большое!
 
Цитата
Есть столбцы 1 и 2. В 3й нужно просто записать все возможные комбинации
МатросНаЗебре, а не подскажите на 5 столбцов как так сделать?
 
Если нужно генерировать по 2 слова, то по приложенному примеру у меня получилось 8031 комбинация.
Можно реализовать макросом
 
код не универсальный, подходит для сочетаний из двух слов, оптимизация по скорости не сделана:
Код
Sub main()
    Const n& = 5 'количество столбцов
    Dim i&, j&, ii&, jj&, k&
    
    Columns(n + 2).ClearContents
    For i = 1 To n - 1
        For j = i + 1 To n
            For ii = 1 To Cells(Rows.Count, i).End(xlUp).Row
                For jj = 1 To Cells(Rows.Count, j).End(xlUp).Row
                    k = k + 1
                    Cells(k, n + 2) = Cells(ii, i) & " " & Cells(jj, j)
    Next jj, ii, j, i
End Sub
Изменено: MCH - 21.04.2015 12:35:25
 
мне надо извлекать максимальное количество ключей из 5 столбцов и ключей в других компаниях в разы больше вот не могу найти как всё это перемешать, в excel по формулам разбираюсь лишь на начальном уровне с этим и беда
Изменено: XTremal - 21.04.2015 13:14:01
 
XTremal, кнопка цитирования не для ответа.
Исправьте сообщение.
Страницы: 1
Наверх