Abh*_*Net 6 excel vba excel-vba
我试图通过VBA宏在Excel中转置一系列单元格,但我收到一些错误,主要是错误91.
我对VBA很新,对功能也不太了解.
Range(InRng).Select
Set Range1 = Selection
Dim DestRange As Range
Set DestRange = Application.WorksheetFunction.Transpose(Range1)
Run Code Online (Sandbox Code Playgroud)
经过几个论坛后,这就是我想出的.需要注意的一点是,我不必将它们复制到任何其他单元格中.
我想要实现的是创建一个协方差方法,在选项窗口中,用户可以选择范围,然后按列或行选择,这将影响生成的协方差矩阵.
Jam*_*ull 10
这会将X和X'作为可以传递给另一个函数的变量数组.
Dim X() As Variant
Dim XT() As Variant
X = ActiveSheet.Range("InRng").Value2
XT = Application.Transpose(X)
Run Code Online (Sandbox Code Playgroud)
要将转置值作为范围,您必须通过工作表传递它,如本答案中所示.如果没有看到你的协方差函数如何工作,很难看出你需要什么.
首先复制源范围,然后使用Transpose:= True,短样本粘贴特殊目标范围:
Option Explicit
Sub test()
Dim sourceRange As Range
Dim targetRange As Range
Set sourceRange = ActiveSheet.Range(Cells(1, 1), Cells(5, 1))
Set targetRange = ActiveSheet.Cells(6, 1)
sourceRange.Copy
targetRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub
Run Code Online (Sandbox Code Playgroud)
Transpose函数接受Varaiant类型的参数并返回Variant.
Sub transposeTest()
Dim transposedVariant As Variant
Dim sourceRowRange As Range
Dim sourceRowRangeVariant As Variant
Set sourceRowRange = Range("A1:H1") ' one row, eight columns
sourceRowRangeVariant = sourceRowRange.Value
transposedVariant = Application.Transpose(sourceRowRangeVariant)
Dim rangeFilledWithTransposedData As Range
Set rangeFilledWithTransposedData = Range("I1:I8") ' eight rows, one column
rangeFilledWithTransposedData.Value = transposedVariant
End Sub
Run Code Online (Sandbox Code Playgroud)
我将尝试解释" 调用两次转置 " 的目的.如果您在Excel中有行数据,例如"a1:h1",那么范围("a1:h1").值是2D变体数组,其中dimmensions为1到1,1到8.当你调用Transpose(Range("a1:h1").Value)然后你得到转换的2D Variant Array,其尺寸为1到8,1到1.如果你调用Transpose(Transpose(Range("a1:h1").Value))你得到1D变体数组,其大小为1到8.
第一个转置将行更改为列,第二个转置将列更改回行但只有一个维度.
如果源范围将有更多行(列),例如"a1:h3",则转置功能只会改变这样的尺寸:1到3,1到8转换为1到8,1到3,反之亦然.
希望我没有混淆你,我的英语很糟糕,对不起:-).
| 归档时间: |
|
| 查看次数: |
130616 次 |
| 最近记录: |