Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сортировка столбца с объединенными ячейками. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Сортировка столбца с объединенными ячейками.
Amator Дата: Понедельник, 26.05.2014, 17:04 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте уважаемые. Помогите с макросом для сортировки по дате (В4:В433). Если дата одинакова тогда по номеру ТТН (G4:G433). Может у кого есть пример. Спасибо.
К сообщению приложен файл: 3669328.xlsm (71.5 Kb)
 
Ответить
СообщениеЗдравствуйте уважаемые. Помогите с макросом для сортировки по дате (В4:В433). Если дата одинакова тогда по номеру ТТН (G4:G433). Может у кого есть пример. Спасибо.

Автор - Amator
Дата добавления - 26.05.2014 в 17:04
Amator Дата: Понедельник, 26.05.2014, 22:17 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
НЕУЖЕЛИ НЕТ РЕШЕНИЯ ЭТОЙ ЗАДАЧИ ? Помогите кто-нибудь.
 
Ответить
СообщениеНЕУЖЕЛИ НЕТ РЕШЕНИЯ ЭТОЙ ЗАДАЧИ ? Помогите кто-нибудь.

Автор - Amator
Дата добавления - 26.05.2014 в 22:17
Alex_ST Дата: Понедельник, 26.05.2014, 22:40 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3211
Репутация: 609 ±
Замечаний: 0% ±

2003
Кардинальное решение есть - избавляться от объединённых ячеек!
Объединённые ячейки - ЗЛО!!!
Если ещё не поздно, меняйте структуру данных.
Можно, конечно, применить и "костыль для увечного" - переформатировать объединённые ячейки так, чтобы можно было нормально фильтровать. Тогда, вполне возможно, можно будет и сортировать. Надо пробовать.
Например, переобъединить ячейки методом, описанным в топике Макрос "ReMerge", подпилив его таким образом, чтобы в скрываемых ячейках писалась не формула-ссылка на первую ячейку объединённого диапазона, а значения из неё (как это сделать, посмотрите в топике Макрос "MergePlus")
Но даже если и заработает, потом всё равно намучаетесь: стоит кому-нибудь разъединить хитро объединённую ячейку, как объединить её обратно так же как было он без макроса не сможет.
Объединённые ячейки - ЗЛО!!!



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 26.05.2014, 22:42
 
Ответить
СообщениеКардинальное решение есть - избавляться от объединённых ячеек!
Объединённые ячейки - ЗЛО!!!
Если ещё не поздно, меняйте структуру данных.
Можно, конечно, применить и "костыль для увечного" - переформатировать объединённые ячейки так, чтобы можно было нормально фильтровать. Тогда, вполне возможно, можно будет и сортировать. Надо пробовать.
Например, переобъединить ячейки методом, описанным в топике Макрос "ReMerge", подпилив его таким образом, чтобы в скрываемых ячейках писалась не формула-ссылка на первую ячейку объединённого диапазона, а значения из неё (как это сделать, посмотрите в топике Макрос "MergePlus")
Но даже если и заработает, потом всё равно намучаетесь: стоит кому-нибудь разъединить хитро объединённую ячейку, как объединить её обратно так же как было он без макроса не сможет.
Объединённые ячейки - ЗЛО!!!

Автор - Alex_ST
Дата добавления - 26.05.2014 в 22:40
Amator Дата: Вторник, 27.05.2014, 15:41 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Скажите ALEX ST .А как сделать таким образом . Создать временный лист . Скопировать в него нужный диапазон .Разъединить ячейки .Отсортировать. Обратно объединить. Скопировать на исходный лист. Временный лист удалить .
 
Ответить
СообщениеСкажите ALEX ST .А как сделать таким образом . Создать временный лист . Скопировать в него нужный диапазон .Разъединить ячейки .Отсортировать. Обратно объединить. Скопировать на исходный лист. Временный лист удалить .

Автор - Amator
Дата добавления - 27.05.2014 в 15:41
Amator Дата: Вторник, 27.05.2014, 16:07 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Alex_ST, посмотрите , пожалуйста сообщение №4
 
Ответить
СообщениеAlex_ST, посмотрите , пожалуйста сообщение №4

Автор - Amator
Дата добавления - 27.05.2014 в 16:07
RAN Дата: Вторник, 27.05.2014, 16:23 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщениеhttp://www.planetaexcel.ru/forum....s=Найти

Автор - RAN
Дата добавления - 27.05.2014 в 16:23
nilem Дата: Вторник, 27.05.2014, 17:18 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
... и совсем даже не зло (просто мороки больше):)
например:
[vba]
Код
Sub ertert()
Dim i&: Application.ScreenUpdating = False
With Range("A4:AD433")
     .UnMerge
     .Columns(31).Value = .Columns(2).Value
     .Columns(32).Value = .Columns(7).Value
     .Columns(31).Resize(, 2).SpecialCells(4).FormulaR1C1 = "=R[-1]C"
     With .Resize(, .Columns.Count + 2)
         .Sort Key1:=.Cells(1, 31), Order1:=xlAscending, _
               Key2:=.Cells(1, 32), Order2:=xlAscending
     End With
     .Columns(31).Resize(, 2).ClearContents
     For i = 1 To 430 Step 5
         .Cells(i, 1).Resize(5).Merge
         .Cells(i, 2).Resize(5).Merge
         .Cells(i, 7).Resize(5).Merge
     Next
