Excel гиперссылка на фильтр

Гиперссылка плюс фильтр: два в одном.

Автор Лена21, 19.06.2013, 11:32

« назад — далее »

Здравствуйте.

У меня не получается решить в MsExcel следующий вопрос:

чтобы при нажатии на гиперссылку переходило на определенный лист в этой же книге (это вроде легко, у меня получилось) и главное — чтобы отображались не все строчки, а только отфильтрованные по определенному условию (например,  столбец А = «Магазин1»).

Можно ли организовать такой переход, используя только функцию «Гиперссылка» (либо другие функции), или же нужно использовать макросы?

Спасибо.

P.S. Извините за тупое название темы. Это первое, что пришло в голову.


Вот такой однострочный макрос решает задачу:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    ActiveSheet.Range("магазины").AutoFilter 1, Target.TextToDisplay
End Sub

Можно заморочиться без макросов и пользовательских функций, но тогда и данные в таблице по ссылке надо будет фильтровать (забирать из основной таблицы) формулами, т.к. фильтр и расширенный фильтр не обновляются автоматически.

Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли


Спасибо вам.
Это вроде то, что нужно. Намного удобнее, чем с присваивать макросы кнопкам.
И главный вопрос: как этот макрос перенести в свой документ?
Если простым копированием, то при запуске весь мой лист становится чистым.


Кажется, получается!
Простым перенесением кусков своего документа в ваш!
Спасибо еще раз.


Пожалуйста.
Макрос находится в модуле листа. Он вызывается по событию: переход по любой ссылке. Реакцию на другие события можно назначить, выбрав интересующее из списка доступных процедур (см. скрин).

Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли


Дабы не создавать новую тему оживлю эту, потому что задача похожая.
1. Есть исходные данные — перечень транзакций, у каждой есть признаки «период», «статья», «сумма». В примере они на листе «data»
2. Есть свод, который формируется по периодам и статьям, то есть суммирует все значения «сумма» для каждой пары «период»-«статья». В примере они на листе «total».

Собственно дальше задача: каждое значение на листе «total» должно быть гиперссылкой, нажатие на которую перебрасывает на лист «data» и применяет фильтр оставляя только те транзакции, которые сформировали значение (с которого совершен переход).

По сравнению с ранее предложенным решением разница в том, что фильтр должен быть применен не по содержимому текста гиперссылки, которое является динамическим, а по адресу ячейки, с которой совершается перевод. Для целей фильтрации на листе «data» добавлен столбец который определяет, в какую ячейку попадет каждая из транзакций.
Собственно интуиция мне подсказывает, что надо менять куски «ByVal Target As Hyperlink» и/или «Target.TextToDisplay», но на что их менять я не соображу.



  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • Гиперссылка плюс фильтр: два в одном.

Здравствуйте!
Столкнулся с такой задачей.
На листе «Исполнение договоров» есть столбцы ИД и КСГ. В них планируется сделать гиперссылки на соседние листы таким образом, что когда нажимаешь к примеру на 41N18D-10UHG-375-HS изм.2 в столбце ИД — открывается отфильтрованный список по этому наименованию на листе с Исходными данными, а если нажать на гиперссылку в КСГ с таким же наименованием 41N18D-10UHG-375-HS изм.2 — открывается отфильтрованный список на листе «Изготовление и поставка».

По первой задаче с ИД я нашел решение, вставив вот такой код в VBA:

[vba]

Код

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    ActiveSheet.Range(«ИД»).AutoFilter 2, Target.TextToDisplay
End Sub

[/vba]

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

Буду очень признателен за помощь и ценный совет!
Заранее спасибо!)

 

алекс

Пользователь

Сообщений: 18
Регистрация: 04.10.2021

Добрый день.
Подскажите пол можно ли создать гиперссылку из ячейки в таблице(на листе2) на таблицу на лист1 чтоб создавался автофильтр на листе 1 в зависимости от выбора условия на листе 2.
пример прилагаю.
К примеру при нажатии на листе 2 на количество отгруженных у контрагента вагонов нужно перейти на лист 1 с созданием фильтра с номерами вагонов которые отгрузил данный клиент в период времени указанный на листе 2(В1, С1). Ни как не могу найти как это сделать, кучу информации пересмотрел в инете… если можно без макросов(у меня МАС и почему то макросы не корректно работают). Спасибо заранее.

