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

Вход

Регистрация

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

 

= Мир MS Excel/Автосортировка данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автосортировка данных (Макросы/Sub)
Автосортировка данных
Kenbroladeb Дата: Четверг, 08.01.2015, 22:24 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Добрый вечер всем. У меня снова появилась проблема с моей таблицей.
Мне нужна автоматическая сортировка данных и как я понял, она делается с помощью макроса.
От A:CF в листе 'Январь 2015' начиная с A3, по первому столбику.
Если по другому, в первом столбике вписываем фамилию и все строки сортируются по нему, от А до Я.
Перелазил много страничек в поиске решения, нашел различные кода, но они не применяются, возможно что-то делаю не так. Возможно из-за того что у меня таблица и диапазоны. Но у меня даже не загорается простая кнопка сортировки при выделении всех строк.
Прилагаю полную версию таблицы, так как пример думаю будет не актуален, что бы выявить ошибку.
[p.s.]извиняюсь за нарушение правил за ранее и спасибо всем, кто поможет.
К сообщению приложен файл: Excel.rar (94.0 Kb)
 
Ответить
СообщениеДобрый вечер всем. У меня снова появилась проблема с моей таблицей.
Мне нужна автоматическая сортировка данных и как я понял, она делается с помощью макроса.
От A:CF в листе 'Январь 2015' начиная с A3, по первому столбику.
Если по другому, в первом столбике вписываем фамилию и все строки сортируются по нему, от А до Я.
Перелазил много страничек в поиске решения, нашел различные кода, но они не применяются, возможно что-то делаю не так. Возможно из-за того что у меня таблица и диапазоны. Но у меня даже не загорается простая кнопка сортировки при выделении всех строк.
Прилагаю полную версию таблицы, так как пример думаю будет не актуален, что бы выявить ошибку.
[p.s.]извиняюсь за нарушение правил за ранее и спасибо всем, кто поможет.

Автор - Kenbroladeb
Дата добавления - 08.01.2015 в 22:24
RAN Дата: Четверг, 08.01.2015, 22:37 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Если очень хочется поставить защиту листа, то разрешайте при этом сортировку и фильтр.
И не будет вопросов, почему не работает. :)
В макрос добавить
[vba]
Код
AllowSorting:=True, AllowFiltering:=True
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЕсли очень хочется поставить защиту листа, то разрешайте при этом сортировку и фильтр.
И не будет вопросов, почему не работает. :)
В макрос добавить
[vba]
Код
AllowSorting:=True, AllowFiltering:=True
[/vba]

Автор - RAN
Дата добавления - 08.01.2015 в 22:37
Kenbroladeb Дата: Четверг, 08.01.2015, 22:40 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Оно и без защиты не работает.


Сообщение отредактировал Serge_007 - Пятница, 09.01.2015, 01:14
 
Ответить
СообщениеОно и без защиты не работает.

