2016-02-05 3 views
0

У меня есть книга Excel с двумя листами, в основном настройка «один ко многим» между двумя листами. На первом листе перечислены несколько сот компаний, а на втором листе - список директоров компаний. Второй лист имеет автоматический фильтр, поэтому пользователи могут видеть членов совета для конкретной компании, выбранной из фильтра.Нажав гиперссылку в Excel, чтобы установить автофильтр на другом листе

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

Я предполагаю, что это потребует VBA и надеется, что кто-то может указать мне в правильном направлении для создания этого кода, чтобы решить эту проблему. Большое спасибо.

+0

Yep. Здесь нужен VBA. См. Событие «Worksheet_BeforeDoubleClick», затем сообщите пользователям, что двойной щелчок по ячейке выполнит действие. Если вам нужна дополнительная ** специальная ** помощь, вам нужно будет опубликовать код, который вы строите, и где он не работает. –

ответ

2

Вы можете сделать это, делая что-то это в модуле рабочего листа:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    'Update Table14 to your table name 
    'Update Field to column number of the field you are filtering 
    'Update Sheet7 to reference the sheet containing your table 
    'Change on to the column number where your click should cause this action 
    If ActiveCell.Column = 1 Then 
    Sheet7.ListObjects("Table14").Range.AutoFilter Field:=1, Criteria1:=ActiveCell.Value 
    'Update Sheet7 to reference the sheet containing your table 
    Sheet7.Activate 
    End If 
End Sub 
+0

Спасибо Джонатан, я вижу, как это работает. Я немного изменил ситуацию, чтобы включить ссылку в колонку справа от столбца названия компании. Я предполагаю, что для параметра Criteria1: item нужно будет ссылаться на активную ячейку только слева. – Jason

+0

Добро пожаловать. Да, он должен будет ссылаться на ячейку, у которой есть имя, которое вы хотите передать. Если вы хотите выбрать ячейку слева от того, что получает клик, вы можете использовать activecell.offset (0, -1) .value – Jonathan

+0

Последний вопрос. Если я хочу ограничить действия кликов определенным столбцом таблицы в моем листе компаний, как бы я это сделал? – Jason

0

Вам нужно открыть редактор Visual Basic, щелкните правой кнопкой мыши лист компании, вид кода, вставьте в:

Option Explicit 

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
     Dim CompanyName As String 

     If Selection.Count = 1 Then 
      If Not Intersect(Target, Range("C1").EntireColumn) Is Nothing Then 
       'This code is triggered when any 
       'ONE cell in column C is selected 
       'Simply change "C1" to "B1" etc etc 


       'This MsgBox returns the selected cell 
       MsgBox Target.Address 

       'You'll probably need to collect some information 
       'in this section. You can then use this to affect 
       'the filters on sheet 2. 
       'Perhaps like this 
       CompanyName = Cells(Target.Row, 1).Value 
       MsgBox CompanyName 

       'This changes to "Sheet2" 
       Sheets("Sheet2").Activate 

      End If 
     End If 
    End Sub 

Надежда, что помогает, и вы можете сделать что-то из него

Смежные вопросы