在四个不同行的列的dynamic范围内的单元格值的dynamic接触

目标:我想用方法Contagenation构build4个不同的string。 我在工作表(“Calc”)的4行(行32到行35)的每一行中都有dynamic的列数(第4列到maxCol)。 4个不同的string应该存储在单元格(A1,A2,A3,A4)中的另一个工作表(“CreateColumns”)中

问题:为了实现这个目标,我编写了下面的代码,但是在sheet(“CreateColumns”)中,4行中的每一行都填充了sheet(“Calc”)中行35的相同value = last值,而不是4值如预期。

问题:我的代码中有什么错误?

Sub CreateColumns() Dim maxCol As Integer Dim x As String Dim rng As Range Dim cel As Range Dim i As Long Dim row As Long Dim y As Long Sheets("Calc").Select maxCol = Cells(32, columns.Count).End(xlToLeft).column For row = 32 To 35 Sheets("Calc").Select Cells(row, 4).Activate For i = 4 To maxCol With Worksheets("Calc") Set rng = Range(.Cells(row, 4), .Cells(row, maxCol)) End With x = "" For Each cel In rng x = x & cel.Value For y = 1 To 4 Sheets("ColCreate").Cells(y, 1).Value = x Next Next Next Next End Sub 

在你的代码中的问题是,你粘贴到“ColCreate”表的部分是有点不合适的 – 它应该发生一次你的最外层循环的每一次发生,一起“y”增量

我已经稍微修改了下面的代码,应该提供预期的结果

 Sub CreateColumns() Dim maxCol As Integer Dim x As String Dim rng As Range Dim cel As Range Dim i As Long Dim row As Long Dim y As Long Sheets("Calc").Select maxCol = Cells(32, Columns.count).End(xlToLeft).Column y = 1 For row = 32 To 35 Sheets("Calc").Select Cells(row, 4).Activate For i = 4 To maxCol With Worksheets("Calc") Set rng = Range(.Cells(row, 4), .Cells(row, maxCol)) End With x = "" For Each cel In rng x = x & cel.Value Next Next Sheets("ColCreate").Cells(y, 1).Value = x y = y + 1 Next End Sub