Как сохранить значение объединенных ячеек в каждой ячейке?
Я создал лист с Объединенными ячейками, но значение объединенных ячеек хранится только в первой ячейке. В любом случае, чтобы сохранить одно и то же значение в каждой из ячеек, мне нужно это для Формулы, которую я использую. Спасибо!
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
создать макрос
- клавишей Alt-F11, Ctrl-R меню
Insert/Module
вставьте код; -
как вариант: 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 объединены).
вставить столбец перед столбцом a
-
в типе A1:
=B1
-
скопируйте приведенную ниже формулу в A2:
=IF(B2="",A1,B2)
перетащите формулу, введенную u А2
в ваших формулах используйте вновь созданный столбец, и после его использования вы можете скрыть его.
вы не можете хранить фактические значения где-то еще? вместо объединенной ячейки? и да, используйте формулу для отображения значения в объединенной ячейке.
предположим, что столбец " A " объединил ячейки - поместите это в B1 и скопируйте его, чтобы заполнить остальную часть столбца:
=IF(ISBLANK(A1);OFFSET(B1;-1;0);A1)
он проверяет, имеет ли ячейка слева значение, если она возвращает свое значение, если нет, она берет значение из верхней ячейки.
обратите внимание, что он не работает для пустых ячеек. Сначала заполните пустые ячейки в столбце "A" чем-то уникальным, например "(пустой)", и замените его пустым как в "A", так и в "B" после заполнения столбца "B".
вы можете использовать пользовательскую функцию VBA, которая дает непосредственно значение объединенной ячейки, независимо от того, какой из них вы выбираете. В этом случае нет необходимости дублировать значения.
- переключиться на вид VBA (Alt-F11)
- создайте новый модуль с помощью Insert > Module
- в вашем проекте перейдите к новому модулю (вы можете дать ему новое имя через свойство (name) только под проводником)
- скопируйте следующий код в модуле (вставка кода в 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 является частью объединенной ячейки.
я улучшил макрос 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