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)