У меня есть центральная база данных в Excel
, которая использует определенные значения, введенные в Column B
, и скрывает / отображает другие релевантные Columns
на основе этого значения.Это работало нормально, пока я не вставил отдельные формулы, которые копируют разные значения в соответствующие sheets
.
Например, если A
было введено в Column B
, оно должно было бы Columns D:E
.Затем отдельный formula
скопировал бы row
в отдельный sheet
, который содержал все A's
.
Проблема в том, что этот макрос теперь занимает много времени.Я отключил формулы, чтобы они запускались вручную, но это не помогает.Вот пример макроса, который скрывает / показывает столбцы.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
On Error GoTo safe_exit
Application.EnableEvents = False
Dim t As Range
For Each t In Intersect(Target, Range("B:B"))
Select Case (t.Value)
Case "A"
Columns("B:BQ").EntireColumn.Hidden = False
Columns("H:AD").EntireColumn.Hidden = True
Columns("AF:BL").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "B"
Columns("B:BQ").EntireColumn.Hidden = False
Columns("F:G").EntireColumn.Hidden = True
Columns("P:BP").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "C"
Columns("B:BQ").EntireColumn.Hidden = False
Columns("F:O").EntireColumn.Hidden = True
Columns("T:BL").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "D"
Columns("B:BP").EntireColumn.Hidden = False
Columns("E:S").EntireColumn.Hidden = True
Columns("AB:BL").EntireColumn.Hidden = True
Columns("BN:BP").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "E"
Columns("B:BQ").EntireColumn.Hidden = False
Columns("D:AB").EntireColumn.Hidden = True
Columns("AF:BO").EntireColumn.Hidden = True
Case "F"
Columns("B:BP").EntireColumn.Hidden = False
Columns("E:AE").EntireColumn.Hidden = True
Columns("AN:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "G"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:BJ").EntireColumn.Hidden = True
Columns("BL:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "H"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:BJ").EntireColumn.Hidden = True
Columns("BL:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "I"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "J"
Columns("B:BP").EntireColumn.Hidden = False
Columns("E:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "K"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "L"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "M"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "N"
Columns("B:BP").EntireColumn.Hidden = False
Columns("E:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "O"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:BJ").EntireColumn.Hidden = True
Columns("BM:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "P"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:AM").EntireColumn.Hidden = True
Columns("AO:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "Q"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:BL").EntireColumn.Hidden = True
Columns("BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "R"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:AN").EntireColumn.Hidden = True
Columns("AP:BM").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "S"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:AO").EntireColumn.Hidden = True
Columns("AQ:BM").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "T"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:AN").EntireColumn.Hidden = True
Columns("AP:BM").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "U"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:AP").EntireColumn.Hidden = True
Columns("BB:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
Case "V"
Columns("B:BP").EntireColumn.Hidden = False
Columns("F:BA").EntireColumn.Hidden = True
Columns("BK:BN").EntireColumn.Hidden = True
Columns("BQ").EntireColumn.Hidden = True
'do nothing
End Select
Next t
ActiveWindow.Zoom = 100 '<<<
End If
safe_exit:
Application.EnableEvents = True
End Sub
Это формула:
=IF(IFERROR(INDEX('XXXXX'!B$5:B$9963,MATCH($A5,'XXXXX'!$A$5:$A$9963,0)),"")="","",INDEX('XXXXX'!B$5:B$9963,MATCH($A5,'XXXXX'!$A$5:$A$9963,0)))
База данных содержит около 3000 строк.Размер файла составляет около 7-8 МБ.Я удалил все формулы, но такая же задержка существует.Я удалил 2000 строк данных, и это сделало это быстрее.Но это не так уж важно, чтобы что-то изменить?
Файл предоставляется через OneDrive многочисленным пользователям, использующим его в режиме реального времени.С тех пор пользователь упомянул, что не может открыть файл вообще.Вылетает при открытии.Может ли это быть совпадением, а неработающая связь порождает коррупцию?