2016-10-27 2 views
0

нет подсказки, с чего начать с этого - по сути, это моя проблема.Excel - объединить все значения с одинаковым номером, назначенным в строке

Мне нужно создать функцию или макрос, который может объединить все значения с тем же номером в их строке.

Я использую список сотрудников на работе, и каждый сотрудник имеет связанные с ним центры затрат.

enter image description here

Что мне нужно, чтобы иметь возможность объединить все имена рядом с 12510 + 13030 и т.д. и т.п. в свои собственные клетки.

Любая помощь будет оценена по достоинству.

РЕДАКТИРОВАТЬ: Я пробовал все простые вещи, которые просто вставили, чтобы конкатенировать значения вручную. МВЗ-коды имеют более чем один человек прилагается, я хочу, чтобы сцепить значения всех, кто имеет что стоимость номера центра в один продавать похож на =Concatenate(A1, " ", B1) и т.д.

+0

Что есть ты пытался? FYI '= A1 & B1' совпадает с' = Concatenate (A1, B1) '. Итак, у вас есть повторяющиеся числа в строке, и для каждого из этих дубликатов вы хотите объединить их все в одну ячейку? – BruceWayne

+0

См. Править. Я пробовал все простые вещи, которые просто вставили, чтобы конкатенировать значения вручную. В кодах МВЗ имеется более одного человека, я хочу объединить ценности всех тех, у кого есть номер МВЗ, в одну продажу, похожую на = Concatenate (A1, "", B1) и т. Д. –

+1

https: // stackoverflow. com/questions/18925313/vlookup-multiple-columns –

ответ

0

это должно помочь вам:

Option Explicit 

Sub ListCentreCostNames() 
    Dim empNamesRng As Range, ccRng As Range, ccCell As Range, cell As Range 
    Dim names As String 

    With Worksheets("centrecost") '<--| change "centercost" to your actual worksheet name 
     Set ccRng = .Range("C1", .Cells(.Rows.Count, "C").End(xlUp)) 
     Set empNamesRng = Intersect(.Columns(2), ccRng.EntireRow) 
     With .UsedRange 
      With .Resize(1, 1).Offset(, .Columns.Count + 1) 
       With .Resize(ccRng.Rows.Count) 
        .Value = ccRng.Value 
        .RemoveDuplicates Array(1), Header:=xlYes 
        For Each ccCell In .SpecialCells(xlCellTypeConstants) 
         ccRng.AutoFilter field:=1, Criteria1:=ccCell.Value 
         If Application.WorksheetFunction.Subtotal(103, ccRng) - 1 > 0 Then 
          names = "" 
          For Each cell In empNamesRng.Offset(1).Resize(empNamesRng.Rows.Count - 1).SpecialCells(xlCellTypeVisible) 
           names = names & cell.Value & " " 
          Next cell 
         End If 
         ccCell.Offset(, 1) = names 
        Next ccCell 
       End With 
      End With 
     End With 
     .AutoFilterMode = False 
    End With 
End Sub 
Смежные вопросы