Как убрать часть массива?

Программа, над которой я работаю, включает чтение и определение разницы между i — (i + 1) и i- (i-1) из excel.

Если разница превышает 4 затем программа удаляет строку с номером i.

Программа работает хорошо с первой попытки. Внезапно он говорит, что «Вы не можете изменить часть массива».

  Option ExplicitSub Data_Delet () Dim a As Double, b As Double, c As Double, i As Double Dim rkill As Range 'a, b и c используются как шаги  чтобы перейти к следующим точкам данных a = 18 b = 0 c = 0 With ThisWorkbook.Worksheets ("Sheet1") 'Второй цикл do удаляет точки данных, которые не соответствуют требованиям Do If Abs (.Cells (a -  1, 2) - .Cells (a, 2))> 4 And Abs (.Cells (a, 2) - .Cells (a + 1, 2))> 4 Then If rkill Is Nothing Then Set rkill = Rows (a  ) Else Set rkill = Union (rkill, Rows (a)) End If End If a = a + 1 Цикл до .Cells (a, 2) .Value = "" Если не rkill Is Nothing Then rkill.EntireRow.Delete 'The  третий цикл Do определяет количество точек данных, которые все еще присутствуют после удаления точек данных. Do i = .Cells (17 + c, 1) c = c + 1 цикл до .Cells (17 + c, 1) .Value = "  "'Статус if определяет, совпадают ли числовые точки данных из предыдущего после процесса удаления. Если b = c То .Cells (2, 5) =" N "Else .Cells (2, 5) =" Y "End  Если 'c is t  количество точек данных после удаления. Cells (12, 5) = c End WithEnd Sub  

Ошибка «Вы не можете изменить часть массив « в rkill.EntireRow.Delete означает, что строка, которую вы хотите удалить, пересекает диапазон, указанный в формуле массива (формула с фигурными скобками).

Excel этого не допускает. Один из способов — удалить некорректные формулы массива в начале кода и заново определить их/их в конце кода. Или найдите решение, чтобы превратить эти формулы массива в обычные формулы.

Оцените статью
Botgadget.ru
Добавить комментарий