Как сохранить значение слитых ячеек в каждой ячейке? - PullRequest
7 голосов
/ 24 июня 2011

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

Ответы [ 8 ]

6 голосов
/ 24 июня 2011

В 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.Или сопоставьте его с ключом

2 голосов
/ 05 декабря 2014

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

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

1 голос
/ 23 мая 2016

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

  1. Переключиться в режим просмотра VBA (Alt-F11)
  2. Создать новый модуль через «Вставка»> «Модуль»
  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
Теперь вы можете использовать формулу в Excel

Код:

=GetMergedValue(A1)

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

1 голос
/ 21 августа 2012

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

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

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

  2. В типе A1:

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

    =IF(B2="",A1,B2)
    
  4. Перетащите вниз формулу, введенную в A2

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

0 голосов
/ 25 апреля 2019
 Dim rowcnt As Long, i As Long
    rowcnt = Cells(Rows.Count, "A").End(xlUp).Row
    For i = rowcnt To 3 Step -1
        With Cells(i, 1)
            If .Value = Cells(i - 1, 1).Value Then
                .Font.ColorIndex = 9
            End If
        End With
    Next i
0 голосов
/ 04 апреля 2018

Я улучшил макрос 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
0 голосов
/ 11 мая 2016

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

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

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

Обратите внимание, что он не работает для пустых ячеек.Сначала заполните пустые ячейки в столбце «А» чем-то уникальным, например «(пустой)», и замените его пустыми в «А» и «В» после заполнения столбца «В».

0 голосов
/ 24 июня 2011

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

...