2014-02-07 4 views
1

Итак, у меня уже есть список перестановок, но я бы хотел преобразовать его в комбинации. Итак, у меня есть один список имен «john» «mike» «tom», и они уже были преобразованы в два столбца перестановок «john mike» «john tom» «mike john» «mike tom» «tom john» " tom mike ", так как я могу либо удалить избыточные перестановки, чтобы преобразовать их в комбинации, либо было бы легче сделать новый макрос, чтобы просто генерировать комбинации?Вывести все комбинации из списка имен в excel

Так быть ясно, новый список я ищу бы «джон микрофону» «Джон Томи» «Том микрофон»

Вот макрос для перестановки данных мне вчера (source).

Sub Permutation() 

Dim NameList As Variant, NameVal As Variant, NameVal2 As Variant 
Dim Iter As Long 

NameList = Sheet3.Range("A1:A108").Value 

Iter = 1 
For Each NameVal In NameList 
    For Each NameVal2 In NameList 
     If NameVal2 <> NameVal Then 
      Range("C" & Iter).Value = NameVal 
      Range("D" & Iter).Value = NameVal2 
      Iter = Iter + 1 
     End If 
    Next NameVal2 
Next NameVal 

End Sub 

ответ

2

Попробуйте это:

Sub NoRepetition() 

Dim NameList As Variant, NameVal As Variant, NameVal2 As Variant 
Dim Iter As Long, OutputList As Range, NotYet As Boolean 

NameList = Range("A1:A5").Value 

Iter = 1 
For Each NameVal In NameList 
    For Each NameVal2 In NameList 
     LRow = Range("C" & Rows.Count).End(xlUp).Row 
     Set OutputList = Range("C1:C" & LRow) 
     NotYet = (Application.CountIf(OutputList, NameVal2) = 0) 
     If NameVal2 <> NameVal And NotYet Then 
      Range("C" & Iter).Value = NameVal 
      Range("D" & Iter).Value = NameVal2 
      Iter = Iter + 1 
     End If 
    Next NameVal2 
Next NameVal 

End Sub 

Дополнительная концепция проста: просто добавить проверку, чтобы увидеть, если имя уже существует в первом столбце. Если это так, пропустите эту комбинацию. Если нет, то поместите его в

Скриншот:.

enter image description here

Сообщите нам, если это помогает.

+0

wow, еще раз спасибо! Да, это то, что я искал. Как вы узнали все эти функции? Я примерно такого же возраста, и я едва знаю половину! – barker

+0

Спасибо, что согласился. :) Просто много практиковал. Начинается с кнопки, которая добавляет значение в ячейку два года назад. С тех пор немного. ;) – Manhattan

Смежные вопросы