End With
Application.ScreenUpdating = True
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение... и совсем даже не зло (просто мороки больше):)
например:
[vba]
Код
Sub ertert()
Dim i&: Application.ScreenUpdating = False
With Range("A4:AD433")
     .UnMerge
     .Columns(31).Value = .Columns(2).Value
     .Columns(32).Value = .Columns(7).Value
     .Columns(31).Resize(, 2).SpecialCells(4).FormulaR1C1 = "=R[-1]C"
     With .Resize(, .Columns.Count + 2)
         .Sort Key1:=.Cells(1, 31), Order1:=xlAscending, _
               Key2:=.Cells(1, 32), Order2:=xlAscending
     End With
     .Columns(31).Resize(, 2).ClearContents
     For i = 1 To 430 Step 5
         .Cells(i, 1).Resize(5).Merge
         .Cells(i, 2).Resize(5).Merge
         .Cells(i, 7).Resize(5).Merge
     Next
End With
Application.ScreenUpdating = True
End Sub
[/vba]

Автор - nilem
Дата добавления - 27.05.2014 в 17:18
Alex_ST Дата: Вторник, 27.05.2014, 21:29 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3211
Репутация: 609 ±
Замечаний: 0% ±

2003
Создать временный лист . Скопировать в него нужный диапазон .Разъединить ячейки .Отсортировать.

После разъединения ячеек данные останутся только в первой. В остальных - пусто. И как они (пустые ячейки) будут сортироваться?
Именно для того, чтобы в скрытых под объединением ячейках были прописаны данные (что обычный Excel не может и честно об этом предупреждает перед объединением не пустых ячеек) и предназначены макросы, на которые я давал ссылки.

4 nilem,
Николай, твой код видел, но не разбирал. Был бешеный день. Только сейчас залез в и-нет. Башка не варит абсолютно. Извини.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
Создать временный лист . Скопировать в него нужный диапазон .Разъединить ячейки .Отсортировать.

После разъединения ячеек данные останутся только в первой. В остальных - пусто. И как они (пустые ячейки) будут сортироваться?
Именно для того, чтобы в скрытых под объединением ячейках были прописаны данные (что обычный Excel не может и честно об этом предупреждает перед объединением не пустых ячеек) и предназначены макросы, на которые я давал ссылки.

4 nilem,
Николай, твой код видел, но не разбирал. Был бешеный день. Только сейчас залез в и-нет. Башка не варит абсолютно. Извини.

Автор - Alex_ST
Дата добавления - 27.05.2014 в 21:29
Amator Дата: Вторник, 27.05.2014, 23:08 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
RAN, Подставил данный код , работает не коректно. Посмотрите , пожалуйста .
К сообщению приложен файл: 5441868.xlsm (77.5 Kb)
 
Ответить
СообщениеRAN, Подставил данный код , работает не коректно. Посмотрите , пожалуйста .

Автор - Amator
Дата добавления - 27.05.2014 в 23:08
RAN Дата: Вторник, 27.05.2014, 23:23 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Этот код вроде nilem писал. <_<
Я тут с какого бока?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЭтот код вроде nilem писал. <_<
Я тут с какого бока?

Автор - RAN
Дата добавления - 27.05.2014 в 23:23
Alex_ST Дата: Вторник, 27.05.2014, 23:27 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3211
Репутация: 609 ±
Замечаний: 0% ±

2003
Нет, Андрей! Ты же профессионал и должен сам понять, из какого из указанных по твоей ссылке топиков и из какого из их постов Amator взял код, который у него не работает, и куда его вставил :)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеНет, Андрей! Ты же профессионал и должен сам понять, из какого из указанных по твоей ссылке топиков и из какого из их постов Amator взял код, который у него не работает, и куда его вставил :)

Автор - Alex_ST
Дата добавления - 27.05.2014 в 23:27
RAN Дата: Вторник, 27.05.2014, 23:35 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А че понимать то?
ertert кто еще пишет? :)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА че понимать то?
ertert кто еще пишет? :)

Автор - RAN
Дата добавления - 27.05.2014 в 23:35
nilem Дата: Среда, 28.05.2014, 09:27 | Сообщение № 13
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
работает не коректно. Посмотрите , пожалуйста .

Посмотрел, вроде все норм. Что именно не корректно?


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
работает не коректно. Посмотрите , пожалуйста .

Посмотрел, вроде все норм. Что именно не корректно?

Автор - nilem
Дата добавления - 28.05.2014 в 09:27
Amator Дата: Среда, 28.05.2014, 11:08 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
nilem, после сортировки бросает в конец диапазона. Файл в сообщение №9.
 
Ответить
Сообщениеnilem, после сортировки бросает в конец диапазона. Файл в сообщение №9.

