2016-02-29 3 views
1

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

Есть ли способ сделать это с помощью VBA?

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

Примечание: Если это считается дубликатом Find inconsistent formulas in Excel through VBA извини, но единственный ответ, там не работает с таблицами, как диапазон данных

+0

Примером соответствующих формул было бы полезно. Снимок экрана до/после с ошибками будет еще лучше. Вместо этой информации я опубликовал ответ о том, как сбросить формулы в «Таблице». –

ответ

1

Если вы пытаетесь для сброса формулы в Table вы можете использовать свойство DataBodyRange.Formula для сброса формулы для всего столбца. Это обращается к одному из способов получения Inconsistent Calculated Column Formula.

Пример ошибки был получен путем установки формулы для столбца, смены одной ячейки и последующего указания Excel не изменять столбец формулы после этого редактирования.

enter image description here

Чтобы вернуть это обратно в формуле колонки (и удалить ошибку), вы можете запустить VBA, который изменяет формулу для DataBodyRange.

Код для изменения обратно

Sub ResetTableColumnFormula() 
    Dim listObj As ListObject 
    For Each listObj In ActiveSheet.ListObjects 
     listObj.ListColumns("b").DataBodyRange.Formula = "=[@a]" 
    Next 
End Sub 

Обратите внимание, что я был немного ленив, перебирая все ListObjects вместо того, чтобы использовать имя таблицы, чтобы получить ссылку. Это работает, так как существует только один Table на Worksheet.

Формулы после того, как этот код работает:

enter image description here

Обратите внимание, что этот ответ очень похож на answer here.

+0

Наконец-то я отвечаю, код работает как шарм после того, как я узнал, что при использовании VBA мне нужно вводить формулы на английском языке ... И спасибо за вашу быструю помощь =) – Boum

Смежные вопросы