Vba 将多行和多列复制到单列Excel

Vba 将多行和多列复制到单列Excel,vba,excel,Vba,Excel,我在Excel的多个行和列上有不同的数据,我希望所有数据都在一个列上。我尝试了转置函数,但它不能帮助我得到想要的 这就是我现在拥有的: 这就是我想要得到的: 有谁能告诉我怎样才能做到这一点?任何内置函数或宏都会很有帮助。谢谢。我认为本教程应该对您有所帮助: 您可以根据自己的需要尝试该解决方案。我认为本教程应该可以帮助您: 您可以根据需要尝试该解决方案。尝试以下代码: Sub RangetoColumn() Dim LastRow As Long, LastColumn As Long

我在Excel的多个行和列上有不同的数据,我希望所有数据都在一个列上。我尝试了转置函数,但它不能帮助我得到想要的

这就是我现在拥有的:

这就是我想要得到的:


有谁能告诉我怎样才能做到这一点?任何内置函数或宏都会很有帮助。谢谢。

我认为本教程应该对您有所帮助:
您可以根据自己的需要尝试该解决方案。

我认为本教程应该可以帮助您: 您可以根据需要尝试该解决方案。

尝试以下代码:

Sub RangetoColumn()
    Dim LastRow As Long, LastColumn As Long
    Dim CurrentSheet As Worksheet, TargetSheet As Worksheet
    Dim i As Long, j As Long, Count As Long

    Set CurrentSheet = ThisWorkbook.Worksheets("Sheet1")'-->change Sheet1 to your source sheet
    Set TargetSheet = ThisWorkbook.Worksheets("Sheet2")'-->change Sheet2 to your target sheet
    LastRow = CurrentSheet.Cells(Rows.Count, "A").End(xlUp).Row

    Count = 1
    For i = 1 To LastRow
        LastColumn = CurrentSheet.Cells(i, Columns.Count).End(xlToLeft).Column
        For j = 1 To LastColumn
            TargetSheet.Range("A" & Count).Value = CurrentSheet.Cells(i, j).Value
            Count = Count + 1
        Next j
    Next i
End Sub
代码将从Sheet1读取范围,并将在Sheet2中创建一列,请尝试以下代码:

Sub RangetoColumn()
    Dim LastRow As Long, LastColumn As Long
    Dim CurrentSheet As Worksheet, TargetSheet As Worksheet
    Dim i As Long, j As Long, Count As Long

    Set CurrentSheet = ThisWorkbook.Worksheets("Sheet1")'-->change Sheet1 to your source sheet
    Set TargetSheet = ThisWorkbook.Worksheets("Sheet2")'-->change Sheet2 to your target sheet
    LastRow = CurrentSheet.Cells(Rows.Count, "A").End(xlUp).Row

    Count = 1
    For i = 1 To LastRow
        LastColumn = CurrentSheet.Cells(i, Columns.Count).End(xlToLeft).Column
        For j = 1 To LastColumn
            TargetSheet.Range("A" & Count).Value = CurrentSheet.Cells(i, j).Value
            Count = Count + 1
        Next j
    Next i
End Sub

代码将从Sheet1读取范围,并将在Sheet2中创建一列,尝试在两个单元格中使用&。尝试这样组合单元格
A1
和单元格
B1
中的数据;复制并粘贴,然后欣赏。

尝试在两个单元格中使用
&
。尝试这样组合单元格
A1
和单元格
B1
中的数据;复制并粘贴,然后欣赏。

这将在其A列下列出所有当前工作表单元格,并清除所有其他相邻列

Option Explicit

Sub RangeToOneColumn()
    Dim lastRow As Long, i As Long, j As Long
    Dim rng As Range
    Dim myArr As Variant

    With ThisWorkbook.Worksheets("Sheet1") '<== change it to your needs
        lastRow = .Cells(.rows.Count, "A").End(xlUp).Row
        ReDim myArr(0 To lastRow - 1)
        For i = 1 To lastRow
            Set rng = .Range(.Cells(i, 1), .Cells(i, .Columns.Count).End(xlToLeft))
            myArr(i - 1) = Application.Transpose(Application.Transpose(rng))
        Next i
        .Cells(1, 1).CurrentRegion.ClearContents

        j = 1
        For i = LBound(myArr) To UBound(myArr)
            .Cells(j, 1).Resize(UBound(myArr(i))) = Application.Transpose(myArr(i))
            j = j + UBound(myArr(i))
        Next i
    End With

End Sub
选项显式
子范围TooneColumn()
最后一行一样长,我一样长,j一样长
变暗rng As范围
Dim myArr作为变异体

使用ThisWorkbook.Worksheets(“Sheet1”)”将在其A列下列出所有当前工作表单元格,并清除所有其他相邻列

Option Explicit

Sub RangeToOneColumn()
    Dim lastRow As Long, i As Long, j As Long
    Dim rng As Range
    Dim myArr As Variant

    With ThisWorkbook.Worksheets("Sheet1") '<== change it to your needs
        lastRow = .Cells(.rows.Count, "A").End(xlUp).Row
        ReDim myArr(0 To lastRow - 1)
        For i = 1 To lastRow
            Set rng = .Range(.Cells(i, 1), .Cells(i, .Columns.Count).End(xlToLeft))
            myArr(i - 1) = Application.Transpose(Application.Transpose(rng))
        Next i
        .Cells(1, 1).CurrentRegion.ClearContents

        j = 1
        For i = LBound(myArr) To UBound(myArr)
            .Cells(j, 1).Resize(UBound(myArr(i))) = Application.Transpose(myArr(i))
            j = j + UBound(myArr(i))
        Next i
    End With

End Sub
选项显式
子范围TooneColumn()
最后一行一样长,我一样长,j一样长
变暗rng As范围
Dim myArr作为变异体

使用此工作簿。工作表(“表1”)“非常感谢。它满足了要求。@TanvirSourov-很高兴我能帮助你。非常感谢。它满足了要求。@TanvirSourov-很高兴我能帮助你。