将多列数据合并到一列
问题描述:
我有以下内容:
I have the following:
我正在使用 @ BigBobby的答案来实现:
Sub MoveData()
Range("H5:H99").ClearContents
START_ROW = 5
START_COL = 1
STEP_COL = 2
OUTPUT_ROW = 5
OUTPUT_COL = 8
Limit_Col = 9
Row = START_ROW
Col = START_COL
Out_Row = OUTPUT_ROW
While Col < Limit_Col
While Cells(Row, Col).Value <> ""
Cells(Out_Row, OUTPUT_COL).Value = Cells(Row, Col).Value
Out_Row = Out_Row + 1
Row = Row + 1
Wend
Row = START_ROW
Col = Col + STEP_COL
Wend
End Sub
但是如你所见,我希望得到这些值出现在列中的空白单元格之后。但是这个代码无法拉出那些以黄色突出显示的单元格。
如何修改此代码以拉出一个或多个空白单元格之后可能出现的所有数据?
答
调整此代码:
While Cells(Row, Col).Value <> ""
Cells(Out_Row, OUTPUT_COL).Value = Cells(Row, Col).Value
Out_Row = Out_Row + 1
Row = Row + 1
Wend
For:
Do until row > Cells(65536, Col).End(xlUp).Row
Cells(Out_Row, OUTPUT_COL).Value = Cells(Row, Col).Value
Out_Row = Out_Row + 1
Row = Row + 1
Loop
这实际上是检查行是否已经通过最后一行数据,如果有的话,它会移动到下一列。
This essentially checks to see if the row has passed the last row with data, and if it has, it moves onto the next column.
修改
要不跨越空白单元格复制,请使用以下命令:
To not copy across the blank cells use this:
Do until row > Cells(65536, Col).End(xlUp).Row
If Cells(Row, Col).Value <> "" then
Cells(Out_Row, OUTPUT_COL).Value = Cells(Row, Col).Value
Out_Row = Out_Row + 1
End If
Row = Row + 1
Loop