Страницы: 1
RSS
Сортировать с объединенными ячейками
 
здравствуйте!!!
помогите пожалуйста!!!!!!!!!! уже голову всю сломала как сделать...
есть таблица, в первом столбце - основное наименование, в последующих столбцах - данные к этому наименованию, но в несколько строк (соответственно эти строки в первом столбце - пустые).
как отсортировать?!?!?!?!?!?! естессно эксель объединенные ячейки сортировать не желает... а жаль...
 
Приведите таблицу в нормальный вид и работайте с ней в удовольствие. А объединенные ячейки - зло.
Я сам - дурнее всякого примера! ...
 
Цитата
kuklp написал:
Приведите таблицу в нормальный вид и работайте с ней в удовольствие. А объединенные ячейки - зло.
да мне нужно страны в алфавитном порядке поставить, но так, чтобы данные, которые справа от каждой страны, вместе с этими странами выстроились.
 
И как это противоречит посту №2?
Я сам - дурнее всякого примера! ...
 
Цитата
kuklp написал:
И как это противоречит посту №2?
1. убираю объединенные ячейки
2. названия стран ставятся в верхней строке каждого "раздела". тут все ок
3. выбираю первый столбец, сортирую в алфавитном порядке, ставлю галочку отсортировать близлежащие ячейки тоже
4. результат:
 
 
Цитата
kuklp написал:
Приведите таблицу в нормальный вид
Вот о чем я. В Приемах есть, как заполнить пустые значения вышестоящими.
http://www.planetaexcel.ru/techniques/2/96/
На втором скрине отсортировано в обратном порядке.
Изменено: kuklp - 12.04.2016 07:06:46
Я сам - дурнее всякого примера! ...
 
ищите макрос разбить объединенные с копированием значения объединенной ячейки, затем сортировка, потом обратный макрос объединяющий ячейки при условии соседних одинаковых, где то тут это на форуме встречалось
Лень двигатель прогресса, доказано!!!
 
С благодарностью к авторам данных макросов...
Разбить объединённые с заполнением
Код
Sub UnMerge_and_Fill()
'---------------------------------------------------------------------------------------
' Procedure : UnMerge_and_Fill
' Topic_HEADER : Снятие объединения ячеек с заполнением
' Topic_URL : http://www.planetaexcel.ru/forum.php?thread_id=3760
' Author: Дмитрий "The_Prist" Щербаков (http://www.excel-vba.ru/)
' Editor: Alex ST
' Purpose : Снимает объединение со всех ячеек выделенного диапазона
' и заполняет все разгруппированные ячейки КАЖДОЙ бывшей группы
' либо ссылками на значения верхней левой, либо её значениями
'---------------------------------------------------------------------------------------
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
Объединить одинаковые
Код
Sub Merge_Similar_in_Columns()
    If TypeName(Selection) <> "Range" Then Exit Sub
    If Selection.Cells.Count <= 1 Then Exit Sub
    Dim rColumn As Range, rCell As Range, sAddress$, rMerge As Range, rTarget As Range
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
    
    Set rTarget = Intersect(Selection, ActiveSheet.UsedRange)
    For Each rCell In rTarget
    If rCell.MergeCells Then
        sAddress = rCell.MergeArea.Address: rCell.UnMerge
        Range(sAddress).Value = rCell.Value
    End If
    Next
    rTarget.Select
    'Stop
    For Each rColumn In rTarget.Columns
    For Each rCell In rColumn.Cells
        If rMerge Is Nothing Then
            Set rMerge = rCell
        Else
            If rMerge(1).Value = rCell.Value Then
                Set rMerge = Union(rMerge, rCell): rMerge.Merge
            Else
                Set rMerge = rCell
            End If
        End If
    Next
    Set rMerge = Nothing
    Next
    
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
End Sub
Изменено: Jack_Famous - 12.04.2016 12:57:36
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
ребята! спасибо вам огромное!!!!!!! :-))))
Страницы: 1
Читают тему
Наверх