如何将数组连续输出至含跳过列的多段单元格区域?
解决VBA数组连续输出到不连续单元格区域的问题
直接给多区域Range赋值数组时,每个子区域都会从数组开头读取元素,这就是你遇到D2:F2重复输出1、2、3的原因。要实现数组元素连续填充到目标区域,可通过以下两种方法实现:
方法一:逐个遍历单元格赋值
Sub test() Dim a As Variant Dim targetCells As Range Dim cell As Range Dim i As Integer a = Array(1, 2, 3, 4, 5) Set targetCells = Range("A2:B2,D2:F2") i = LBound(a) '从数组起始索引(默认0)开始 For Each cell In targetCells If i <= UBound(a) Then cell.Value = a(i) i = i + 1 Else Exit For '数组元素用完就停止 End If Next cell End Sub
核心逻辑:遍历目标区域的每一个单元格,按顺序把数组元素逐个赋值,遇到数组末尾就终止循环,确保元素连续输出。
方法二:按单元格索引批量对应赋值
Sub test2() Dim a As Variant Dim targetArea As Range Dim i As Integer a = Array(1, 2, 3, 4, 5) Set targetArea = Range("A2:B2,D2:F2") '取数组长度和目标单元格数的较小值,避免越界 For i = 1 To WorksheetFunction.Min(UBound(a) - LBound(a) + 1, targetArea.Cells.Count) targetArea.Cells(i).Value = a(LBound(a) + i - 1) Next i End Sub
核心逻辑:通过targetArea.Cells(i)直接定位目标区域的第i个单元格,对应数组的第i个元素(数组索引从0开始,需加偏移量调整),同样能实现连续填充。
运行任意一段代码后,就能得到你想要的结果:A2=1、B2=2、D2=3、E2=4、F2=5。
内容的提问来源于stack exchange,提问作者TAS1987
相关产品推荐
相关产品推荐

