Вычтите строки друг от друга, но пропустите строки - PullRequest
0 голосов
/ 22 мая 2019

Я знаю, что могу вычесть целые строки следующей строкой:

ActiveWorkbook.Sheets(1).Range("A20:G20") = ActiveWorkbook.Sheets(1).Evaluate("A2:G2-A10:G10")

Однако у меня есть строки в нескольких столбцах.Я пытался скрыть эти столбцы, но это не заставляет Excel пропустить их.Теоретически я мог бы удалить их и вставить их потом, но если возможно, я бы хотел избежать решения с таким большим количеством промежуточных шагов.

Я работаю с двумя рабочими книгами и примерно 2500 строками и 20 столбцами.

Ответы [ 2 ]

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

Затем проверьте с помощью =IFERROR, если результат вашего вычитания вернет #VALUE!, и в этом случае верните исходное значение:

.Evaluate("=IFERROR(A2:G2-A10:G10,A2:G2)")

Возвращает значение из A2: G2 в случае ошибки вычитания.

В качестве альтернативы вы также можете проверить номера:

.Evaluate("=IF(ISNUMBER(A2:G2),A2:G2-A10:G10,A2:G2)")
0 голосов
/ 22 мая 2019

Вы также можете использовать код как показано ниже:

With ActiveWorkbook.Sheets(1).Range("A20:G20")
    .Formula = "=IFERROR(A2-A10,"""")"
    .Value = .Value
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...