Генерация сочетаний слов по нескольким ячейкам
xaser
Дата: Вторник, 03.05.2016, 15:45 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Приветствую. Помогите составить макрос. Имеется несколько столбцов со словами. Необходимо получить все уникальные комбинации: по 1 слову из 1го, 2го и 3го столбцов. На примере из аттача: митсубиси asx купить митсубиси asx отзывы ... mitsubishi асх сравнение
Приветствую. Помогите составить макрос. Имеется несколько столбцов со словами. Необходимо получить все уникальные комбинации: по 1 слову из 1го, 2го и 3го столбцов. На примере из аттача: митсубиси asx купить митсубиси asx отзывы ... mitsubishi асх сравнение xaser
Ответить
Сообщение Приветствую. Помогите составить макрос. Имеется несколько столбцов со словами. Необходимо получить все уникальные комбинации: по 1 слову из 1го, 2го и 3го столбцов. На примере из аттача: митсубиси asx купить митсубиси asx отзывы ... mitsubishi асх сравнение Автор - xaser Дата добавления - 03.05.2016 в 15:45
Karataev
Дата: Вторник, 03.05.2016, 16:23 |
Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация:
535
±
Замечаний:
0% ±
Excel
Макрос вставляет результат на новый лист. [vba]Код
Sub jjj() Dim shSrc As Worksheet, shRes As Worksheet Dim arr1(), arr2(), arr3(), arrRes() Dim lr As Long, r As Long, i As Long, j As Long, k As Long Application.ScreenUpdating = False Set shSrc = ActiveSheet Set shRes = Worksheets.Add(After:=shSrc) lr = shSrc.Columns("A").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = shSrc.Range("A1").Resize(lr).Value lr = shSrc.Columns("B").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr2() = shSrc.Range("B1").Resize(lr).Value lr = shSrc.Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr3() = shSrc.Range("C1").Resize(lr).Value ReDim arrRes(1 To UBound(arr1) * UBound(arr2) * UBound(arr3), 1 To 1) For i = 1 To UBound(arr1) For j = 1 To UBound(arr2) For k = 1 To UBound(arr3) r = r + 1 arrRes(r, 1) = arr1(i, 1) & " " & arr2(j, 1) & " " & arr3(k, 1) Next Next Next shRes.Range("A1").Resize(UBound(arrRes)).Value = arrRes() Application.ScreenUpdating = True End Sub
[/vba]
Макрос вставляет результат на новый лист. [vba]Код
Sub jjj() Dim shSrc As Worksheet, shRes As Worksheet Dim arr1(), arr2(), arr3(), arrRes() Dim lr As Long, r As Long, i As Long, j As Long, k As Long Application.ScreenUpdating = False Set shSrc = ActiveSheet Set shRes = Worksheets.Add(After:=shSrc) lr = shSrc.Columns("A").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = shSrc.Range("A1").Resize(lr).Value lr = shSrc.Columns("B").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr2() = shSrc.Range("B1").Resize(lr).Value lr = shSrc.Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr3() = shSrc.Range("C1").Resize(lr).Value ReDim arrRes(1 To UBound(arr1) * UBound(arr2) * UBound(arr3), 1 To 1) For i = 1 To UBound(arr1) For j = 1 To UBound(arr2) For k = 1 To UBound(arr3) r = r + 1 arrRes(r, 1) = arr1(i, 1) & " " & arr2(j, 1) & " " & arr3(k, 1) Next Next Next shRes.Range("A1").Resize(UBound(arrRes)).Value = arrRes() Application.ScreenUpdating = True End Sub
[/vba] Karataev
Ответить
Сообщение Макрос вставляет результат на новый лист. [vba]Код
Sub jjj() Dim shSrc As Worksheet, shRes As Worksheet Dim arr1(), arr2(), arr3(), arrRes() Dim lr As Long, r As Long, i As Long, j As Long, k As Long Application.ScreenUpdating = False Set shSrc = ActiveSheet Set shRes = Worksheets.Add(After:=shSrc) lr = shSrc.Columns("A").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = shSrc.Range("A1").Resize(lr).Value lr = shSrc.Columns("B").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr2() = shSrc.Range("B1").Resize(lr).Value lr = shSrc.Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr3() = shSrc.Range("C1").Resize(lr).Value ReDim arrRes(1 To UBound(arr1) * UBound(arr2) * UBound(arr3), 1 To 1) For i = 1 To UBound(arr1) For j = 1 To UBound(arr2) For k = 1 To UBound(arr3) r = r + 1 arrRes(r, 1) = arr1(i, 1) & " " & arr2(j, 1) & " " & arr3(k, 1) Next Next Next shRes.Range("A1").Resize(UBound(arrRes)).Value = arrRes() Application.ScreenUpdating = True End Sub
[/vba] Автор - Karataev Дата добавления - 03.05.2016 в 16:23
xaser
Дата: Вторник, 03.05.2016, 16:52 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Благодарю, то что нужно!
Благодарю, то что нужно! xaser
Ответить
Сообщение Благодарю, то что нужно! Автор - xaser Дата добавления - 03.05.2016 в 16:52
xaser
Дата: Вторник, 03.05.2016, 16:54 |
Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Я знал что там перебор простой будет, только операторов нужных не знал
Я знал что там перебор простой будет, только операторов нужных не знал xaser
Сообщение отредактировал xaser - Вторник, 03.05.2016, 16:55
Ответить
Сообщение Я знал что там перебор простой будет, только операторов нужных не знал Автор - xaser Дата добавления - 03.05.2016 в 16:54
xaser
Дата: Вторник, 03.05.2016, 17:19 |
Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Karataev , Можно расширить алгоритм для произвольного кол-ва столбцов?
Karataev , Можно расширить алгоритм для произвольного кол-ва столбцов?xaser
Сообщение отредактировал xaser - Вторник, 03.05.2016, 17:20
Ответить
Сообщение Karataev , Можно расширить алгоритм для произвольного кол-ва столбцов?Автор - xaser Дата добавления - 03.05.2016 в 17:19
Karataev
Дата: Среда, 04.05.2016, 21:55 |
Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация:
535
±
Замечаний:
0% ±
Excel
[vba]Код
Sub jjj() Dim arr1(), arr2(), arrRes() Dim lr As Long, lc As Long, r As Long, c As Long, i As Long, j As Long Application.ScreenUpdating = False ActiveSheet.Copy After:=ActiveSheet lc = Rows(1).Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Column For c = lc To 2 Step -1 lr = Columns(c - 1).Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = Cells(1, c - 1).Resize(lr).Value lr = Columns(c).Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr2() = Cells(1, c).Resize(lr).Value ReDim arrRes(1 To UBound(arr1) * UBound(arr2), 1 To 1) r = 0 For i = 1 To UBound(arr1) For j = 1 To UBound(arr2) r = r + 1 arrRes(r, 1) = arr1(i, 1) & " " & arr2(j, 1) Next Next Cells(1, c - 1).Resize(UBound(arrRes)).Value = arrRes() Columns(c).Value = Empty Next Application.ScreenUpdating = True End Sub
[/vba]
[vba]Код
Sub jjj() Dim arr1(), arr2(), arrRes() Dim lr As Long, lc As Long, r As Long, c As Long, i As Long, j As Long Application.ScreenUpdating = False ActiveSheet.Copy After:=ActiveSheet lc = Rows(1).Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Column For c = lc To 2 Step -1 lr = Columns(c - 1).Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = Cells(1, c - 1).Resize(lr).Value lr = Columns(c).Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr2() = Cells(1, c).Resize(lr).Value ReDim arrRes(1 To UBound(arr1) * UBound(arr2), 1 To 1) r = 0 For i = 1 To UBound(arr1) For j = 1 To UBound(arr2) r = r + 1 arrRes(r, 1) = arr1(i, 1) & " " & arr2(j, 1) Next Next Cells(1, c - 1).Resize(UBound(arrRes)).Value = arrRes() Columns(c).Value = Empty Next Application.ScreenUpdating = True End Sub
[/vba] Karataev
Ответить
Сообщение [vba]Код
Sub jjj() Dim arr1(), arr2(), arrRes() Dim lr As Long, lc As Long, r As Long, c As Long, i As Long, j As Long Application.ScreenUpdating = False ActiveSheet.Copy After:=ActiveSheet lc = Rows(1).Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Column For c = lc To 2 Step -1 lr = Columns(c - 1).Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = Cells(1, c - 1).Resize(lr).Value lr = Columns(c).Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr2() = Cells(1, c).Resize(lr).Value ReDim arrRes(1 To UBound(arr1) * UBound(arr2), 1 To 1) r = 0 For i = 1 To UBound(arr1) For j = 1 To UBound(arr2) r = r + 1 arrRes(r, 1) = arr1(i, 1) & " " & arr2(j, 1) Next Next Cells(1, c - 1).Resize(UBound(arrRes)).Value = arrRes() Columns(c).Value = Empty Next Application.ScreenUpdating = True End Sub
[/vba] Автор - Karataev Дата добавления - 04.05.2016 в 21:55