我想让公式数组函数更容易
我写了一些代码,但它没有像我预期的那样插入我的复制范围:
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 & ")"
您的方式只是将“copyrange”一词插入 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)
确保我们从 pasterange
的左上角单元格开始“创建”输出范围. .resize(ColNum, RowNum)
将其大小调整为 copyrange
的转置变体.也许更容易理解(但也一样,只是更冗长):
.Resize(RowSize:=ColNum,ColumnSize:=RowNum)
关于arrays - TRANSPOSE 公式数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41873327/