Объединить два диапазона без циклов - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу объединить два диапазона в один WIHTOUT, используя цикл.

Ниже приведен код.Строки с комментариями - это, по сути, решение, которого я хочу избежать.

With ws_AUoM

    lCountEntriesInAUoMFile = .Cells(Rows.Count, "B").End(xlUp).Row

    .Range("O2:O" & lCountEntriesInAUoMFile).Value = .Range("B2:B" & lCountEntriesInAUoMFile).Value & .Range("F2:F" & lCountEntriesInAUoMFile).Value

'    For lLoopCounterAUoM = 2 To lCountEntriesInAUoMFile
'
'        .Cells(lLoopCounterAUoM, "O").Value = .Cells(lLoopCounterAUoM, "B").Value & .Cells(lLoopCounterAUoM, "F").Value
'
'    Next lLoopCounterAUoM


End With

Эта строка:

.Range("O2:O" & lCountEntriesInAUoMFile).Value = .Range("B2:B" & lCountEntriesInAUoMFile).Value & .Range("F2:F" & lCountEntriesInAUoMFile).Value

возвращает ошибку «Несоответствие типов».Я дважды проверил размеры и расположение каждого диапазона.Все же это не работает.Что мне здесь не хватает?

1 Ответ

0 голосов
/ 26 сентября 2018

Вы можете сделать это:

Dim r As Long    

With ws_AUoM

    r = .Cells(.Rows.Count, "B").End(xlUp).Row

    .Range("O2:O" & r).Value = .Evaluate("B2:B" & r & " & F2:F" & r)

End With

Evaluate знает, что вы даете ему формулу массива, и вернет полученный массив, который вы можете назначить непосредственно на лист.

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