我遇到这样的问题:在工作表“团队概述”(设置到名为“ tbl”的表,第2列的表)中获取命名范围,然后将其粘贴到另一个名为“知识矩阵”的工作表中的另一个命名范围中“(可以通过将其定向为绝对引用来解决,但是如果我更改表/工作表中的列数,则需要更新VBA中的代码。)
我尝试过使用遍历数组并仅切换x,y,坐标,但是我遇到的困难是将选择内容复制到另一个命名范围,并将源命名范围分配给变量rng(返回运行时错误5-无效的程序)。
该代码适用于测试没有命名范围和仅具有绝对引用的表的文件。
Sub Transpose()
Dim rng As Range
Dim rngT As Range
Dim oarray As Variant
Dim cl As Long
Dim rw As Long
Set rng = ThisWorkbook.Sheets("Team overview").Range("Name")
Set rngT = ThisWorkbook.Sheets("Knowledge Matrix").Range("Target")
oarray = rng
For cl = 1 To UBound(oarray)
For rw = 1 To UBound(oarray, 2)
Cells(rw, cl) = oarray(cl, rw)
Next
Next
End Sub
整个图片:
表“ tbl”用于清晰地概述团队成员。当团队负责人添加/删除一个时,我需要在所有其他表标题中对其进行更新。由于标头中不能包含公式,因此我想将列以转置的方式复制到其他表标头的命名范围中。
该成员处于“活动”或“蝴蝶”状态的情况也略有复杂,但这仅是最上面的樱桃。
所以基本上:
如果可能,我不希望使用.Select
。
答案 0 :(得分:0)
已经有一种称为“转置”的方法。
Sub MyTranspose()
Dim rng As Range
Dim rngT As Range
Dim oarray As Variant
Set rng = ThisWorkbook.Sheets("Team overview").Range("Name")
Set rngT = ThisWorkbook.Sheets("Knowledge Matrix").Range("Target")
oarray = rng.value2
rngT.resize(ubound(oarray, 2), ubound(oarray, 1)) = _
application.transpose(oarray)
End Sub