Arrays 转置公式数组

Arrays 转置公式数组,arrays,excel,vba,Arrays,Excel,Vba,我想使公式数组函数更简单 我编写了一些代码,但它没有像我预期的那样插入我的副本范围: Sub copy_link() Dim copyrange As Range Dim pasterange As Range Set copyrange = Application.InputBox(prompt:="Choose the copy area", Type:=8) Set pasterange = Application.InputBox(prompt:="Choose the paste

我想使公式数组函数更简单

我编写了一些代码,但它没有像我预期的那样插入我的副本范围:

Sub copy_link()

Dim copyrange As Range
Dim pasterange As Range

Set copyrange = Application.InputBox(prompt:="Choose the copy area", Type:=8)
Set pasterange = Application.InputBox(prompt:="Choose the paste area", Type:=8)

pasterange.FormulaArray = "=TRANSPOSE(copyrange)"

End Sub
试试这个:

pasterange.FormulaArray = "=TRANSPOSE(" & copyrange.Address & ")"
您的方法只是在Excel的公式中插入“copyrange”一词,这对Excel来说完全没有意义。它只在VBA中有意义,因此您必须让VBA解释它。这就是为什么它不在引号内

您还需要检索范围的地址,而不是其值,因此是
.address
部分

编辑

Sub copy_link()

Dim copyrange As Range
Dim pasterange As Range
Dim RowNum As Long
Dim ColNum As Long

Set copyrange = Application.InputBox(prompt:="Choose the copy area", Type:=8)
Set pasterange = Application.InputBox(prompt:="Choose the paste area", Type:=8)

RowNum = copyrange.Rows.Count
ColNum = copyrange.Columns.Count

 pasterange.Cells(1).Resize(ColNum, RowNum).FormulaArray = "=TRANSPOSE(" & copyrange.Address & ")"


End Sub
单元格(1)
确保从
粘贴范围的左上角单元格开始“创建”输出范围
.resize(ColNum,RowNum)
将其调整为
copyrange
的转置变量

可能更容易理解(但也一样,只是更详细):


是否有任何方法将粘贴范围仅设置为左上角,excel将通过CopyRange的(转置)dimmension获取范围是的。对第一个区域中的单元格进行计数,并以此调整第二个区域的大小。请参阅我的最新答案。
.Resize(RowSize:=ColNum,ColumnSize:=RowNum)