Цикл по массиву в Excel - PullRequest
0 голосов
/ 10 июля 2019

Попытка перебрать листы «data». Диапазон «AM1: AS12» и скопировать данные в диапазон, начинающийся с BD1, если данные не равны «# N / A»

MyКод работает с копированием первого столбца, но ничего не делает с данными после этого.Куда я иду не так?

Set S2 = Sheets("data").Range("AM:AM")
Set S3 = Sheets("data").Range("BD:BD")

Dim i As Integer, j As Integer 

j = 1
For i = 1 To 12 

   If S2.Cells(i, 1).Value <> "#N/A" Then 
      S3.Cells(j, 2).Value = S2.Cells(i, 1).Value 
      j = j + 1 
   End If

Next i 

Ответы [ 3 ]

1 голос
/ 10 июля 2019

Это работает, когда я проверял это.

    Sub CopyCell()

    Set S2 = Sheets("data").Range("A:A")
    Set S3 = Sheets("data").Range("M:M")

    Dim i As Integer, j As Integer

    For j = 1 To 2
    For i = 1 To 12

       If S2.Cells(i, j).Value <> "#N/A" Then
          S3.Cells(i, j).Value = S2.Cells(i, j).Value

       End If

    Next i
    Next j

    Call DeleteBlank

    End Sub



Sub DeleteBlank()

Dim x As Integer
Dim y As Integer

For y = 13 To 16 'Range numbers for the columns the data is copied to
For x = 1 To 10  ' Number of cells of data you want to loop through

If Cells(x, y).Value = "" Then
Cells(x, y).Delete Shift:=xlUp

End If

Next x
Next y

End Sub
1 голос
/ 10 июля 2019

Заменить:

<> "#N/A"

По:

Not(Application.WorksheetFunction.IfNa(...))
0 голосов
/ 10 июля 2019

лучше всего не проверять, равно ли оно "# N / A" Лучше всего проверить, является ли это ошибкой: если нет (IsError (S2.Cells (i, 1) .Value)), то

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...