Доброго времени суток! Не могли бы вы мне помочь с созданием поиска по данным из таблицы? Благодаря данному форуму, нашел как сделать кнопку, но к сожалению не могу найти, что делать дальше с этой кнопкой и как достичь желаемого.
В примере есть лист "данные", на данном листе простая таблица. Столбец "С" пустой, я не знаю почему так получается, но так делает программа с которой достаются данные, потом они копируются в ексель. Второй лист я назвал "поиск" на данном листе создал кнопку с "поиск" с помощью "элементы управления формы". Создал выпадающий список и перенес таблицу без данных с листа "данные".
Цель создать поиск на листе "поиск" с выводом результатов на лист "поиск" с временным интервалом по дате в 1 мес, 2 мес, 3 мес, 6 мес и за все время, так же очень хотелось бы что бы вывод данных происходил сверху сначала недавние данные а потом более старые, к примеру за 15 число сверху, а вниз уже 13 число, 10 и так далее. Вывод данных по дате должен браться из графы второе взвешивание столбец"Р"
Огромная просьба к участникам форума подскажите пожалуйста как можно это сделать или направьте к реализации цели. ексель 2016 года. Огромное вам спасибо!
Доброго времени суток! Не могли бы вы мне помочь с созданием поиска по данным из таблицы? Благодаря данному форуму, нашел как сделать кнопку, но к сожалению не могу найти, что делать дальше с этой кнопкой и как достичь желаемого.
В примере есть лист "данные", на данном листе простая таблица. Столбец "С" пустой, я не знаю почему так получается, но так делает программа с которой достаются данные, потом они копируются в ексель. Второй лист я назвал "поиск" на данном листе создал кнопку с "поиск" с помощью "элементы управления формы". Создал выпадающий список и перенес таблицу без данных с листа "данные".
Цель создать поиск на листе "поиск" с выводом результатов на лист "поиск" с временным интервалом по дате в 1 мес, 2 мес, 3 мес, 6 мес и за все время, так же очень хотелось бы что бы вывод данных происходил сверху сначала недавние данные а потом более старые, к примеру за 15 число сверху, а вниз уже 13 число, 10 и так далее. Вывод данных по дате должен браться из графы второе взвешивание столбец"Р"
Огромная просьба к участникам форума подскажите пожалуйста как можно это сделать или направьте к реализации цели. ексель 2016 года. Огромное вам спасибо!argx3x
А что ищем-то? С датами более-менее понятно - месяц (2, 3, 6, ...) от текущих дата-время. Или от заранее заданных? А а оранжевой ячейке что? Кстати, если таблица не сильно большая, то макрос не обязательно, можно все формулами сделать. И кнопка не понадобится))) Вы бы сделали вручную примерчик того, что должно получиться. И пояснения, почему именно так. тогда все понятно сразу стало бы
А что ищем-то? С датами более-менее понятно - месяц (2, 3, 6, ...) от текущих дата-время. Или от заранее заданных? А а оранжевой ячейке что? Кстати, если таблица не сильно большая, то макрос не обязательно, можно все формулами сделать. И кнопка не понадобится))) Вы бы сделали вручную примерчик того, что должно получиться. И пояснения, почему именно так. тогда все понятно сразу стало бы_Boroda_
_Boroda_, ищем транспорт столбец "В" на листа "данные". Даты от текущего времени, к примеру от сегодня 16,09,25 от от этого времени месяц два и так далее. В оранжевой ячейки номер транспорта который нужно найти. Таблица растет с каждым днем с начала года, в планах сделать на каждый год данную таблицу, боюсь что при накоплении данных за несколько лет компьютер не сможет с ней работать так она будет большая. по поводу макросов или формулами я даже не знаю таблицей будут пользоваться такие же как я не образованные люди в данной теме. сделал пример в оранжевой ячейки вводим что нужно найти нажимаем кнопку и получаем результат внизу
_Boroda_, ищем транспорт столбец "В" на листа "данные". Даты от текущего времени, к примеру от сегодня 16,09,25 от от этого времени месяц два и так далее. В оранжевой ячейки номер транспорта который нужно найти. Таблица растет с каждым днем с начала года, в планах сделать на каждый год данную таблицу, боюсь что при накоплении данных за несколько лет компьютер не сможет с ней работать так она будет большая. по поводу макросов или формулами я даже не знаю таблицей будут пользоваться такие же как я не образованные люди в данной теме. сделал пример в оранжевой ячейки вводим что нужно найти нажимаем кнопку и получаем результат внизуargx3x
И снова здравствуйте! Прошу прощения что поднимаю тему. Весь день я искал информацию по своему вопросу, но так и ничего работоспособного не смог найти. Видимо мой вопрос узкой направленности. Пока не нашел подсказку попробовать обратится к ии. Создал макрос вроде работоспособный. Не могли бы вы проверить его? нет ли в нем какого вируса и ошибок.
[vba]
Код
Sub Поиск_С_Фильтрацией() Dim searchValue As String Dim period As String Dim foundCell As Range Dim firstAddress As String Dim wsData As Worksheet Dim wsSearch As Worksheet Dim resultRow As Long Dim lastRow As Long Dim dateFilter As Date
' Определяем рабочие листы Set wsData = ThisWorkbook.Worksheets("данные") Set wsSearch = ThisWorkbook.Worksheets("поиск")
' Очищаем предыдущую область результатов With wsSearch.Range("A15:Z1000") .ClearContents .ClearFormats End With
' Получаем значение для поиска searchValue = wsSearch.Range("D7").Value period = wsSearch.Range("E7").Value
' Определяем дату фильтра Select Case period Case "1 месяц" dateFilter = Date - 30 Case "2 месяца" dateFilter = Date - 60 Case "3 месяца" dateFilter = Date - 90 Case "6 месяцев" dateFilter = Date - 180 Case "за все время" dateFilter = "01.01.1900" End Select
If Not foundCell Is Nothing Then firstAddress = foundCell.Address resultRow = 15 ' Начальная строка для вывода результатов
Do ' Проверяем соответствие дате If wsData.Cells(foundCell.Row, "P") >= dateFilter Then ' Копируем найденную строку на лист "поиск" wsData.Rows(foundCell.Row).Copy _ Destination:=wsSearch.Cells(resultRow, 1)
' Удаляем заливку у скопированных строк wsSearch.Cells(resultRow, 1).EntireRow.Interior.ColorIndex = xlNone resultRow = resultRow + 1 End If
Set foundCell = .FindNext(foundCell) Loop While Not foundCell Is Nothing And foundCell.Address <> firstAddress
' Сортируем результаты по дате (столбец P) от поздних к ранним lastRow = wsSearch.Cells(wsSearch.Rows.Count, 1).End(xlUp).Row wsSearch.Range("A15:P" & lastRow).Sort _ Key1:=wsSearch.Range("P15"), _ Order1:=xlDescending, _ Header:=xlNo
If lastRow = 14 Then wsSearch.Range("A15") = "Ничего не найдено" End If
Else wsSearch.Range("A15") = "Ничего не найдено" End If End With End Sub
[/vba]
И снова здравствуйте! Прошу прощения что поднимаю тему. Весь день я искал информацию по своему вопросу, но так и ничего работоспособного не смог найти. Видимо мой вопрос узкой направленности. Пока не нашел подсказку попробовать обратится к ии. Создал макрос вроде работоспособный. Не могли бы вы проверить его? нет ли в нем какого вируса и ошибок.
[vba]
Код
Sub Поиск_С_Фильтрацией() Dim searchValue As String Dim period As String Dim foundCell As Range Dim firstAddress As String Dim wsData As Worksheet Dim wsSearch As Worksheet Dim resultRow As Long Dim lastRow As Long Dim dateFilter As Date
' Определяем рабочие листы Set wsData = ThisWorkbook.Worksheets("данные") Set wsSearch = ThisWorkbook.Worksheets("поиск")
' Очищаем предыдущую область результатов With wsSearch.Range("A15:Z1000") .ClearContents .ClearFormats End With
' Получаем значение для поиска searchValue = wsSearch.Range("D7").Value period = wsSearch.Range("E7").Value
' Определяем дату фильтра Select Case period Case "1 месяц" dateFilter = Date - 30 Case "2 месяца" dateFilter = Date - 60 Case "3 месяца" dateFilter = Date - 90 Case "6 месяцев" dateFilter = Date - 180 Case "за все время" dateFilter = "01.01.1900" End Select