Есть задача: удалить остатки растянутой формулы на все листы одной книги с помощью макроса (ибо руками +100 листов довольно долго).
Ниже прикладываю свое решение, однако оно ну очень медленное на больших объемах ;c Так как кроме формулы на строке которую нужно удалить ничего нет, проверка идет по другому столбцу таблицы:
Код
Sub sample()
Dim x As Range, sh As Worksheet, i&, LastRow&
For Each sh In ActiveWindow.SelectedSheets
sh.Activate
With ActiveSheet
LastRow = .UsedRange.Rows.Count - .UsedRange.Row + 1
For i = LastRow To 1 Step -1
If Trim$(.Cells(i, "D")) = "" Then .Rows(i).Delete Shift:=xlUp
Next
End With
Next sh
End Sub
Можно ли как-нибудь ускорить выполнение скрипта? Отключение обновления экрана дает лишь небольшой прирост в скорости. Файл с примером во вложении.
Пытаюсь разобрать данные по листам с помощью "Разобрать". Все отлично работает, однако слетает любая моя формула, которая ссылается на шапку (2 строки):
Код
=СУММПРОИЗВ(J3:AD3;$J$1:$AD$1)
, где J3:AD3 - данные из строки, $J$1:$AD$1 - соответственно данные в шапке.
Что в итоге получается:
Код
=СУММПРОИЗВ(J3:AD3;$J$3:$AD$3)
Видимо что-то вставляется в новые листы первым (шапка или данные) поэтому и съезжает формула. Есть ли какой-нибудь способ это обойти?
Необходимо скрыть одну строку (первую) на всех листах, находящихся в книге. Диапазон листов указывать долго, так как их довольно много. К сожалению, пример ниже не помог решить задачу:
Код
Sub test()
Dim sh as Worksheet
For Each Sh In ThisWorkbook.Worksheets
Sh.Rows('1:1').EntireRow.Hidden = True
Next
End Sub
Чего-нибудь другого, подходящего под условия я не нашла.
Пытаюсь придумать как можно отфильтровать сводную таблицу по множеству значений, попадающих под правило "больше или равно". Вот запись зажима фильтра сводной таблицы макро рекордером:
Код
ActiveSheet.PivotTables("Passes").PivotFields("Amount of points"). _
CurrentPage = "3500"
Все работает прекрасно, однако в нем можно выбрать только одно значение. Можно конечно записывать как я вручную снимаю ненужные значения, однако они каждый раз разные, поэтому этот вариант не подходит.
К сожалению, моих знаний не хватает чтобы зажать определенный диапазон значений, как >= 3500, а остальные скрыть. Кто-нибудь может помочь?