TRANSPOSE公式数组

我想使公式数组函数更容易

我写了一些代码,但它不插入我的复制范围,如我所料:

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中的公式,这是完全没有意义的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 

Cells(1)确保我们开始“创build” pasterange区域左上angular的输出范围。 .resize(ColNum, RowNum)大小调整为.resize(ColNum, RowNum)的转置变体。

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

 .Resize(RowSize:=ColNum,ColumnSize:=RowNum)