arrays - TRANSPOSE 公式数组

标签 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 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/

相关文章:

javascript - 如何从数组对象中返回多个值作为新变量?

excel - 具有精确 OR 值的嵌套 IF 语句

wpf - VSTO Excel 插件中的独立 WPF 表单无法保持焦点

vba - 使用用户提示的文件路径将工作簿另存为 CSV

c# - mongoDB upsert 数组

c - memcmp 上的段错误

vba - 从第 x 行开始转到最后使用的行,忽略空格?

excel - 如何在 VBA 中定义下一个循环的范围

java - 返回包含字符串形式整数的字符串数组,用文本字符串替换某些数字的倍数

c# - 在 Excel 中粘贴值 C#