将所有的行列值转换为仅列的格式

我有一个Excel表 。 请看“示例校正”表。

我有多个行和列的值。 我需要所有的值仅列格式。 也就是说, 我需要从2465,2503等到331806的所有值在单个新列中 。 (请忽略表格中的“K”后的任何值)。

由于间歇性的空行和中间区域的不需要的文本,我无法应用任何公式或VBA脚本。

参考: https : //www.extendoffice.com/documents/excel/1172-excel-transpose-multiple-columns-into-one-column.html

我尝试了VBA脚本,但只有当所有的行都连续存在时才有效。

这是我的代码:

Sub TableToColumn() Dim Rng As Range, LR As Long, i As Long LR = Range("A" & Rows.Count).End(xlUp).Row For i = 1 To LR Set Rng = Range("A" & i, "J" & i) 'Change range to suit needs Range("M" & Rows.Count).End(xlUp)(2).Resize(Rng.Count) = Application.WorksheetFunction.Transpose(Rng) Next i End Sub 

这个VBA代码提取从列A到J的所有条目,直到数据存在行中。 我怎样才能把这个应用到一个有更多空行和不需要的原始文本行的条目中?

或者,通过CSV迁移,然后正则expression式parsing是可行的?

我需要最简单的解决scheme。

好,那我们来试试这个…

 Public Sub Answer() Dim RowCnt as Integer Dim Output as Variant Dim Data as Variant Data = ThisWorkbook.Worksheets("EXAMPLE CORRECTION").Range("B7:K1384") ' How many rows will we have ? RowCnt=0 for Row = LBound(Data, 1) to UBound(Data, 1) for Col = LBound(Data, 2) to UBound(Data, 2) if Not IsEmpty(Data(Row, Col)) and IsNumeric(Data(Row, Col)) Then RowCnt=RowCnt+1; Next Col Next Row ' Resize Output Redim Output(1 to RowCnt, 1) as Variant ' Fill Output RowCnt=1 for Row = LBound(Data, 1) to UBound(Data, 1) for Col = LBound(Data, 2) to UBound(Data, 2) if Not IsEmpty(Data(Row, Col)) and IsNumeric(Data(Row, Col)) Then Output(RowCnt, 1) = Data(Row, Col) RowCnt=RowCnt+1 end if next next ' Write to Some Column (Column L) for now ThisWorkbook.Worksheets("EXAMPLE CORRECTION").Range("L7:L" & RowCnt+6) = Output End Sub