Автор - Kenbroladeb
Дата добавления - 08.01.2015 в 22:40
SLAVICK Дата: Четверг, 08.01.2015, 22:46 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Так у Вас на листе 5 таблиц - конечно ничего не получится. Преобразуйте их в обычный диапазон и поставьте обычный автофильтр.
К сообщению приложен файл: 7770441.rar (87.8 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеТак у Вас на листе 5 таблиц - конечно ничего не получится. Преобразуйте их в обычный диапазон и поставьте обычный автофильтр.

Автор - SLAVICK
Дата добавления - 08.01.2015 в 22:46
gling Дата: Четверг, 08.01.2015, 23:00 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2525
Репутация: 678 ±
Замечаний: 0% ±

2010
Цитата
В макрос добавить
А точнее в модуль книги
К сообщению приложен файл: 5211337.xlsm (42.8 Kb)


ЯД-41001506838083

Сообщение отредактировал gling - Четверг, 08.01.2015, 23:06
 
Ответить
Сообщение
Цитата
В макрос добавить
А точнее в модуль книги

Автор - gling
Дата добавления - 08.01.2015 в 23:00
Kenbroladeb Дата: Пятница, 09.01.2015, 01:04 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Действительно, убрал таблицы и заработало, но теперь автофильтр на нужные столбики поставить нужно, эх емае.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A:CF")) Is Nothing Then
           Range("A3:CF400").Sort Key1:=[a3]
       End If
End Sub
[/vba]
А можно как-то допилить макрос, что бы выделение оставалось на нем? Приведу пример. На A100 я написал фамилию Азаров, отсортировало его в A4 и теперь мне надо искать глазами куда его закинуло...


Сообщение отредактировал Kenbroladeb - Пятница, 09.01.2015, 01:17
 
Ответить
СообщениеДействительно, убрал таблицы и заработало, но теперь автофильтр на нужные столбики поставить нужно, эх емае.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A:CF")) Is Nothing Then
           Range("A3:CF400").Sort Key1:=[a3]
       End If
End Sub
[/vba]
А можно как-то допилить макрос, что бы выделение оставалось на нем? Приведу пример. На A100 я написал фамилию Азаров, отсортировало его в A4 и теперь мне надо искать глазами куда его закинуло...

Автор - Kenbroladeb
Дата добавления - 09.01.2015 в 01:04
SLAVICK Дата: Вторник, 13.01.2015, 00:25 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
но теперь автофильтр на нужные столбики поставить нужно, эх емае.

Что такое нужные столбики?

Поиск можно так:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String, c As Long
      s = Target.Value
      c = Target.Column
      If Not Intersect(Target, Range("A:CF")) Is Nothing Then
          Range("A3:CF400").Sort Key1:=[a3]
      End If
       'ПОИСК:
          Range(Cells(1, c), Cells(1000, c)).Find(What:=s, After:=Cells(1, c), LookIn:=xlValues, _
          LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
          MatchCase:=False, SearchFormat:=False).Activate
End Sub
[/vba]
К сообщению приложен файл: 7897742.rar (88.6 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 13.01.2015, 00:26
 
Ответить
Сообщение
но теперь автофильтр на нужные столбики поставить нужно, эх емае.

Что такое нужные столбики?

Поиск можно так:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String, c As Long
      s = Target.Value
      c = Target.Column
      If Not Intersect(Target, Range("A:CF")) Is Nothing Then
          Range("A3:CF400").Sort Key1:=[a3]
      End If
       'ПОИСК:
          Range(Cells(1, c), Cells(1000, c)).Find(What:=s, After:=Cells(1, c), LookIn:=xlValues, _
          LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
          MatchCase:=False, SearchFormat:=False).Activate
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 13.01.2015 в 00:25
Kenbroladeb Дата: Вторник, 13.01.2015, 22:52 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Что такое нужные столбики?

Мне фильтр нужен только на определенные столбики, т.е. поставил столбик не диапазоном, а таблицей и там можно фильтр поставить, а стандартным не выберешь отдельно, либо все, либо по 2 столба и не более...
За поиск огромное спасибо, намного удобней.
Ошибку выдает в [vba]
Код
Range(Cells(1, c), Cells(1000, c)).Find(What:=s, After:=Cells(1, c), LookIn:=xlValues, _
         LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
         MatchCase:=False, SearchFormat:=False).Activate
[/vba]
object variable or with block variable not set
В изменении 1 колонке сортирует, но если редактировать остальные, вылазит такая ошибка


Сообщение отредактировал Kenbroladeb - Среда, 14.01.2015, 00:54
 
Ответить
Сообщение
Что такое нужные столбики?

Мне фильтр нужен только на определенные столбики, т.е. поставил столбик не диапазоном, а таблицей и там можно фильтр поставить, а стандартным не выберешь отдельно, либо все, либо по 2 столба и не более...
За поиск огромное спасибо, намного удобней.
Ошибку выдает в [vba]
Код
Range(Cells(1, c), Cells(1000, c)).Find(What:=s, After:=Cells(1, c), LookIn:=xlValues, _
         LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
         MatchCase:=False, SearchFormat:=False).Activate
[/vba]
object variable or with block variable not set
В изменении 1 колонке сортирует, но если редактировать остальные, вылазит такая ошибка

Автор - Kenbroladeb
Дата добавления - 13.01.2015 в 22:52
SLAVICK Дата: Среда, 14.01.2015, 14:19 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
По поиску:
Замените
[vba]
Код
s = Target.Value
на    
s = Target.Text
[/vba] :D
Ошибка вылазила из за формата ячеек
т.е. поставил столбик не диапазоном, а таблицей и там можно фильтр поставить, а стандартным не выберешь отдельно, либо все, либо по 2 столба и не более...

я ничего не понял lol
Опишите конкретнее. Например:
Меняю ячейку С5 - нужно отсортировать диапазон А3:С1000 по столбцу С

Опишите несколько ситуаций, чтобы было понятно

Если нужно сортировать именно в отдельной таблице - попробуйте:


Можно отдельные диапазоны сортировать и без таблиц(даже при активном общем автофильтре):



Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Среда, 14.01.2015, 14:36
 
Ответить
СообщениеПо поиску:
Замените
[vba]
Код
s = Target.Value
на    
s = Target.Text
[/vba] :D
Ошибка вылазила из за формата ячеек
т.е. поставил столбик не диапазоном, а таблицей и там можно фильтр поставить, а стандартным не выберешь отдельно, либо все, либо по 2 столба и не более...

я ничего не понял lol
Опишите конкретнее. Например:
Меняю ячейку С5 - нужно отсортировать диапазон А3:С1000 по столбцу С

Опишите несколько ситуаций, чтобы было понятно

Если нужно сортировать именно в отдельной таблице - попробуйте:


Можно отдельные диапазоны сортировать и без таблиц(даже при активном общем автофильтре):


Автор - SLAVICK
Дата добавления - 14.01.2015 в 14:19
Kenbroladeb Дата: Среда, 14.01.2015, 14:50 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
По поиску:

Помогло, надеюсь не надоедаю вам, но есть еще 1 нюанс, если в любом столбике текст повторяется на каких-то строчках, тогда курсор (выделение) переносится на самую первую строчку с этим значением.
т.е.
Допустим, столбик F, в нем 500 строк, на первой строчке в F1 текст = "пилатес" и когда мы вводим такой же текст "пилатес" на любую другую строку (F499), тогда выделение прыгает аж на F1. Так же с удалением, если на F499 очищаем ячейку, тогда выделение прыгает тоже вверх, ища самую первую пустую ячейку, надо как-то подшаманить поиск, увы я не понимаю. А про фильтр пока мне не особо нужен, потом разберусь, но тоже спс -)
 
Ответить
Сообщение
По поиску:

Помогло, надеюсь не надоедаю вам, но есть еще 1 нюанс, если в любом столбике текст повторяется на каких-то строчках, тогда курсор (выделение) переносится на самую первую строчку с этим значением.
т.е.
Допустим, столбик F, в нем 500 строк, на первой строчке в F1 текст = "пилатес" и когда мы вводим такой же текст "пилатес" на любую другую строку (F499), тогда выделение прыгает аж на F1. Так же с удалением, если на F499 очищаем ячейку, тогда выделение прыгает тоже вверх, ища самую первую пустую ячейку, надо как-то подшаманить поиск, увы я не понимаю. А про фильтр пока мне не особо нужен, потом разберусь, но тоже спс -)

Автор - Kenbroladeb
Дата добавления - 14.01.2015 в 14:50
SLAVICK Дата: Среда, 14.01.2015, 15:25 | Сообщение № 11
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
с пустой ячейкой все просто:
[vba]
Код
If Target.Value <> "" Then ' запуск поиска если не удаление
[/vba]
А вот с дублями - сложнее - поскольку оно находит первое совпадение.
Можно искать и сортировать только по первому столбцу... там не должно быть повторений... для этого измените:


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Среда, 14.01.2015, 15:48
 
Ответить
Сообщениес пустой ячейкой все просто:
[vba]
Код
If Target.Value <> "" Then ' запуск поиска если не удаление
[/vba]
А вот с дублями - сложнее - поскольку оно находит первое совпадение.
Можно искать и сортировать только по первому столбцу... там не должно быть повторений... для этого измените:

Автор - SLAVICK
Дата добавления - 14.01.2015 в 15:25
Kenbroladeb Дата: Четверг, 15.01.2015, 00:53 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
SLAVICK, идеально, спасибо огромное -)
 
Ответить
СообщениеSLAVICK, идеально, спасибо огромное -)

Автор - Kenbroladeb
Дата добавления - 15.01.2015 в 00:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автосортировка данных (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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