Добрый День. Имеется таблица, которую приходится каждый раз сортировать и редактировать вручную. Хотелось бы поинтересоваться у знатоков, как автоматизировать этот процесс через макрос? Подробнее: Сортируемый диапазон с 3 строки до первой пустой строчки. Сортируются все столбцы 1. Сортировка по столбцу Q и удаление всех значения от 1 до 20 2. Сортировка по столбцу R и удаление всех значения меньше 1.4 3. Через функцию "Удалить дубликаты" удаление всех копий, которые одинаковые в столбцах P, Q, T, W, X 4. Сортировать по значению R, затем по S
Добрый День. Имеется таблица, которую приходится каждый раз сортировать и редактировать вручную. Хотелось бы поинтересоваться у знатоков, как автоматизировать этот процесс через макрос? Подробнее: Сортируемый диапазон с 3 строки до первой пустой строчки. Сортируются все столбцы 1. Сортировка по столбцу Q и удаление всех значения от 1 до 20 2. Сортировка по столбцу R и удаление всех значения меньше 1.4 3. Через функцию "Удалить дубликаты" удаление всех копий, которые одинаковые в столбцах P, Q, T, W, X 4. Сортировать по значению R, затем по Srever27
Спасибо за функцию. Но мне сложновато сопоставить все вместе, когда в VBA полный 0. Макрорекордером воспользовался, но он записывает последовательность моих действий, т.е. на другом листе, с другим диапазоном он уже не будет работать
Спасибо за функцию. Но мне сложновато сопоставить все вместе, когда в VBA полный 0. Макрорекордером воспользовался, но он записывает последовательность моих действий, т.е. на другом листе, с другим диапазоном он уже не будет работатьrever27
rever27, определить координаты выделенной ячейки на листе проще так
[vba]
Код
dim x dim y
x = ActiveCell.Row ' номер строки y = ActiveCell.Column ' номер колонки
[/vba]
из вашего сообщения не ясно по какому условию сортировка производится? также какие условия должны выполнятся при удалении дубликатов (удаляется вся строка?)
rever27, определить координаты выделенной ячейки на листе проще так
[vba]
Код
dim x dim y
x = ActiveCell.Row ' номер строки y = ActiveCell.Column ' номер колонки
[/vba]
из вашего сообщения не ясно по какому условию сортировка производится? также какие условия должны выполнятся при удалении дубликатов (удаляется вся строка?)SAGE
из вашего сообщения не ясно по какому условию сортировка производится? также какие условия должны выполнятся при удалении дубликатов (удаляется вся строка?)
Да, удалятся должна вся строка. Суть в том, что я ставлю курсор на ту строчку, с которой я хочу удалить дубликаты, в моем случае это O3, макрос должен выделить всю строку полностью и столбец до первой пустой ячейки (ибо там потом пойдет отчерк и новые данные). далее он должен сравнить значения каждого столбца (P, Q, T, W, X), и при совпадении всех 5 условий - удалить их. (К примеру это строки с 12 по 15.
из вашего сообщения не ясно по какому условию сортировка производится? также какие условия должны выполнятся при удалении дубликатов (удаляется вся строка?)
Да, удалятся должна вся строка. Суть в том, что я ставлю курсор на ту строчку, с которой я хочу удалить дубликаты, в моем случае это O3, макрос должен выделить всю строку полностью и столбец до первой пустой ячейки (ибо там потом пойдет отчерк и новые данные). далее он должен сравнить значения каждого столбца (P, Q, T, W, X), и при совпадении всех 5 условий - удалить их. (К примеру это строки с 12 по 15.rever27
Расшифруйте! И проверьте, может так надо. Буду не скоро
Кнопка SORT очень полезная! Спасибо. Но как сделать, чтобы она сортировала значения только от ячейки под кнопкой до первой пустой строки? Как писал выше, таблица будет состоять из нескольких частей, и работу нужно будет производить над каждой. Поэтому хотелось бы, чтобы макрос начинал работу именно от положения выделенной ячейки, и использовал данный всей строки, но ограничивал столбцы.
Макрос Кнопка!_Щелкнуть у меня не запустился. "Не удается выполнить макрос. Возможно, этот макрос отсутствует в текущей книге". Скопировал его и в лист, и в другую книгу - результата 0
Расшифруйте! И проверьте, может так надо. Буду не скоро
Кнопка SORT очень полезная! Спасибо. Но как сделать, чтобы она сортировала значения только от ячейки под кнопкой до первой пустой строки? Как писал выше, таблица будет состоять из нескольких частей, и работу нужно будет производить над каждой. Поэтому хотелось бы, чтобы макрос начинал работу именно от положения выделенной ячейки, и использовал данный всей строки, но ограничивал столбцы.
Макрос Кнопка!_Щелкнуть у меня не запустился. "Не удается выполнить макрос. Возможно, этот макрос отсутствует в текущей книге". Скопировал его и в лист, и в другую книгу - результата 0rever27
Сообщение отредактировал rever27 - Среда, 13.05.2015, 11:04
Wasilic Спасибо за труды. Но вариант не совсем тот. Он удаляет только ячейки, расположенные рядом друг с другом.
Добавлено. Все оказалось проще и красивее, чем я думал. Методом Тыка додумал вот такой код: [vba]
Код
Sub b_RemoveDuplicates()
Dim r As Long, rng As Range Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Range(ActiveCell, Selection.End(xlDown).EntireRow).RemoveDuplicates Columns:=Array(18), Header:=xlNo
For r = 1 To ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count If Application.CountA(Rows(r)) = 0 Then If rng Is Nothing Then Set rng = Rows(r) Else Set rng = Union(rng, Rows(r)) End If Next r If Not rng Is Nothing Then rng.Delete
Application.ScreenUpdating = True Application.EnableEvents = True End Sub
[/vba]
Wasilic Спасибо за труды. Но вариант не совсем тот. Он удаляет только ячейки, расположенные рядом друг с другом.
Добавлено. Все оказалось проще и красивее, чем я думал. Методом Тыка додумал вот такой код: [vba]
Код
Sub b_RemoveDuplicates()
Dim r As Long, rng As Range Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Range(ActiveCell, Selection.End(xlDown).EntireRow).RemoveDuplicates Columns:=Array(18), Header:=xlNo
For r = 1 To ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count If Application.CountA(Rows(r)) = 0 Then If rng Is Nothing Then Set rng = Rows(r) Else Set rng = Union(rng, Rows(r)) End If Next r If Not rng Is Nothing Then rng.Delete
Application.ScreenUpdating = True Application.EnableEvents = True End Sub