Прикрепленные файлы

  • Книга3.xlsx (35.61 КБ)

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

алекс, ну нет управления фильтром через гиперссылку без макросов, нет.

По вопросам из тем форума, личку не читаю.

 

алекс

Пользователь

Сообщений: 18
Регистрация: 04.10.2021

жаль… не поможете с макросом? тяжело у меня с ними…

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

Не совсем понятны критерии, ну даты допустим ок, а остальное? Где данный клиент?

По вопросам из тем форума, личку не читаю.

 

алекс

Пользователь

Сообщений: 18
Регистрация: 04.10.2021

контрагенты это клиенты(1,2,3,4) лист 1 это С, лист 2 это В.
в примере на листе 2 у клиента 1 на станции погрузка москва отгружен 1 вагон( столбец Е). Надо при нажатии на этот 1 (лист 2 столбец Е) вагон чтоб переходил на лист 1 и делал фильтр по клиенту 1 с указанием этого вагона в данный период. В дальнейшем хотелось бы чтоб тоже самое получалось и при нажатии на количество вагонов в подходе, наличии создавался фильтр и чтоб при нажатии на клиента тоже создавался фильтр со всеми вагонами(отгруженными, в подходе и наличии).

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

алекс,  то есть фильтр должен отработать по периоду указанному, только уточните по какому полю, номеру контрагента в строке в которой кликали и видимо с ненулевыми значениями по полу в столбце которого кликали. Так?

Изменено: БМВ24.08.2022 23:17:42

По вопросам из тем форума, личку не читаю.

 

алекс

Пользователь

Сообщений: 18
Регистрация: 04.10.2021

при выборе любого не нулевого значения в таблице на листе 2(B3:G6) фильтр должен быть создан на листе 1 по одному из выбранных полей(на какое ткунули, с учетом наименования клиента) из данных таблицы(на листе 1) учитывая период указанный на листе 2 в ячейках В2(начало периода) и С2(конец периода). Период важен для контрагентов(столбец В лист2), отгружено(столбец Е  лист2), наличие (столбец F лист2), подход (столбец G лист 2).

Прилаживаю пример как хотелось бы чтоб отработал  фильтр на листе 1 если бы ткунули на лист2 ячейку Е3 при периоде с 1.8.22 по 1.9.22

Прикрепленные файлы

  • Книга3.xlsx (35.68 КБ)

Изменено: алекс24.08.2022 23:36:38

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

#8

25.08.2022 00:03:21

В модуль листа 2

Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("E:G")) Is Nothing Then
    If Target.Row > 2 Then
        If Cells(Target.Row, 2).Value <> "" And Target <> 0 Then
            With Sheets("Ëèñò1")
                On Error Resume Next
                .ShowAllData
                On Error GoTo 0
            With .ListObjects("ÏË").Range
                .AutoFilter Field:=3, Criteria1:=Cells(Target.Row, 2)
                If Not Intersect(Target, Range("E:E")) Is Nothing Then
                    .AutoFilter Field:=9, Criteria1:= _
                ">" & Range("b1").Value2, Operator:=xlAnd, Criteria2:="<" & Range("c1").Value2
                ElseIf Not Intersect(Target, Range("F:F")) Is Nothing Then
                    .AutoFilter Field:=7, Criteria1:=">0"
                    .AutoFilter Field:=9, Criteria1:="="
                    .AutoFilter Field:=16, Criteria1:="="
                ElseIf Not Intersect(Target, Range("G:G")) Is Nothing Then
                    .AutoFilter Field:=5, Criteria1:=">0"
                    .AutoFilter Field:=7, Criteria1:="="
                End If
                End With
                .Activate
            End With
        End If
    End If
End If
End Sub

Двойной клик на ячеке

Изменено: БМВ25.08.2022 00:04:10

По вопросам из тем форума, личку не читаю.

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

