Как сохранить значение объединенных ячеек в каждой ячейке?

Я создал лист с Объединенными ячейками, но значение объединенных ячеек хранится только в первой ячейке. В любом случае, чтобы сохранить одно и то же значение в каждой из ячеек, мне нужно это для Формулы, которую я использую. Спасибо!

7 ответов


в Excel 2003 этот макрос выполняет работу:

Public Sub UnmergeAndFill()
    With Selection
        If .MergeCells Then
            .MergeCells = False
            Selection.Cells(1, 1).Copy
            ActiveSheet.Paste 'Or PasteSpecial xlPasteFormulasAndNumberFormats
        End If
    End With
End Sub

создать макрос

  1. клавишей Alt-F11, Ctrl-R меню Insert/Module вставьте код;
  2. как вариант: Alt-F8 введите новое имя (UnmergeAndFill, например), нажать Make или Create (? не знаю английский текст кнопки)

вызовите макрос, нажав Alt-F8, выберите его,Run. В качестве альтернативы сопоставьте его с ключом


Я знаю, что это довольно старый вопрос, но это первое место, где я приземлился, когда искал ответ, и принятый ответ не помог вообще. Тем не менее, я обнаружил отличный ответ на MrExcel, который, как я думал, стоит поставить на эту тему в интересах кого-либо еще, гугля для answer:
http://www.mrexcel.com/forum/general-excel-discussion-other-questions/487941-data-multiple-cells-within-merged-cell-possible.html

сохранить глядя на ссылку, ответ удивительно прост; если вы объединяете ячейки с помощью Excel Format Painter, а не объединяете ячейки, он сохраняет данные/формулы, лежащие в основе объединенных ячеек. Вам просто нужно создать временный объединенный блок ячеек в нужном формате где-то еще, чтобы использовать в качестве шаблона для форматирования Painter. Вы можете удалить их позже. Однако следует остерегаться того, что "скрытые" данные могут быть ловушкой для неосторожных, поскольку редактирование видимой ячейки делает не изменить невидимых.


вы можете создать новый столбец (или строку) и применить эту формулу в первую ячейку и перетащите его вниз:

Я полагаю, что в столбце A Вы объединили ячейки (например, A1:A3 & A5:A8 объединены).

  1. вставить столбец перед столбцом a

  2. в типе A1:

    =B1
    
  3. скопируйте приведенную ниже формулу в A2:

    =IF(B2="",A1,B2)
    
  4. перетащите формулу, введенную u А2

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


вы не можете хранить фактические значения где-то еще? вместо объединенной ячейки? и да, используйте формулу для отображения значения в объединенной ячейке.


предположим, что столбец " A " объединил ячейки - поместите это в B1 и скопируйте его, чтобы заполнить остальную часть столбца:

=IF(ISBLANK(A1);OFFSET(B1;-1;0);A1)

он проверяет, имеет ли ячейка слева значение, если она возвращает свое значение, если нет, она берет значение из верхней ячейки.

обратите внимание, что он не работает для пустых ячеек. Сначала заполните пустые ячейки в столбце "A" чем-то уникальным, например "(пустой)", и замените его пустым как в "A", так и в "B" после заполнения столбца "B".


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

  1. переключиться на вид VBA (Alt-F11)
  2. создайте новый модуль с помощью Insert > Module
  3. в вашем проекте перейдите к новому модулю (вы можете дать ему новое имя через свойство (name) только под проводником)
  4. скопируйте следующий код в модуле (вставка кода в ThisWorkbook не будет работать)

код:

Option Explicit

Function GetMergedValue(location As Range)
    If location.MergeCells = True Then
        GetMergedValue = location.MergeArea(1, 1)
    Else
        GetMergedValue = location
    End If
End Function
  1. теперь вы можете использовать формулу в excel

код:

=GetMergedValue(A1)

где A1 является частью объединенной ячейки.


я улучшил макрос sehe, чтобы сделать столько объединенных ячеек, сколько вы выберете.

код:

Public Sub UnmergeAndFillMultiple()
    Dim w As Range, m As Range, n As Range
    For Each w In Selection.Cells
        If w.MergeCells Then
            Set n = w.MergeArea.Cells(1, 1)
            Set m = w.MergeArea
            w.MergeCells = False
            n.Copy
            m.PasteSpecial
        End If
    Next
End Sub