Как я могу очистить содержимое (только) скрытых ячеек в Excel (а не удалить их)? - PullRequest
0 голосов
/ 07 мая 2019

(контекст: я много знаю о написании сложных формул в Excel, но очень хорошо разбираюсь в VBA. Я удивлен, что не смог найти решение проблемы, которую пытаюсь решить самостоятельно, что заставляет насинтересно, есть ли что-то в Excel, что делает это невозможным).Я хотел бы представить, что многие другие сочли бы это столь же полезным, как и я, потому что я уверен, что многие люди получают раздутые шаблоны Excel.

У меня есть шаблон Excel с множеством ячеек на различных рабочих листах спредварительно заполненные формулы, которые обновляются на основе выгрузки изменяющегося набора данных в одну рабочую таблицу.Я использую шаблон для различных «проектов», которые не все требуют использования всех ячеек, предварительно заполненных формулами.Таким образом, после импорта новых данных некоторые неиспользуемые строки и столбцы скрываются (вручную или с помощью макроса VBA), поскольку они не нужны.

Я хотел бы найти способ очистки содержимого (т. Е.формулы) во всех скрытых ячейках, чтобы уменьшить общий размер файла.Мои файлы быстро получают более 100 МБ, но, возможно, 80% ячеек, содержащих формулы, не используются ни для какого конкретного проекта и могут быть очищены.

Я не эксперт по VBA, но я искалэто через Google, думая, что это будет легкий фрагмент VBA, но буквально через несколько часов углубляясь в ранжирование результатов поиска Google, я не нашел ни одного хорошего результата, который бы направил меня в сторону решения.

Существует много информации о том, как использовать VBA для удаления скрытых строк или столбцов, но я не могу сделать это с моей книгой (мне нужны строки и столбцы, чтобы остатьсядля других формул и форматов для работы).Я просто хочу удалить неиспользуемые формулы в скрытых ячейках.

Я понимаю, что могу использовать следующее для очистки содержимого и / или очистки форматов

Sheets("Test").Range("A1:C3").ClearContents
Sheets("Test").Range("A1:C3").ClearFormats

, и я использую эту строку, чтобы скрытьЯчейки:

Range.Hidden = True

Итак, как я могу получить диапазон для функции ClearContents, который будет определен как скрытые ячейки (или чтобы он действовал только на скрытые ячейки)?И как это можно сделать эффективно ... Я узнал, что выполнение цикла может занять много времени, так как оно продвигается через строки или столбцы для выполнения задачи.

Я хотел бы иметьрешение, которое позволяет этот процесс:

  1. Импорт новых данных
  2. Скрыть ненужные строки и столбцы
  3. Нажмите кнопку макроса, чтобы очистить все формулы от всех ячеек в пределах определенногоRange(A3:TY53) на всех листах

Буду признателен за любую помощь или указание на существующее решение, которое я не смог найти самостоятельно.

1 Ответ

2 голосов
/ 08 мая 2019

Чтобы очистить содержимое скрытых ячеек:

Sub KlearHidden()
    Dim r As Range

    For Each r In ActiveSheet.UsedRange
        If r.EntireRow.Hidden Or r.EntireColumn.Hidden Then
            r.Clear
        End If
    Next r
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...