У меня есть динамический массив (n, m), который получает значения из диапазона.
Так как диапазон содержит записи, которые не имеют всех необходимых значений (если полная запись, то 5 или 6 значений в строке). Теперь я хочу удалить все строки массива, которые содержат менее 3 значений.
Массив в этом примере имеет форму (60,4).
Вот как я присваиваю значения массиву:
Dim CFarr() As Variant
CFarr() = ws_src_CF.Range(ws_src_CF.Cells(ref2, 1), ws_src_CF.Cells(EoCF, lastC)).Value
Спасибо за вашу помощь!



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