У меня есть двумерная матрица в Excel, заполненная числами и нулями.Мне нужно, чтобы числа из каждой строки матрицы были перечислены без пробелов (здесь без нулей), поэтому я добавил их в коллекцию.Затем я использовал функцию, которую нашел в Stackoverlow, для преобразования коллекции в массив, который мне понадобился для записи строк обратно в Excel.Решение работает почти отлично, за исключением того, что я получаю полную строку, заполненную числами одного и того же значения, в случае, когда в матрице только 1 число.Кажется, проблема возникает во время обратной записи значений в ячейки.Во-вторых, как я могу избавиться от этих # N / D в моих результатах?Экран и код прилагаются, спасибо.
! https://imgur.com/a/aP16DE1
Option Explicit
Public Function CollectionToArray(myCol As Collection) As Variant
Dim result As Variant
Dim cnt As Long
ReDim result(myCol.Count - 1)
For cnt = 0 To myCol.Count - 1
result(cnt) = myCol(cnt + 1)
Next cnt
CollectionToArray = result
End Function
Public Sub TestMe()
Dim cell, k As Variant
Dim i As Integer
Dim myCol As New Collection
Dim grKol, Destination As Range
Set grKol = Range("D4:BA4")
Set Destination = Range("D20:R20")
For i = 1 To 50
If Application.WorksheetFunction.Sum(grKol.Offset(i - 1, 0)) = 0 Then
Exit For
For Each cell In grKol.Offset(i - 1, 0)
If cell > 0 Then
myCol.Add cell
End If
Next cell
k = CollectionToArray(myCol)
Destination.Offset(i, 0) = k
Set myCol = Nothing
Next i
End Sub