Разъединение строк Excel и дублирование данных - PullRequest
26 голосов
/ 09 февраля 2012

Мне предоставлена ​​довольно большая база данных, хранящаяся в Microsoft Excel, которую я должен попытаться преобразовать во что-то полезное.
Однако одна из проблем, с которыми я сталкиваюсь, заключается в том, что некоторые данные объединяются (горизонтально)в 2с).

Например;

row 1: [ x ][ x ][ x ][ x ][ x ]
row 2: [ x ][ x ][ o    o ][ x ]
row 3: [ o    o ][ x ][ o    o ]

Где x - это отдельные ячейки, а o объединяются вместе

Что я хочу сделать, это объединить все строки (чтоЯ мог бы сделать это довольно легко с помощью кнопки unmerge), но там, где была объединенная ячейка, скопируйте данные в две ячейки.
From;[[ Some Data ]]
К;[ Some Data ][ Some Data ]

Спасибо!Любая помощь приветствуется.

Ответы [ 4 ]

45 голосов
/ 09 февраля 2012

Это решение VBA.Этот макрос будет искать каждую ячейку в активном листе, чтобы увидеть, объединены ли они.Если они есть, он сохраняет диапазон объединенных ячеек в темп.Переменная диапазона, объединяет ячейки, затем заполняет диапазон значением первой ячейки в необработанном диапазоне (каковым было значение).

Sub UnMergeFill()

Dim cell As Range, joinedCells As Range

For Each cell In ThisWorkbook.ActiveSheet.UsedRange
    If cell.MergeCells Then
        Set joinedCells = cell.MergeArea
        cell.MergeCells = False
        joinedCells.Value = cell.Value
    End If
Next

End Sub
13 голосов
/ 14 апреля 2015
  1. Выберите диапазон, в котором объединены данные
  2. Нажмите «Слияние и центр», чтобы удалить ячейки
  3. Выберите диапазон данных еще раз
  4. Нажмите Ctrl + G>Специальные> Пробелы
  5. Нажмите = и клавишу со стрелкой вверх
  6. Нажмите Ctrl + Enter
3 голосов
/ 22 января 2015

Вам не нужен VBA для чего-то подобного.

  1. Выберите диапазон объединенных ячеек
  2. Снять ячейки
  3. Домой -> Найти и выбрать -> Перейти к специальному ... -> Пробелы -> хорошо
  4. Тип "=" переместите одну ячейку вверх и нажмите Ctrl + Enter

Если стили R1C1 включены из: Файл -> Параметры -> Формула -> Стиль ссылки R1C1 затем

  1. ...
  2. ...
  3. ...
  4. Введите "= R [-1] c" и нажмите Ctrl + Enter
0 голосов
/ 12 июля 2019

Я не знаю, как быстро реализовать код VBA, но я использовал формулу для заполнения другого столбца значениями ... затем я применил магию копирования / вставки при вставке значений в незаряженные ячейки. Эта формула основана на том факте, что значение связано с ПЕРВОЙ ячейкой объединенных ячеек, а все остальные разрешаются в 0 (ноль).

Если полковник A2: A100 имеет объединенные ячейки, я сделал следующее:

  1. В ячейку B2 я ввел следующую формулу: =IF(A2<>0,A2, B1)
  2. Скопируйте формулу до B100
  3. Копировать / Вставить ЗНАЧЕНИЯ ТОЛЬКО в столбец C.
  4. Снять все столбцы А.
  5. Копировать значения из столбца C в столбец A.

На самом деле, вы можете упростить это до этой серии, если вы смелы ...

  1. Удалить всю колонку A
  2. В ячейку B2 я ввел следующую формулу: =IF(A2<>0,A2, B1)
  3. Скопируйте формулу вниз до B100
  4. Копировать / Вставить значения только в столбец A

Это пропускает использование столбца C ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...