连接两个范围而不循环

时间:2018-09-26 06:19:30

标签: excel vba excel-vba

我想使用循环将两个范围连接成一个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 :(得分:2)

您可以这样做:

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知道您正在为其提供一个数组公式,并将返回结果数组,您可以将其直接分配给工作表。