Microsoft Excel

  • doc
  • 14.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 92. Microsoft Excel.doc

Microsoft Excel

Автофильтр и расширенный фильтр

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

собственно вот код примера:

view plainprint?

1.        Sub ertert112()  

2.        Dim s$, r  

3.        Application.ScreenUpdating = False  

4.        With Sheets("Sheet4").Range("A1").CurrentRegion  

5.         .Parent.AutoFilterMode = False  

6.         For Each r In .Offset(1).Resize(.Rows.Count - 1).Columns(4).Value  

7.         If InStr(s, r) = 0 Then  

8.         If Not Evaluate("ISREF('" & r & "'!A1)"Then  

9.         Sheets.Add(after:=Sheets(Sheets.Count)).Name = r  

10.      Else  

11.      Sheets(r).UsedRange.ClearContents  

12.      End If  

13.      .AutoFilter 4, r  

14.      .Copy Sheets(r).Range("A1")  

15.      s = s & r  

16.      End If  

17.      Next  

18.      .AutoFilter  

19.     End With: Application.ScreenUpdating = True  

20.     End Sub  

а это отрывки-заготовки:

view plainprint?

1.        Dim s As String, r As Range ' массив в качестве критерия для автофильтра  

2.        With New Collection  

3.         On Error Resume Next  

4.         For Each r In ActiveSheet.ListObjects("Table1").DataBodyRange.Columns(2).SpecialCells(12)  

5.         If IsEmpty(.Item(r)) Then .Add r, r: s = s & "~" & r  

6.         Next  

7.        End WithOn Error GoTo 0  

8.        ActiveSheet.ListObjects("Table2").Range.AutoFilter 2, Split(Mid(s, 2), "~"), 7  

view plainprint?

1.        Dim lo As ListObject: Set lo = ActiveSheet.ListObjects(1)  

2.        lo.Range.AutoFilter ' разрешить/отменить автофильтр  

3.        'ActiveSheet.AutoFilterMode игнорирует фильтры в Таблицах (ListObject), поэтому:  

4.        MsgBox lo.ShowAutoFilter 'есть ли автофильтр в Таблице  

5.        lo.Range.AutoFilter Field:=2, Criteria1:="B"  

view plainprint?

1.        'отобразить все данные, если применен фильтр (FilterMode), если на листе вообще есть автофильтр (AutoFilterMode)  

2.        With ActiveSheet  

3.         If .AutoFilterMode Then If .FilterMode Then .ShowAllData  

4.        End With  

5.          

6.        With ActiveSheet 'или сразу так  

7.         If .FilterMode Then .ShowAllData  

8.        End With  

 


Скачано с www.znanio.ru