БМВ, поправь:
1) With Sheets(«Ëèñò1») — тут в кавычках, наверное это Лист1
2) With .ListObjects(«IE»).Range — тут в кавычках, наверное, ПЛ. Там на листе всего одна таблица, поэтому можно просто цифру 1 в скобках написать, чтобы не привязываться к названию таблицы
3)  вот эти 3 строки
               On Error Resume Next
               .ShowAllData
               On Error GoTo 0
можно написать так
   If .FilterMode = True Then .ShowAllData

P.S. Приложу макрос от БМВ в файле

Прикрепленные файлы

  • алекс.xlsm (42.91 КБ)

Изменено: New25.08.2022 01:40:09

 

алекс

Пользователь

Сообщений: 18
Регистрация: 04.10.2021

Спасибо большое Вам, все работает(иногда подтупливает, но это видимо из за МАСа). Скажите а если три таблицы(есть отличия от таблицы на Листе 1) на трех листах и надо создать три таблицы(идентичные как на листе 2) надо создавать для каждой таблицы(как на листе 2) отдельный лист? или можно все уместить на одном листе?

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

#11

25.08.2022 07:46:21

Цитата
New написал:
поправь:

не буду :-)
c Filtermode был вариант но не записал и потом не вернул. Мне там многое не нравится. И жесткая привязка столбцам и именам, но городить что-то универсальное и времени и сил не было, да и желания так себе.

Цитата
алекс написал:
иногда подтупливает

в самом макросе тупить нечему.

Про таблици не совсем понятно, вопрос целей и задач по ним.

По вопросам из тем форума, личку не читаю.

 

алекс

Пользователь

Сообщений: 18
Регистрация: 04.10.2021

цели те же самые, из такой же таблицы как на листе 1 формируется таблица как на листе 2, разница в них(в таблицах) что род(модель условно) вагонов другой (для каждого рода на отдельном листе своя таблица с небольшими изменениями(доп поля и столбцы в другом расположении могут быть))

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

Ну чисто по описанию воспроизвести то или иное для других листов в зависимости от данных и ячейки по которй кликали не проблема.

По вопросам из тем форума, личку не читаю.

 

алекс

Пользователь

Сообщений: 18
Регистрация: 04.10.2021

#14

09.11.2022 13:41:22

Цитата
написал:

Цитата
New написал:
поправь:

не буду :-)
c Filtermode был вариант но не записал и потом не вернул. Мне там многое не нравится. И жесткая привязка столбцам и именам, но городить что-то универсальное и времени и сил не было, да и желания так себе.

Цитата
алекс написал:
иногда подтупливает

в самом макросе тупить нечему.

Про таблици не совсем понятно, вопрос целей и задач по ним.

Добрый день. Могу обратиться к Вам в личку для дописали макросов?

0 / 0 / 0

Регистрация: 29.06.2022

Сообщений: 8

1

Гиперссылка + фильтр. Переход на другой лист при нажатии на сумму в таблице

29.06.2022, 11:52. Показов 1063. Ответов 6


Студворк — интернет-сервис помощи студентам

Здравствуйте! Интересует макрос при котором можно осуществить следующую задумку: Есть таблица на листе ОСТАТКИ в ней столбцы Наименование (В), Поступление (F), Отгрузка(G), Списание(H). В столбцах Поступление, Отгрузка, Списание хранится сумма по каждой позиции из других листов. Нужен макрос при котором при нажатии на эту сумму на листе ОСТАТКИ например .(F4), а не наименование (B4), меня перекидывало бы на лист Приход где срабатывал бы фильтр по столбцу Наименование (В) в соответствии со столбцом Наименованием (B) на листе ОСТАТКИ. Нашла Макрос как перейти на фильтр только из столбца Наименование.1.xlsx



0



Vlad999

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,928

29.06.2022, 14:36

2

Лучший ответ Сообщение было отмечено Grnh как решение

Решение

код вставлять в модуль листа ОСТАТКИ. срабатывание на двойной клик по ячейке диапазона «F4:F27»

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Name As String
Cancel = True
'если активная ячейка не принодлежит диапазону "F4:F27" то выход из процедуры
If Intersect(Range("F4:F27"), Target) Is Nothing Then Exit Sub
 
