Добрый день! Нужна помощь опытных форумчан
Имеется таблица из трёх листов: "Лист1", "Лист2" и "Лист3".
На Лист1 в ячейке J15 имеется Раскрывающийся список со значениями: А, Б и В.
На всех листах первый столбец содержит значение: А, Б, В или пусто.
На всех листах пятая строка содержит значение: А, Б, В или пусто.
Необходим скрипт, который:
- скрывает строки и столбцы Б и В при выборе значения А из списка
- скрывает строки и столбцы В при выборе значения Б из списка
- скрывает строки и столбцы Б при выборе значения В из списка.
Все обозначения условные
В xlsm-файле у меня был такой скрипт (немного другая реализация, но он работал. Его и надо перенести в гугл-таблицы, добавив значение В):
[spoiler]Option Explicit
Option Base 1
Sub WorkSheet_Change(ByVal Target As Range)
Dim i&, j&, sh&, arr, s&, rng As Range
If Target.Address <> "$L$11" Then Exit Sub
Application.ScreenUpdating = False
s = Range("Q29").Value
Select Case s
Case 1: arr = Array("А")
Case 2: arr = Array("Б")
End Select
For sh = 2 To Worksheets.Count
With Sheets(sh)
.UsedRange.Rows.Hidden = False
.UsedRange.Columns.Hidden = False
'скрываем строки
Set rng = Nothing
For i = .UsedRange.Row To .Cells(.Rows.Count, 1).End(xlUp).Row
For j = 1 To UBound(arr)
If .Cells(i, 1) = arr(j) Then
If rng Is Nothing Then Set rng = .Rows(i) Else Set rng = Union(rng, .Rows(i))
End If
Next j
Next i
If Not rng Is Nothing Then rng.Rows.Hidden = True
'скрываем столбцы
Set rng = Nothing
For i = 1 To .Cells(2, .Columns.Count).End(xlToLeft).Column
For j = 1 To UBound(arr)
If .Cells(2, i) = arr(j) Then
If rng Is Nothing Then Set rng = .Columns(i) Else Set rng = Union(rng, .Columns(i))
End If
Next j
Next i
If Not rng Is Nothing Then rng.Columns.Hidden = True
End With
Next
Application.ScreenUpdating = True
End Sub
[/spoiler]
Имеется таблица из трёх листов: "Лист1", "Лист2" и "Лист3".
На Лист1 в ячейке J15 имеется Раскрывающийся список со значениями: А, Б и В.
На всех листах первый столбец содержит значение: А, Б, В или пусто.
На всех листах пятая строка содержит значение: А, Б, В или пусто.
Необходим скрипт, который:
- скрывает строки и столбцы Б и В при выборе значения А из списка
- скрывает строки и столбцы В при выборе значения Б из списка
- скрывает строки и столбцы Б при выборе значения В из списка.
Все обозначения условные
В xlsm-файле у меня был такой скрипт (немного другая реализация, но он работал. Его и надо перенести в гугл-таблицы, добавив значение В):
[spoiler]Option Explicit
Option Base 1
Sub WorkSheet_Change(ByVal Target As Range)
Dim i&, j&, sh&, arr, s&, rng As Range
If Target.Address <> "$L$11" Then Exit Sub
Application.ScreenUpdating = False
s = Range("Q29").Value
Select Case s
Case 1: arr = Array("А")
Case 2: arr = Array("Б")
End Select
For sh = 2 To Worksheets.Count
With Sheets(sh)
.UsedRange.Rows.Hidden = False
.UsedRange.Columns.Hidden = False
'скрываем строки
Set rng = Nothing
For i = .UsedRange.Row To .Cells(.Rows.Count, 1).End(xlUp).Row
For j = 1 To UBound(arr)
If .Cells(i, 1) = arr(j) Then
If rng Is Nothing Then Set rng = .Rows(i) Else Set rng = Union(rng, .Rows(i))
End If
Next j
Next i
If Not rng Is Nothing Then rng.Rows.Hidden = True
'скрываем столбцы
Set rng = Nothing
For i = 1 To .Cells(2, .Columns.Count).End(xlToLeft).Column
For j = 1 To UBound(arr)
If .Cells(2, i) = arr(j) Then
If rng Is Nothing Then Set rng = .Columns(i) Else Set rng = Union(rng, .Columns(i))
End If
Next j
Next i
If Not rng Is Nothing Then rng.Columns.Hidden = True
End With
Next
Application.ScreenUpdating = True
End Sub
[/spoiler]
