让我先说这个问题,说我不是超级技术,所以我的措辞可能看起来很模糊......
在sheet1上我有三个单独的水平范围的单元格(3个单独的一系列步骤):
A1:D1
A2:C2
A3:E3
在第二张表格中,我想链接以创建指向这些范围的实时链接,这样如果我更改了sheet1上的信息,它将自动反映在sheet2中。
问题是,在sheet2上,我希望范围在一行中彼此列出,以创建一系列长的步骤。
Range1 - > Range2 - > Range3(全部在一行上)
如果我在sheet1上添加一个额外的步骤,比如在Sheet2上添加一个额外的步骤,那么将添加新的单元格并将以下单元格全部推送到右边一个单元格?
答案 0 :(得分:0)
要适应可能增长的范围,请从第一个单元格开始,然后使用End(xlToRight)
查找最后一个占用的单元格。找到所有范围范围后,可以将它们与数组UDF结合使用:
Function ConcatRanges(ParamArray ranges()) As Variant()
Application.Volatile
Dim ret() As Variant
ReDim ret(1 To 1, 1 To (Application.Caller.Columns.Count))
Dim RetIdx&, i&, cell As Range
RetIdx = 1
For i = 0 To UBound(ranges)
For Each cell in Application.Range(ranges(i), ranges(i).End(xlToRight))
ret(1, RetIdx) = cell.Value
RetIdx = RetIdx + 1
Next
Next
For RetIdx = RetIdx To UBound(ret, 2)
ret(1, RetIdx) = vbNullString
Next
ConcatRanges = ret
End Function
对于您的示例,您可以这样称呼它:
=ConcatRanges(Sheet1!A1, Sheet1!A2, Sheet1!A3)