2016-01-19 5 views
0

Я пытаюсь создать комбинации id_users в Excel, что они имеют relation..so я использовал этот пример код, чтобы дал мне этот результат:перепутаны строки код VBA в Excel

вход представляет собой сводная таблица:

 ' id_row id_users 
     10  1 
       2 
       3 
     66  4 
       11 

это мой выход

 'source target label 
     1   2  10 
     1   3  10 
     2   3  10 
     4   11 66 

Но он дал мне этот результат:

 'source target label 
     1   2  10 
     1   3  10 
     2   1  10 
     2   3  10 
     3   1  10 
     3   2  10 
     4   11 66 
     11  4  66 

как я вижу, я не хотел показывать поменявшиеся строки тоже нормально, если он показывает повторяющуюся строку .. но я не хочу показывать смененные данные .. например: 1 2 и 2 1 это doesn 't означает что-либо просто повторенную информацию вроде: a с b имеет отношение, а затем вы видели, что b с a имеет отношение .. и это просто повторение информации, которая сначала у меня есть ... в моем коде это показывает массив данных Sq user_1, которые не равны с данными в SQQ user_2, но я хочу, чтобы показать данные, которые не называются в проницаемой кв user_1:

  ' 
       'get the combinationsin the pivot table for this topic 
    sq = Range(rTopic, rTopic.End(xlDown).Offset(-1)).Offset(, 1).Resize(, 2).SpecialCells(2, 1).Value 

    'get the unique combinations of persons 
    sUniq = " " 
    For lUser_2 = 1 To UBound(sq, 1) 
     If InStr(sUniq, " " & sq(lUser_2, 2) & " ") = 0 Then 
      sUniq = sUniq & sq(lUser_2, 2) & " " 
     End If 
    Next 

    sqq = Split(Trim(sUniq)) 


    'loop over user id's and generate combinations 
    For lUser_1 = 1 To UBound(sq, 1) 
     For lUser_2 = 0 To UBound(sqq) 

      If sq(lUser_1, 2) & "" <> sqq(lUser_2) Then 

       'we found a new combination, output to screen 
       Range(sStartingCellOutput).Offset(lRowOffset, lColOffset).Resize(1, 3).Value = Array(sq(lUser_1, 2), sqq(lUser_2), rTopic.Value) 

       'increment the counter 
        lRowOffset = lRowOffset + 1 
        If lRowOffset >= Rows.count Then 
        lRowOffset = 0 
        lColOffset = lColOffset + 4 
       End If 
      End If 



     Next 
    Next 

Я Editted это объяснить более в моем code..just PLZ Мне нужна помощь? если мой Q не ясно, просто комментарий для меня ... спасибо

ответ

0

Вам нужно добавить еще один пробел к значению вы проверяете

If InStr(sUniq, " " & sq(lUser_2, 2) & " ") = 0 Then 
+0

Спасибо ..Я добавить it..but него все тот же ..: S –

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