我正在努力在VBA中创建一个函数,用于计算nxn维矩阵的每列中缺失值的数量。
每列应仅包含数字1到n一次。 但是,如果不是这种情况,我希望函数说明缺少多少个值。例如,在4x4矩阵(1,2,1,3)的列中,有一个缺失值为4,函数应返回值1,为1缺失值。
我对VBA很新,绝不是高手,但这是我到目前为止所做的......
Function calcCost(sol() As Integer, n As Integer) As Integer
Dim ArrayOfTruth(1 To n) As Boolean
For Row = 1 To n
For i = 1 To n
If ProbMatrix(Column, Row) = i Then
ArrayOfTruth(i) = True
cost = 0
For i = 1 To n
If ArrayOfTruth(i) = True Then
cost = cost + 1
答案 0 :(得分:0)
假设方形单元格的要求取代了'矩阵'值的描述,我不确定为什么需要一个数组。
Function calcCost(rTopLeft As Range, n As Long)
Dim c As Long, r As Long
For c = 1 To n
If Not CBool(Application.CountIf(rTopLeft.Resize(n, n), c)) Then _
r = r + 1
Next c
calcCost = r
End Function
语法:
= calcCost(<所需范围的左上角>,<向右和向下的单元格数> )
示例:
=calcCost(E9, 18)
上述实现也可以写成,
=18-SUMPRODUCT(--SIGN(COUNTIF(OFFSET(E9,0,0,18,18), ROW(1:18))))