Я получаю отчет об организации работы и хочу найти и отфильтровать по уникальному значению идентификатора. Уникальный фильтруемый идентификатор определяется свойством publi c (этот номер используется в другом случае, поэтому он публикуется c), вводимым через текстовое поле в пользовательской форме.
- Пользователь вводит уникальный идентификатор менеджера, которого он хочет фильтровать, в поле
- Используйте уникальный идентификатор, чтобы определить, какой столбец уровня менеджера имеет уникальный идентификатор
- Перейти к следующему столбцу, если Идентификатор не найден
- Как только идентификатор найден, столбец фильтра
Существует 9 различных уровней менеджера, по которым я фильтрую, столбцы AU, AW, AY, BA, B C , BE, BG, BI и BK, и все они располагаются в строке 3. Поэтому у меня есть столбцы «A3: BK3», но я выполняю фильтрацию только между «AU3: BK3» для извлечения данных из более ранних столбцов.
++++++Open File Dialog:
```
Private Sub SelectButton_Click()
Dim SelectedFile As String
SelectedFile = Application.GetOpenFilename()
SelectedFiletxtbox = SelectedFile
End Sub
```
++++++Public Property Code:
```
Public Property Get OpenFileTxt() As String
OpenFileTxt = SelectedFiletxtbox.Value
End Property
```
++++++Execution Piece:
```
Private Sub EmailButton_Click()
'Workbooks.Open OpenFile
Application.ScreenUpdating = False
If Len(Trim(Me.EnterWWIDtxtbox.Text)) = 0 Then
Me.EnterWWIDtxtbox.SetFocus
MsgBox "Must provide a Unique ID"
Exit Sub
End If
'WWID = Trim(Me.EnterWWIDtxtbox.Text)
'Path to be pulled from open file dialog as reports are dynamic
Dim ws As Worksheet
Dim wb As Workbook
Set wb = Workbooks.Open(Filename:=OpenFileTxt)
Set ws = wb.Worksheets("Sheet1")
Dim aColumns() As String
aColumns = Split("AU,AW,AY,BA,BC,BE,BG,BI,BK", ",")
Dim bFound As Boolean
bFound = False
Dim rFound As Range
Dim vColumn As Variant
For Each vColumn In aColumns
Set rFound = ws.Columns(vColumn).Find(WWID, , xlValues, xlPart)
If Not rFound Is Nothing Then
bFound = True
MsgBox "Found [" & WWID & "] in column " & vColumn
With ws.Columns(vColumn)
.AutoFilter 1, rFound.Value
MsgBox "filtered"
'Do stuff with the filtered data here
End With
Exit For
End If
Next vColumn
If bFound = False Then MsgBox "Unique ID [" & WWID & "] not found"
'Filter by Region Selected
'Range("AG3").AutoFilter Field:=33, Criteria1:=Region
Unload DistrUserForm
'Open E-Mail
Application.ScreenUpdating = True
End Sub
```