Arrays 数组函数的组合
我关心返回数组的函数的组合 例如,让我们定义Arrays 数组函数的组合,arrays,vba,Arrays,Vba,我关心返回数组的函数的组合 例如,让我们定义 Function APTranspose(X As Variant) As Variant Dim v() As Variant Dim r, c, rc, cc As Integer r = X.rows.count c = X.Columns.count ReDim v(1 To c, 1 To r) For cc = 1 To c For rc = 1 To r v(cc, rc) = X(rc, cc) Nex
Function APTranspose(X As Variant) As Variant
Dim v() As Variant
Dim r, c, rc, cc As Integer
r = X.rows.count
c = X.Columns.count
ReDim v(1 To c, 1 To r)
For cc = 1 To c
For rc = 1 To r
v(cc, rc) = X(rc, cc)
Next
Next
APTranspose = v
End Function
以及无用的功能
Function Identity(X As Variant) As Variant
Dim res As Variant
res = APTranspose(X)
res = APTranspose(res)
Identity = res
End Function
现在很清楚,函数(x)应该是x本身
然而我得到了#价值!在Excel上。一般来说,我无法合成数组函数。这是为什么
谢谢 出现问题的原因是,当您在
res=APTranspose(X)
行中调用APTranspose
时,它工作正常,因为X
是Range
类型的对象,它具有X.rows.count
和X.Columns.count
等属性。但是,当您在第res=APTranspose(res)
-res
行中调用此函数时,它不是Range
对象,它是一个数组,并且没有属性X.rows.count
和X.Columns.count
。这会触发一个错误
您可以使用以下代码:
Function APTranspose(X As Variant) As Variant
APTranspose = WorksheetFunction.Transpose(X)
End Function
Function Identity(X As Variant) As Variant
Dim res As Variant
res = APTranspose(X)
res = APTranspose(res)
Identity = res
End Function
UPD:
也可以使用以下功能:
Function APTranspose(X As Variant) As Variant
Dim v() As Variant
Dim r, c, rc, cc As Integer
If TypeOf X Is Range Then
r = X.Rows.Count
c = X.Columns.Count
Else
r = UBound(X, 1)
c = UBound(X, 2)
End If
ReDim v(1 To c, 1 To r)
For cc = 1 To c
For rc = 1 To r
v(cc, rc) = X(rc, cc)
Next
Next
APTranspose = v
End Function
Function Identity(X As Range) As Variant
Dim res() As Variant
res = APTranspose(X)
res = APTranspose(res)
Identity = res
End Function
在Excel中调用这个函数,那么我如何检索数组的行数/列数呢?真的吗?这对我很管用。你遇到了什么麻烦?