Удалить пустое значение в цикле диапазона - PullRequest
0 голосов
/ 25 марта 2019

Я хочу отфильтровать некоторые данные из множества таблиц в 1 таблицу.Проблема начинается с того, что я хочу показать только некоторые данные вместо всех значений, прочитанных из looping.eg;У меня есть много данных в столбце A. Но я хочу выбрать только несколько данных, и эти данные имеют фиксированный прирост, например, в столбце A5, A10, A15 и т. Д.

Я пытаюсь использовать оператор ifвыбрать только тогда, когда есть значение, но не работает, поскольку вместо него будет вставлено все значение.

Sub transpose1()

'***Define Variable
Dim Strings() As Variant
Dim n As Long
Dim LastRowData As Long
Dim LastRow As Long

'***Read Data
Sheets("Results").Activate
LastRow = Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
LastRowData = LastRow

'***Redefine Array
ReDim Strings(LastRowData)

'***Read Data Variable
For n = 2 To LastRowData 'loop strings data
    Strings(n) = Sheets("Results").Cells(1 + n, 1)
    n = n + 12 'data increment at fix size
Next n

'***Write data
If IsEmpty(n) = False Then 'select only n with value
    For n = 0 To LastRowData
            Sheets("Test Transpose").Cells(1 + n, 1) = Strings(n) ' paste value when only n has value only
    Next n
End If

End Sub

enter image description here

1 Ответ

1 голос
/ 25 марта 2019

Ну, n - это длинная переменная, и она не пустая. Вы должны проверить, если strings(n) пусто:

If Isempty(strings(n)) = False Then

Также вы должны поместить оператор if в цикл for, иначе он будет каждый раз проверять один и тот же элемент:

For n = 0 to LastRowData    
    If Isempty(strings(n)) = False Then
          Sheets("Test Transpose").Cells(1 + n, 1) = Strings(n) ' paste value when only n has value only    
    End if  
Next n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...