Excel - объединяющие ячейки, где совпадает ссылочный номер
У меня есть лист с множеством строк. Некоторые строки имеют общие ссылочные номера (например, в столбце A). Что я хотел бы сделать, так это то, что когда строка делит ссылочный номер с другой строкой, я хотел бы объединить данные, содержащиеся, скажем, в столбце B, из обеих этих строк в новую ячейку, скажем, в столбце C,
Пример:
Col ACol BCol C
12345РобертРоберт, Дэвид
12345ДэвидКрис
54321Крис
2 ответа
Вот подход VBA. Предполагая Excel 2007 или более поздней версии; Первые несколько шагов будут отличаться, если вы используете предварительную версию Excel.
Нажмите "Visual Basic" на вкладке "Разработчик" на ленте.
Щелкните правой кнопкой мыши на "VBAProject (what-your-sheet-is-named.xls *)" и выполните Вставить -> Модуль в контекстном меню.
Вставьте в этот код
Option Explicit Function allquixotic(param As Variant, search As Range, values As Range, Optional absolute As Boolean = False) As String Dim sep As String, retval As String Dim i As Integer, rownum As Integer Dim look As Range, j As Range sep = ", " retval = "" For i = 1 To search.Rows.Count Set look = search.Cells(i, 1) If absolute Then rownum = look.Row Else rownum = i End If If look.Value = param Then If absolute Then Set j = values.Worksheet.Cells(rownum, values.Column) Else Set j = values.Cells(i, 1) End If retval = IIf(retval = "", retval & j.Value, retval & sep & j.Value) End If Next allquixotic = retval End Function
Используйте функцию листа (не стесняйтесь переименовать ее) с помощью формулы
=allquixotic(A1,$A$1:$A$15,$B$1:$B$15,true)
Используйте маркер заполнения, чтобы поместить формулу во все ячейки
Параметры следующие:
=allquixotic(look_cell, key_range, value_range, absolute)
look_cell
: Первый параметр, должен быть одной ячейкой или литералом значения . Допустимый ввод включает в себя такие вещи, как 3
, $6.25
, "Hello"
и т. д. Это значение, которое вы пытаетесь найти в key_range
,
key_range
: Это должен быть диапазон ячеек (более одной ячейки); если absolute
Значение true, тогда вы получите очень странные результаты, если это не непрерывный диапазон (все значения находятся в последовательных строках).
value_range
: Это должен быть диапазон ячеек (более одной ячейки); если absolute
Значение true, тогда вы получите очень странные результаты, если это не непрерывный диапазон (все значения находятся в последовательных строках).
absolute
: Если true, то мы будем использовать абсолютный номер строки (относительно количества строк во всей электронной таблице) каждой "найденной" строки в key_range
определить, из какой строки извлечь значение value_range
на. Если false, мы будем использовать относительные числа; например, если мы найдем совпадение в третьем ряду key_range
, тогда мы будем извлекать значение из третьего ряда value_range
, Рекомендуемое значение - ЛОЖЬ, или вы можете не указывать его по умолчанию.
Примечание . Эта функция не поддерживает случай, когда диапазоны ключей и значений находятся в столбцах , но его довольно легко адаптировать к этому.
Кроме того, если вы укажете несколько столбцов в key_range или value_range, будет использоваться только самый левый столбец.
Будет ли это работать для вас? Установите формулу в C2 как
=IF(A2=A3,B2 & ", " & B3,B3)
Предполагается, что ваши данные отсортированы по ColA, поэтому ссылочные номера сгруппированы вместе.
ВОПРОС: Может ли быть более 2 имен с одинаковым номером ссылки в ColA?