Vba 将多列中的数据合并到一列中
我有以下几点:Vba 将多列中的数据合并到一列中,vba,excel,Vba,Excel,我有以下几点: 我正在使用来实现这一点: 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
我正在使用来实现这一点:
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
Sub-MoveData()
范围(“H5:H99”)。净含量
起始行=5
START_COL=1
步骤2
输出_行=5
输出_COL=8
极限值=9
行=开始行
Col=开始
输出行=输出行
而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
这实际上是检查行是否传递了最后一行数据,如果传递了,则移动到下一列
编辑
不复制空白单元格使用此:
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
Do-till-row>单元格(65536,Col).End(xlUp).row
如果单元格(行、列).Value为“”,则
单元格(输出行,输出列)。值=单元格(行,列)。值
Out_行=Out_行+1
如果结束
行=行+1
环
调整此代码:
While Cells(Row, Col).Value <> ""
Cells(Out_Row, OUTPUT_COL).Value = Cells(Row, Col).Value
Out_Row = Out_Row + 1
Row = Row + 1
Wend
这实际上是检查行是否传递了最后一行数据,如果传递了,则移动到下一列
编辑
不复制空白单元格使用此:
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
Do-till-row>单元格(65536,Col).End(xlUp).row
如果单元格(行、列).Value为“”,则
单元格(输出行,输出列)。值=单元格(行,列)。值
Out_行=Out_行+1
如果结束
行=行+1
环
调整此代码:
While Cells(Row, Col).Value <> ""
Cells(Out_Row, OUTPUT_COL).Value = Cells(Row, Col).Value
Out_Row = Out_Row + 1
Row = Row + 1
Wend
这实际上是检查行是否传递了最后一行数据,如果传递了,则移动到下一列
编辑
不复制空白单元格使用此:
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
Do-till-row>单元格(65536,Col).End(xlUp).row
如果单元格(行、列).Value为“”,则
单元格(输出行,输出列)。值=单元格(行,列)。值
Out_行=Out_行+1
如果结束
行=行+1
环
调整此代码:
While Cells(Row, Col).Value <> ""
Cells(Out_Row, OUTPUT_COL).Value = Cells(Row, Col).Value
Out_Row = Out_Row + 1
Row = Row + 1
Wend
这实际上是检查行是否传递了最后一行数据,如果传递了,则移动到下一列
编辑
不复制空白单元格使用此:
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
Do-till-row>单元格(65536,Col).End(xlUp).row
如果单元格(行、列).Value为“”,则
单元格(输出行,输出列)。值=单元格(行,列)。值
Out_行=Out_行+1
如果结束
行=行+1
环
<>代码> 上一个答案是关闭的,但它也将复制所有空白区。此代码应满足您的需要:
Sub MoveData()
START_ROW = 5
START_COL = 1
STEP_COL = 2
OUTPUT_ROW = 5
OUTPUT_COL = 10
Row = START_ROW
Col = START_COL
Out_Row = OUTPUT_ROW
While Col < OUTPUT_COL
While Row < ActiveSheet.UsedRange.Rows.Count
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
Wend
Row = START_ROW
Col = Col + STEP_COL
Wend
End Sub
Sub-MoveData()
起始行=5
START_COL=1
步骤2
输出_行=5
输出值=10
行=开始行
Col=开始
输出行=输出行
而Col<>代码> 上一个答案是关闭的,但它也将复制所有空白区。此代码应满足您的需要:
Sub MoveData()
START_ROW = 5
START_COL = 1
STEP_COL = 2
OUTPUT_ROW = 5
OUTPUT_COL = 10
Row = START_ROW
Col = START_COL
Out_Row = OUTPUT_ROW
While Col < OUTPUT_COL
While Row < ActiveSheet.UsedRange.Rows.Count
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
Wend
Row = START_ROW
Col = Col + STEP_COL
Wend
End Sub
Sub-MoveData()
起始行=5
START_COL=1
步骤2
输出_行=5
输出值=10
行=开始行
Col=开始
输出行=输出行
而Col<>代码> 上一个答案是关闭的,但它也将复制所有空白区。此代码应满足您的需要:
Sub MoveData()
START_ROW = 5
START_COL = 1
STEP_COL = 2
OUTPUT_ROW = 5
OUTPUT_COL = 10
Row = START_ROW
Col = START_COL
Out_Row = OUTPUT_ROW
While Col < OUTPUT_COL
While Row < ActiveSheet.UsedRange.Rows.Count
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
Wend
Row = START_ROW
Col = Col + STEP_COL
Wend
End Sub
Sub-MoveData()
起始行=5
START_COL=1
步骤2
输出_行=5
输出值=10
行=开始行
Col=开始
输出行=输出行
而Col<>代码> 上一个答案是关闭的,但它也将复制所有空白区。此代码应满足您的需要:
Sub MoveData()
START_ROW = 5
START_COL = 1
STEP_COL = 2
OUTPUT_ROW = 5
OUTPUT_COL = 10
Row = START_ROW
Col = START_COL
Out_Row = OUTPUT_ROW
While Col < OUTPUT_COL
While Row < ActiveSheet.UsedRange.Rows.Count
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
Wend
Row = START_ROW
Col = Col + STEP_COL
Wend
End Sub
Sub-MoveData()
起始行=5
START_COL=1
步骤2
输出_行=5
输出值=10
行=开始行
Col=开始
输出行=输出行
而Col
之所以出现错误,是因为第二个While循环沿列向下移动,直到找到一个空白,一旦找到一个,它将跨两列移动。我建议您只需要添加一行来标识列中包含数据的最后一行。之所以会出现错误,是因为您的第二个While循环沿列向下移动,直到找到一个空白,一旦找到一个,它将跨两列移动。我建议您只需要添加一行来标识列中包含数据的最后一行。之所以会出现错误,是因为您的第二个While循环沿列向下移动,直到找到一个空白,一旦找到一个,它将跨两列移动。我建议您只需要添加一行来标识列中包含数据的最后一行