VBA: удалить строки из массива, которые имеют более X пустых значений

У меня есть динамический массив (n, m), который получает значения из диапазона.

Так как диапазон содержит записи, которые не имеют всех необходимых значений (если полная запись, то 5 или 6 значений в строке). Теперь я хочу удалить все строки массива, которые содержат менее 3 значений.

Массив в этом примере имеет форму (60,4).

VBA: удалить строки из массива, которые имеют более X пустых значений

Вот как я присваиваю значения массиву:

Dim CFarr() As Variant
CFarr() = ws_src_CF.Range(ws_src_CF.Cells(ref2, 1), ws_src_CF.Cells(EoCF, lastC)).Value

Спасибо за вашу помощь!

Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
0
1 177
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

У вас есть 2 варианта:

1) Перебрать строки массива, подсчитать пустые элементы в каждой строке и либо скопировать его в новый массив или нет.

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

Другие вопросы по теме