Name = Target.Offset(, -4).Text
Sheets("Приход").Activate ' активируем лист Приход
ActiveSheet.Range("$A$3:$J$35").AutoFilter Field:=2 ' снимаем фильтр со 2-ого столбца таблицы
ActiveSheet.Range("$A$3:$J$35").AutoFilter Field:=2, Criteria1:=Name ' ставим фильтр во 2-ом столбце таблицы с критерием.
 
End Sub

Это хотели?



1



0 / 0 / 0

Регистрация: 29.06.2022

Сообщений: 8

29.06.2022, 14:53

 [ТС]

3

Спасибо огромное! Все отлично работает)

Добавлено через 7 минут
А если мне нужно будет добавить еще одну вкладку по тому же принципу, например «Расход» и столбец расходов на листе ОСТАТКИ?



0



3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,928

29.06.2022, 15:00

4

макрос нужно будет корректировать.



0



0 / 0 / 0

Регистрация: 29.06.2022

Сообщений: 8

29.06.2022, 15:11

 [ТС]

5

А не подскажите как?



0



Vlad999

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,928

29.06.2022, 15:14

6

Лучший ответ Сообщение было отмечено Grnh как решение

Решение

типа этого.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Name As String, NList As String
Cancel = True
'если активная ячейка не принодлежит диапазону "F4:H27" то выход из процедуры
If Intersect(Range("F4:H27"), Target) Is Nothing Then Exit Sub
 
Name = Cells(Target.Row, 2).Text
If Cells(3, Target.Column).Text = "Поступление" Then
    NList = "Приход"
    ElseIf Cells(3, Target.Column).Text = "Отгрузка" Then
        NList = "Расход"
        Else
        NList = "Списание"
End If
Sheets(NList).Activate ' активируем лист Приход
ActiveSheet.Range("$A$3:$J$35").AutoFilter Field:=2 ' снимаем фильтр со 2-ого столбца таблицы
ActiveSheet.Range("$A$3:$J$35").AutoFilter Field:=2, Criteria1:=Name ' ставим фильтр во 2-ом столбце таблицы с критерием.
 
End Sub



1



0 / 0 / 0

Регистрация: 29.06.2022

Сообщений: 8

29.06.2022, 15:19

 [ТС]

7

Большое спасибо!)



0



В Excel вы можете фильтровать данные по определенному тексту, числу или цвету шрифта, цвету фона, но пробовали ли вы когда-нибудь фильтровать все данные с помощью гиперссылок в столбце, как показано ниже? В этой статье я представляю VBA для быстрой фильтрации гиперссылок в Excel.

Фильтровать данные с помощью гиперссылок


Фильтровать данные с помощью гиперссылок

1. Нажмите Alt + F11 ключи для включения Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули, Скопируйте и вставьте приведенный ниже код в Модули окно.

VBA: фильтрация данных с помощью гиперссылок

  Sub HyperPicker()
'UpdatebyExtendoffice20180404
    Dim xRg As Range
    Dim xCell As Range
    On Error Resume Next
    Set xRg = Application.InputBox("Select a column:", "Kutools for Excel", Selection.Address, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    For Each xCell In xRg
        If xCell.Hyperlinks.Count = 0 Then
            xCell.EntireRow.Hidden = True
        End If
    Next
End Sub

doc filter hyperlink 3

3. Press F5 key to select a column to filter.

4. Click OK, only the hyperlinks are displayed.
doc filter hyperlink 4


The Best Office Productivity Tools

Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%

  • Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails…
  • Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range
  • Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns… Prevent Duplicate Cells; Compare Ranges
  • Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select…
  • Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more…
  • Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments
  • Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic…
  • Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF
  • More than 300 powerful features. Supports Office / Excel 2007-2021 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial. 60-day money back guarantee.

kte tab 201905

Read More… Free Download… Purchase… 


Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier

  • Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
  • Open and create multiple documents in new tabs of the same window, rather than in new windows.
  • Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!

officetab bottom

Read More… Free Download… Purchase… 

Comments (1)


No ratings yet. Be the first to rate!

Понравилась статья? Поделить с друзьями:
  • Excel гиперссылка на файл в той же папке
  • Excel гиперссылка на строку
  • Excel гиперссылка на почту
  • Excel гиперссылка на лист в другой книге
  • Excel гиперссылка на диаграмму