2016-05-16 3 views
0

Как бы объединить записи, если указанные столбцы одинаковы?Excel: объединение полудуплицированных записей (с разными столбцами)?

Вот что у меня есть, и результат я ищу:

enter image description here

+0

Показать код. – findwindow

+0

Нет кода, это проблема с превью. – sojim2

+1

Uh excel не исключает vba. Если вам нужна только формула, укажите это. Несмотря на это, вам все равно нужно показать, что вы пробовали. – findwindow

ответ

1

Это можно сделать с помощью формул массива, если вы не возражаете их быть большим и уродливым. Этот пример должен делать то, что вы ищете. В случае повторяющихся записей, она просто занимает последнее заданное значение (Prog вместо программист Кевин Мосс):

Example Workbook

Введите следующую формулу в C11 и D11, затем нажмите CTRL + SHIFT + ENTER, чтобы применить формулу массива. Затем вы можете скопировать формулу в строки ниже по мере необходимости.

= ИНДЕКС ((IF ((((($ A11 = $ A $ 2: $ A $ 7) + ($ B11 = $ B $ 2: $ B $ 7)) = 2) + (C $ 2: C $ 7 < > "")) = 2, C $ 2: C $ 7 "")), MAX (ЕСЛИ ((ЕСЛИ ((((($ А11 = $ A $ 2: $ A $ 7) + ($ В11 = $ B $ 2: $ B $ 7)) = 2) + (C $ 2: C $ 7 <> "")) = 2, C $ 2: C $ 7, "")) <> "", ROW ($ A $ 1: $ A $ 6) 0)))

Это разрушает то, что происходит немного, но по общему признанию, это все еще довольно непрозрачный, извините:

=INDEX(
     (IF( # This IF statement collects all entries in a data field for a given Fname/Lname combination 
      (((($A11=$A$2:$A$7) + ($B11=$B$2:$B$7))=2) + (C$2:C$7<>""))=2, # Checks that First and Last Name Match, and Data field isn't empty 
      C$2:C$7,  # Return data field if TRUE 
      ""   # Return empty if FALSE 
     )), 
     MAX( # Take the highest index number, use it to select a row from the result of the IF statement above 
      IF(( # This IF statement returns an index number if the data field isn't empty 
       IF( # This IF statement collects all entries in a data field for a given Fname/Lname combination (copied from above) 
        (((($A11=$A$2:$A$7)+($B11=$B$2:$B$7))=2)+(C$2:C$7<>""))=2, 
        C$2:C$7, 
        "") 
      )<>"",   # End of conditional statement 
       ROW($A$1:$A$6), # Value if TRUE (ROW used as an incrementing counter) 
       0    # Value if FALSE (0 will be ignored in the MAX function that uses this result) 
      ) 
     ) 
    ) 
+0

В случае, когда Кевин Мосс с двумя разными описаниями оккупации, я хотел бы сохранить «Программист» и «Прог» в качестве отдельных записей. Если ему 2 нравится, то я хотел бы сохранить это как отдельные записи. Которая, я думаю, заставит код выглядеть еще хуже! – sojim2

+0

Это совсем немного отличается от вашего первоначального вопроса. На данный момент я не знаю, как хороший способ объединить несколько результатов в один результат, как вы спрашиваете. Поскольку я ответил на ваш вопрос, не могли бы вы принять его? Кто-то может помочь с вашим последним вопросом, если вы можете опубликовать более подробный пример с ожидаемым выходом. – schoolie

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