Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从范围到数据末尾的转换_Excel_Vba - Fatal编程技术网

Excel 从范围到数据末尾的转换

Excel 从范围到数据末尾的转换,excel,vba,Excel,Vba,我有这个代码,它必须转换数据。问题是,我不知道如何使它成为动态的,所以它可以转置比直到列“O”更多的内容。但是,如果有300行数据,它应该能够将这些数据向下转换到列中 Sub TransposeData() Range("A2:O15").Value = WorksheetFunction.Transpose(Range("A2:O8")) End Sub 我这里只有一个测试数据集,但当我添加超过15行的数据时,它无法将其转置到列“O”之外 数据集 转置后 试试看 Range("A2

我有这个代码,它必须转换数据。问题是,我不知道如何使它成为动态的,所以它可以转置比直到列“O”更多的内容。但是,如果有300行数据,它应该能够将这些数据向下转换到列中

Sub TransposeData()
    Range("A2:O15").Value = WorksheetFunction.Transpose(Range("A2:O8"))
End Sub
我这里只有一个测试数据集,但当我添加超过15行的数据时,它无法将其转置到列“O”之外

数据集

转置后

试试看

Range("A2:O15").Value = Application.Transpose(Range("A2:O8"))
但是,这不起作用,因为目标范围与原始范围的大小不同。更好的方法是,将A2:O15的
分配给一个数组,然后

Range("A2").Resize(Ubound(Arr,2), Ubound(Arr)).Value = Application.Transpose(Arr)
您可以使用这样的代码使A2:O15成为动态的

Dim Rng As Range
Dim Arr as Variant

Set Rng = Range(Cells(2, "A"), Cells(Rows.Count, "A").End(XlUp).Offset(0,15))
Arr = Rng.Value

您可以这样做,以更友好的方式:

Sub TransposeMe()
    Dim myRange As Range
    Set myRange = Range("A2:O15")
    Dim destRange As Range
    Set destRange = Range("A2")
    Set destRange = destRange.Resize(myRange.Columns.Count, myRange.Rows.Count)
    destRange.Value = Excel.Application.Transpose(myRange)
End Sub

谢谢,它可以工作,但我在第17行之后有很多数据,有没有办法在转置时删除它们?我刚刚添加了一个新的子工作表,但我想知道它是否可以在转置子工作表(“Ark1”)中。行(17&“:”&工作表(“Ark1”)。行。计数)。删除