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

Вход

Регистрация

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

 

= Мир MS Excel/Создание поиска с выводом на лист результатов - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Создание поиска с выводом на лист результатов
argx3x Дата: Вторник, 16.09.2025, 09:12 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
Доброго времени суток! Не могли бы вы мне помочь с созданием поиска по данным из таблицы? Благодаря данному форуму, нашел как сделать кнопку, но к сожалению не могу найти, что делать дальше с этой кнопкой и как достичь желаемого.

В примере есть лист "данные", на данном листе простая таблица. Столбец "С" пустой, я не знаю почему так получается, но так делает программа с которой достаются данные, потом они копируются в ексель.
Второй лист я назвал "поиск" на данном листе создал кнопку с "поиск" с помощью "элементы управления формы". Создал выпадающий список и перенес таблицу без данных с листа "данные".

Цель создать поиск на листе "поиск" с выводом результатов на лист "поиск" с временным интервалом по дате в 1 мес, 2 мес, 3 мес, 6 мес и за все время, так же очень хотелось бы что бы вывод данных происходил сверху сначала недавние данные а потом более старые, к примеру за 15 число сверху, а вниз уже 13 число, 10 и так далее. Вывод данных по дате должен браться из графы второе взвешивание столбец"Р"

Огромная просьба к участникам форума подскажите пожалуйста как можно это сделать или направьте к реализации цели. ексель 2016 года. Огромное вам спасибо!
К сообщению приложен файл: obrazec.xlsx (23.6 Kb)


Сообщение отредактировал argx3x - Вторник, 16.09.2025, 09:48
 
Ответить
СообщениеДоброго времени суток! Не могли бы вы мне помочь с созданием поиска по данным из таблицы? Благодаря данному форуму, нашел как сделать кнопку, но к сожалению не могу найти, что делать дальше с этой кнопкой и как достичь желаемого.

В примере есть лист "данные", на данном листе простая таблица. Столбец "С" пустой, я не знаю почему так получается, но так делает программа с которой достаются данные, потом они копируются в ексель.
Второй лист я назвал "поиск" на данном листе создал кнопку с "поиск" с помощью "элементы управления формы". Создал выпадающий список и перенес таблицу без данных с листа "данные".

Цель создать поиск на листе "поиск" с выводом результатов на лист "поиск" с временным интервалом по дате в 1 мес, 2 мес, 3 мес, 6 мес и за все время, так же очень хотелось бы что бы вывод данных происходил сверху сначала недавние данные а потом более старые, к примеру за 15 число сверху, а вниз уже 13 число, 10 и так далее. Вывод данных по дате должен браться из графы второе взвешивание столбец"Р"

Огромная просьба к участникам форума подскажите пожалуйста как можно это сделать или направьте к реализации цели. ексель 2016 года. Огромное вам спасибо!

Автор - argx3x
Дата добавления - 16.09.2025 в 09:12
_Boroda_ Дата: Вторник, 16.09.2025, 10:11 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16925
Репутация: 6618 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
А что ищем-то? С датами более-менее понятно - месяц (2, 3, 6, ...) от текущих дата-время. Или от заранее заданных?
А а оранжевой ячейке что?
Кстати, если таблица не сильно большая, то макрос не обязательно, можно все формулами сделать. И кнопка не понадобится)))
Вы бы сделали вручную примерчик того, что должно получиться. И пояснения, почему именно так. тогда все понятно сразу стало бы


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА что ищем-то? С датами более-менее понятно - месяц (2, 3, 6, ...) от текущих дата-время. Или от заранее заданных?
А а оранжевой ячейке что?
Кстати, если таблица не сильно большая, то макрос не обязательно, можно все формулами сделать. И кнопка не понадобится)))
Вы бы сделали вручную примерчик того, что должно получиться. И пояснения, почему именно так. тогда все понятно сразу стало бы

Автор - _Boroda_
Дата добавления - 16.09.2025 в 10:11
argx3x Дата: Вторник, 16.09.2025, 10:31 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
_Boroda_,
ищем транспорт столбец "В" на листа "данные". Даты от текущего времени, к примеру от сегодня 16,09,25 от от этого времени месяц два и так далее. В оранжевой ячейки номер транспорта который нужно найти. Таблица растет с каждым днем с начала года, в планах сделать на каждый год данную таблицу, боюсь что при накоплении данных за несколько лет компьютер не сможет с ней работать так она будет большая.
по поводу макросов или формулами я даже не знаю таблицей будут пользоваться такие же как я не образованные люди в данной теме.
сделал пример в оранжевой ячейки вводим что нужно найти нажимаем кнопку и получаем результат внизу
К сообщению приложен файл: obrazec.xlsx (23.9 Kb)
 
Ответить
Сообщение_Boroda_,
ищем транспорт столбец "В" на листа "данные". Даты от текущего времени, к примеру от сегодня 16,09,25 от от этого времени месяц два и так далее. В оранжевой ячейки номер транспорта который нужно найти. Таблица растет с каждым днем с начала года, в планах сделать на каждый год данную таблицу, боюсь что при накоплении данных за несколько лет компьютер не сможет с ней работать так она будет большая.
по поводу макросов или формулами я даже не знаю таблицей будут пользоваться такие же как я не образованные люди в данной теме.
сделал пример в оранжевой ячейки вводим что нужно найти нажимаем кнопку и получаем результат внизу

Автор - argx3x
Дата добавления - 16.09.2025 в 10:31
argx3x Дата: Вторник, 16.09.2025, 18:26 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
И снова здравствуйте! Прошу прощения что поднимаю тему. Весь день я искал информацию по своему вопросу, но так и ничего работоспособного не смог найти. Видимо мой вопрос узкой направленности. Пока не нашел подсказку попробовать обратится к ии. Создал макрос вроде работоспособный. Не могли бы вы проверить его? нет ли в нем какого вируса и ошибок.

[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

' Начинаем поиск (частичное совпадение)
With wsData.Columns("B")
Set foundCell = .Find(What:="*" & searchValue & "*", _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)

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]
К сообщению приложен файл: 222.xlsm (90.7 Kb)


Сообщение отредактировал argx3x - Вторник, 16.09.2025, 18:32
 
Ответить
СообщениеИ снова здравствуйте! Прошу прощения что поднимаю тему. Весь день я искал информацию по своему вопросу, но так и ничего работоспособного не смог найти. Видимо мой вопрос узкой направленности. Пока не нашел подсказку попробовать обратится к ии. Создал макрос вроде работоспособный. Не могли бы вы проверить его? нет ли в нем какого вируса и ошибок.

[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

' Начинаем поиск (частичное совпадение)
With wsData.Columns("B")
Set foundCell = .Find(What:="*" & searchValue & "*", _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)

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]

Автор - argx3x
Дата добавления - 16.09.2025 в 18:26
Pelena Дата: Вторник, 16.09.2025, 18:29 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19544
Репутация: 4638 ±
Замечаний: ±

Excel 365 & Mac Excel
argx3x, код оформляется с помощью кнопки #. Выделить и нажать #


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениеargx3x, код оформляется с помощью кнопки #. Выделить и нажать #

Автор - Pelena
Дата добавления - 16.09.2025 в 18:29
argx3x Дата: Вторник, 16.09.2025, 18:33 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

2016
Pelena, фух справился) Огромное спасибо!
 
Ответить
СообщениеPelena, фух справился) Огромное спасибо!

Автор - argx3x
Дата добавления - 16.09.2025 в 18:33
  • Страница 1 из 1
  • 1
Поиск:

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