Автор - Amator
Дата добавления - 28.05.2014 в 11:08
nilem Дата: Среда, 28.05.2014, 11:42 | Сообщение № 15
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
кажется, увидел
попробуйте так:
[vba]
Код
Sub ertert()
Dim i&, r As Range: Application.ScreenUpdating = False
With Range("A4:AD433")
     .UnMerge
     .Columns(31).Value = .Columns(2).Value
     .Columns(32).Value = .Columns(7).Value
     For Each r In .Columns(2).SpecialCells(2)
         r(2, 30).Resize(4, 2).FormulaR1C1 = "=R[-1]C"
     Next r
     With .Resize(, .Columns.Count + 2)
         .Sort Key1:=.Cells(1, 31), Order1:=xlAscending, _
               Key2:=.Cells(1, 32), Order2:=xlAscending
     End With
     .Columns(31).Resize(, 2).ClearContents
     For i = 1 To 430 Step 5
         .Cells(i, 1).Resize(5).Merge
         .Cells(i, 2).Resize(5).Merge
         .Cells(i, 7).Resize(5).Merge
     Next
End With
Application.ScreenUpdating = True
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениекажется, увидел
попробуйте так:
[vba]
Код
Sub ertert()
Dim i&, r As Range: Application.ScreenUpdating = False
With Range("A4:AD433")
     .UnMerge
     .Columns(31).Value = .Columns(2).Value
     .Columns(32).Value = .Columns(7).Value
     For Each r In .Columns(2).SpecialCells(2)
         r(2, 30).Resize(4, 2).FormulaR1C1 = "=R[-1]C"
     Next r
     With .Resize(, .Columns.Count + 2)
         .Sort Key1:=.Cells(1, 31), Order1:=xlAscending, _
               Key2:=.Cells(1, 32), Order2:=xlAscending
     End With
     .Columns(31).Resize(, 2).ClearContents
     For i = 1 To 430 Step 5
         .Cells(i, 1).Resize(5).Merge
         .Cells(i, 2).Resize(5).Merge
         .Cells(i, 7).Resize(5).Merge
     Next
End With
Application.ScreenUpdating = True
End Sub
[/vba]

Автор - nilem
Дата добавления - 28.05.2014 в 11:42
Amator Дата: Среда, 28.05.2014, 12:06 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
nilem, спасибо , код работает как надо .Нужна одна поправка : столбец "А" не трогать , потому что изменяется нумерация .Или чтоб код после сортировки сделал новую нумерацию в столбце "А".
 
Ответить
Сообщениеnilem, спасибо , код работает как надо .Нужна одна поправка : столбец "А" не трогать , потому что изменяется нумерация .Или чтоб код после сортировки сделал новую нумерацию в столбце "А".

Автор - Amator
Дата добавления - 28.05.2014 в 12:06
nilem Дата: Среда, 28.05.2014, 14:49 | Сообщение № 17
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
можно попробовать изменить индексы:
[vba]
Код
Sub ertert()
Dim i&, r As Range: Application.ScreenUpdating = False
With Range("B4:AD433")
     .UnMerge
     .Columns(30).Value = .Columns(1).Value
     .Columns(31).Value = .Columns(6).Value
     For Each r In .Columns(1).SpecialCells(2)
         r(2, 30).Resize(4, 2).FormulaR1C1 = "=R[-1]C"
     Next r
     With .Resize(, .Columns.Count + 2)
         .Sort Key1:=.Cells(1, 30), Order1:=xlAscending, _
               Key2:=.Cells(1, 31), Order2:=xlAscending
     End With
     .Columns(30).Resize(, 2).ClearContents
     For i = 1 To 430 Step 5
         .Cells(i, 1).Resize(5).Merge
         .Cells(i, 6).Resize(5).Merge
     Next
End With
Application.ScreenUpdating = True
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеможно попробовать изменить индексы:
[vba]
Код
Sub ertert()
Dim i&, r As Range: Application.ScreenUpdating = False
With Range("B4:AD433")
     .UnMerge
     .Columns(30).Value = .Columns(1).Value
     .Columns(31).Value = .Columns(6).Value
     For Each r In .Columns(1).SpecialCells(2)
         r(2, 30).Resize(4, 2).FormulaR1C1 = "=R[-1]C"
     Next r
     With .Resize(, .Columns.Count + 2)
         .Sort Key1:=.Cells(1, 30), Order1:=xlAscending, _
               Key2:=.Cells(1, 31), Order2:=xlAscending
     End With
     .Columns(30).Resize(, 2).ClearContents
     For i = 1 To 430 Step 5
         .Cells(i, 1).Resize(5).Merge
         .Cells(i, 6).Resize(5).Merge
     Next
End With
Application.ScreenUpdating = True
End Sub
[/vba]

Автор - nilem
Дата добавления - 28.05.2014 в 14:49
Amator Дата: Среда, 28.05.2014, 21:54 | Сообщение № 18
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 107
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
nilem, большое спасибо ! Работает отлично.
 
Ответить
Сообщениеnilem, большое спасибо ! Работает отлично.

Автор - Amator
Дата добавления - 28.05.2014 в 21:54
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!