复制多个范围并在Excel中连接它们

我的Excel工作表有多个使用的范围。 我想复制每个范围值并连接它们。 我做的是

Set tempRange = Union(SrcWkb.Worksheets("mysheet").Range("F1:H1"), SrcWkb.Worksheets("mysheet").Range("I1:J1"), SrcWkb.Worksheets("NWP").Range("K1:L1")) For Each eachRange In tempRange tempString = tempString & eachRange & "/" MsgBox tempString Next eachRange 

我想复制合并单元格F1:H1中的值,并将I1:J1(也合并)和K1中的“/”和值连接到L1。 但是,Excel会抛出“下标超出范围”错误。 我怎么能做到这一点?

截图

从你原来的文章中不太清楚你需要什么输出。 这里有一个选项可以帮助你开始:

 Sub ConcatRanges() Dim rangeOne As Range, rangeTwo As Range, rangeAll As Range, cl As Range, str As String Set rangeOne = Worksheets("mysheet").Range("I27:K27") Set rangeTwo = Worksheets("mysheet").Range("L27:N27") Set rangeAll = Union(rangeOne, rangeTwo) For Each cl In rangeAll str = str & cl & " / " Next cl Debug.Print str //Output: 1 / 2 / 3 / 4 / 5 / 6 / End Sub 

更新后

处理合并范围可能会非常棘手。 例如,合并范围F1:H1值为36M。 要访问该值,必须引用合并范围中的第一个单元格。 例:

 Sub MergedRangeDemo() Dim rng As Range, cl As Range Set rng = ActiveSheet.Range("F1:H1") For Each cl In rng Debug.Print cl.Value, cl.Address Next cl //Output: 36M $F$1 <-- Only first cell contains the value // $G$1 // $H$1 End Sub 

鉴于此,您可以使用范围的rowindex (1)连接值:

 Sub ConcatRangesUpdated() Dim rangeOne As Range, rangeTwo As Range, rangeThree As Range, str As String Set rangeOne = ActiveSheet.Range("F1:H1") Set rangeTwo = ActiveSheet.Range("I1:J1") Set rangeThree = ActiveSheet.Range("K1:L1") str = rangeOne(1) & " / " & rangeTwo(1) & " / " & rangeThree(1) Debug.Print str 'Output: 36M / 40M / 36M End Sub 

看来你想用正斜杠连接I27和L27,并把结果放在不同的工作表上。 这个例子就是这样做的:连接I27&L27,J27&M27,K27&N27,并将结果放在目标工作表的单元格A27:C27中。 请注意,公式使用R1C1表示法和相对列位置; 必要时进行调整。

 Sub ConcatCells() Dim sSource As String sSource = "'" & SrcWkb.Worksheets("mysheet").Name & "'!" DstWks1.Range("A27:C27").FormulaR1C1 = "=" & sSource & "RC[8] & " _ & Chr$(34) & "/" & Chr$(34) & " & " & sSource & "RC[11]" End Sub