У меня есть три отдельных столбца со значениями в листе Excel. Теперь я хочу создать новый столбец, который объединяет все значения из этих столбцов. Когда я добавляю новые значения в один из этих трех столбцов, я хочу, чтобы итоговый столбец обновлялся автоматически. Как мне это сделать?

Table1

ColumnA  ColumnB  ColumnC
VALUE1   VALUE4   VALUE7
VALUE2   VALUE5   VALUE8
VALUE3   VALUE6   VALUE9
         VALUE10

Сгенерированный результат:

Table2

VALUE1
VALUE2
VALUE3
VALUE4
VALUE5
VALUE6
VALUE10
VALUE7
VALUE8
VALUE9

2 ответа2

2

Введите следующий макрос событий в области кода рабочей таблицы:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim inpt As Range, i As Long, K As Long, N As Long
    Dim j As Long

    Set inpt = Range("A:C")
    If Intersect(Target, inpt) Is Nothing Then Exit Sub
    Application.EnableEvents = False
        Range("D:D").Clear
        K = 1
        For i = 1 To 3
            N = Cells(Rows.Count, i).End(xlUp).Row
            For j = 1 To N
                Cells(K, 4).Value = Cells(j, i).Value
                K = K + 1
            Next j
        Next i
    Application.EnableEvents = True
End Sub

Он будет отслеживать изменения в столбцах с A по C и обновлять столбец D соответственно.

Поскольку это код рабочего листа, его очень легко установить и использовать автоматически:

  1. щелкните правой кнопкой мыши имя вкладки в нижней части окна Excel
  2. выберите View Code - откроется окно VBE
  3. вставьте материал и закройте окно VBE

Если у вас есть какие-либо проблемы, сначала попробуйте на пробную версию.

Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить макрос:

  1. вызвать окна VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы узнать больше о макросах в целом, смотрите:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

а также

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Чтобы узнать больше о макросах событий (код листа), см .:

http://www.mvps.org/dmcritchie/excel/event.htm

Макросы должны быть включены, чтобы это работало!

2

У меня есть ответ, который не требует кодирования.

  • Я предполагаю, что вы хотите поместить объединенный (объединенный) список в столбец D того же листа.  Если вы хотите это в другом месте, это тривиальное изменение.
  • Мое решение требует двух «вспомогательных столбцов»; например, столбцы E и F на одном листе.  Если вы хотите их в другом месте, это тривиальное изменение.
  • Я предполагаю, что вы не будете помещать пробелы в первые три столбца (то есть в данные, перед последним значением), и что вы хотите, чтобы эти столбцы просто объединялись, а не сортировались или дедуплировались.  Если я неправильно понимаю, это серьезное изменение.
  • Я предполагаю, что каждый столбец имеет хотя бы одно значение; то есть, что A1 , B1 и C1 являются пустыми.  Если это предположение неверно, это решение (вероятно) можно адаптировать для этого.

Решение:

  • Введите =IF(E1<0, "", OFFSET($A$1, F1, E1)) в ячейку D1 .
  • Перетащите / заполните ячейку D1 вниз в D2 .
  • Введите 0 в ячейки E1 и F1 .
  • Введите =IF(E1<0, E1, IF(OFFSET($A$1, F1+1, E1)<>"", E1, IF(E1<2, E1+1, -1))) в ячейку E2 .
  • Введите =IF(E1<0, 0, IF(OFFSET($A$1, F1+1, E1)<>"", F1+1, 0)) в ячейку F2 .
  • Выберите ячейки D2:F2 и перетащите / заполните, насколько вы ожидаете, комбинированный список.  (Конечно, вы всегда можете продлить его позже.)

Столбцы E и F содержат столбец (на основе 0) и номер строки значения в столбце D Например, 0,0 - это A1 , 0,2 - это A3 , 1,3 - это B4 и т.д. Отрицательное значение в столбце E указывает, что вы находитесь за пределами конца данных.  Формула в столбце D оценивается как пустая, если значение E отрицательное; в противном случае он использует функцию OFFSET() для получения значения, проиндексированного числами E и F

Формулы в столбцах E и F проверяют, является ли предыдущее значение E отрицательным, и, если это так, задайте для следующей строки значение -1,0 поэтому, как только вы достигнете конца списка, вы пройдете его и ты не начинаешь завязывать себя в узлы.  В противном случае, если в текущем столбце есть следующее значение, мы переходим к этому значению (E1,F1+1).  В противном случае мы переходим к началу следующего столбца - за исключением того, что если текущий столбец № 2 (C), мы переходим к столбцу № -1, потому что мы в конце.

      скриншот таблицы

Теперь вы можете добавлять и удалять значения в столбцах A , B и C , и список в столбце D будет обновляться автоматически.  Как только вы это заработаете, вы можете скрыть вспомогательные столбцы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .