можно ли создать макрос для разъединения ячеек, чтобы в полученных ячейках было значение объединенной?
Макрос для разъединения ячеек
12.11.2010 17:57:07
|
|
|
|
12.11.2010 21:12:24
Sub UnMerge_and_Fill()
'--------------------------------------------------------------------------------------- ' Procedure : UnMerge_and_Fill ' Topic_HEADER : Снятие объединения ячеек с заполнением ' Topic_URL : ' Purpose : Снимает объединение со всех ячеек выделенного диапазона ' и заполняет все разгруппированные ячейки КАЖДОЙ бывшей группы ' либо ссылками на значения верхней левой, либо её значениями '--------------------------------------------------------------------------------------- If TypeName(Selection) <> "Range" Then Exit Sub If Selection.Cells.Count <= 1 Then Exit Sub Dim rRange As Range, rCell As Range, sValue$, sAddress$, i& Application.ScreenUpdating = False Set rRange = Intersect(Selection, ActiveSheet.UsedRange) Select Case MsgBox("""ДА"" - заполнить ячейки формулами-ссылками на первую ячейку" & vbCrLf & _ """НЕТ"" - заполнить ячейки значениями из первой ячейки" & vbCrLf & _ """ОТМЕНА"" не разгруппировывать" _ , vbYesNoCancel + vbQuestion, "Как заполнять ячейки после разгруппировки?") Case vbYes ' разгруппировать все ячейки в Selection и ячейки каждой бывшей группы заполнить формулами-ссылками на их первые ячейки For Each rCell In rRange If rCell.MergeCells Then sAddress = rCell.MergeArea.Address: rCell.UnMerge For i = 2 To Range(sAddress).Cells.Count With Range(sAddress) .Cells(i).Formula = "=" & .Cells(1).Address .Cells(i).Replace What:="$", Replacement:="", LookAt:=xlPart ' сделать ссылки перемещаемыми .Cells(i).Font.ColorIndex = 5 ' сделать шрифт формул синим (это на любителя, конечно) End With Next i End If Next rCell Case vbNo ' разгруппировать все ячейки в Selection и ячейки каждой бывшей группы заполнить значениями из их первых ячеек For Each rCell In rRange If rCell.MergeCells Then sAddress = rCell.MergeArea.Address: sValue = rCell.Value: rCell.UnMerge Range(sAddress).Value = rCell.Value End If Next Case vbCancel 'If MsgBox("Разгруппировать стандартным способом?", vbYesNo + vbQuestion) = vbYes Then Selection.UnMerge End Select rRange.Select Application.ScreenUpdating = True End Sub |
|
|
|
12.11.2010 22:58:15
всем спасибо)
Alex_ST воспользовался вашым из предыдущей темы. а для чего используются ссылки на 1 ячейку вместо значений? |
|
|
|
Читают тему