|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2016 - Отфильтровать ненужную информацию в Excel |
|
|
2016 - Отфильтровать ненужную информацию в Excel
|
Старожил Сообщения: 150 |
Профиль | Отправить PM | Цитировать
Здравствуйте! Возникла потребность в приложенном .xls документе сделать фильтрацию какого плана: например, от слов "ООО ЗСТ" до "Всего по: ООО ЗСТ" выделить строки и удалить их. Дело в том, что вручную удалить по всему документу очень долго, а документов таких множество, я ищу какое то средство автоматизации. Версия Excel 2016. Как это можно сделать ? Заранее спасибо!
|
|
Отправлено: 10:19, 16-02-2018 |
Динохромный Сообщения: 690
|
Профиль | Отправить PM | Цитировать Цитата Swit0:
Скрытый текст
Public Sub selection_for_deleting() Dim rngStart As Range, rngEnd As Range Dim strStart As String, strEnd As String strStart = InputBox("Введите верхнюю строчку", "Поиск", "ООО ЗСТ") strEnd = InputBox("Введите нижнюю строчку", "Поиск", "Всего по: ООО ЗСТ") Set rngStart = Cells.Find(What:=strStart, After:=ActiveSheet.Cells(1, 1), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Set rngEnd = ActiveSheet.Cells.Find(What:=strEnd, After:=rngStart, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Range(rngStart, rngEnd).EntireRow.Select Set rngStart = Nothing Set rngEnd = Nothing End Sub Цитата Swit0:
Соответственно - поиск нужен по всей книге, или достаточно текущего листа? |
||
Отправлено: 10:45, 16-02-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 150
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:48, 16-02-2018 | #3 |
Динохромный Сообщения: 690
|
Профиль | Отправить PM | Цитировать В экселе нажмите alt+f11, откроется окно редактора VBA. В левой части найдите thisworkbook, щелкните по нему два раза, чтобы открылось его содержимое (пустой белый лист). Скопируйте код туда (при копировании раскладка должна стоять русская, иначе
|
Отправлено: 13:00, 16-02-2018 | #4 |
Модератор Сообщения: 16830
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Swit0:
|
||
------- Отправлено: 16:20, 16-02-2018 | #5 |
Старожил Сообщения: 150
|
Профиль | Отправить PM | Цитировать Добрый день! Спасибо, получилось. А если мне нужно указать несколько организаций через запятую, без поиска. Т.е например надо выделить ООО ЗСТ, потом ООО ДБГ, и таких несколько, то как поступить? Заранее спасибо.
|
Отправлено: 10:58, 20-02-2018 | #6 |
Динохромный Сообщения: 690
|
Профиль | Отправить PM | Цитировать Цитата Swit0:
Public Sub naming_for_deleting() Dim rngStart As Range, rngEnd As Range, i As Integer Dim strStart As String, strEnd As String, strF As String, strErr As String, vrtTxt As Variant strF = InputBox("Введите через запятую (с пробелом) перечень", "Поиск", "ООО ЗСТ, ООО ВВВВ, ООО ООО, ООО МММ") vrtTxt = Split(strF, ", ") On Error Resume Next For i = LBound(vrtTxt) To UBound(vrtTxt) strStart = vrtTxt(i) strEnd = "Всего по: " & vrtTxt(i) Set rngStart = Cells.Find(What:=strStart, After:=ActiveSheet.Cells(1, 1), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Set rngEnd = ActiveSheet.Cells.Find(What:=strEnd, After:=rngStart, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) If Err.Number <> 0 Then strErr = strErr & strStart & "," Err.Clear Else ActiveWorkbook.Names.Add Name:=Replace(strStart, " ", "_"), RefersTo:="=" & ActiveSheet.Name & "!" & Range(rngStart, rngEnd).EntireRow.Address End If Set rngStart = Nothing Set rngEnd = Nothing Next i If strErr <> "" Then MsgBox "Не найдены следующие запросы:" & strErr End Sub |
|
Отправлено: 13:43, 20-02-2018 | #7 |
Старожил Сообщения: 150
|
Профиль | Отправить PM | Цитировать a_axe, благодарствую! А возможно ли сразу выделить диапазон организаций? Т.е имитация того, что если бы я их с CTRL мышкой выделял. Потом глазами пробегу по документу, если ок, то CTRL минус. Конечная цель - очистить документ от ненужных организаций.
|
Отправлено: 14:42, 20-02-2018 | #8 |
Динохромный Сообщения: 690
|
Профиль | Отправить PM | Цитировать Цитата Swit0:
Public Sub select_all_for_deleting() Dim rngStart As Range, rngEnd As Range, i As Integer, rngAll As Range Dim strStart As String, strEnd As String, strF As String, strErr As String, vrtTxt As Variant strF = InputBox("Введите через запятую (с пробелом) перечень", "Поиск", "ООО ЗСТ, ООО ВВВВ, ООО ООО, ООО МММ") vrtTxt = Split(strF, ", ") On Error Resume Next For i = LBound(vrtTxt) To UBound(vrtTxt) strStart = vrtTxt(i) strEnd = "Всего по: " & vrtTxt(i) Set rngStart = Cells.Find(What:=strStart, After:=ActiveSheet.Cells(1, 1), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) Set rngEnd = ActiveSheet.Cells.Find(What:=strEnd, After:=rngStart, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) If Err.Number <> 0 Then strErr = strErr & strStart & "," Err.Clear Else If rngAll Is Nothing Then Set rngAll = Range(rngStart, rngEnd).EntireRow Else Set rngAll = Union(rngAll, Range(rngStart, rngEnd).EntireRow) End If Set rngStart = Nothing Set rngEnd = Nothing Next i If strErr <> "" Then MsgBox "Не найдены следующие запросы:" & strErr rngAll.Select Set rngAll = Nothing End Sub |
|
------- Отправлено: 14:53, 20-02-2018 | #9 |
Старожил Сообщения: 150
|
Профиль | Отправить PM | Цитировать a_axe, добрый день, спасибо. К сожалению, как оказалось в дальнейшем форма отчета меняется, там уже нет графы "Всего по:" и дифференцировать организацию не удастся. Она начинается с заголовка уже другой организации.
|
Отправлено: 08:55, 21-02-2018 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Debian/Ubuntu - [решено] отфильтровать файлы а затем удалить. | Trinux | Общий по Linux | 12 | 27-06-2013 18:13 | |
2008 R2 - отфильтровать журнал логирования | Trinux | Windows Server 2008/2008 R2 | 3 | 27-05-2013 16:40 | |
.NET - [решено] Как извлечь информацию с одного столбца Excel-документа | Marsella_88 | Программирование и базы данных | 5 | 25-05-2012 15:46 | |
[решено] Использовать информацию из Excel документа | Не флужу | AutoIt | 2 | 24-03-2010 17:50 |
|