我又注释了一下,大家再看看,是哪里思路不对:
Function SumRowCol(Row As Range, Col As Range) On Error Resume Next Application.Volatile '自动更新计算结果 Dim x, y, rng Dim Z% Dim AAA, BBB
''查找小数位置 Z = Application.WorksheetFunction.Find(";", ActiveCell.NumberFormatLocal) - 5 ''取设定位数的求和 x = Round(Application.Sum(Row), Z) * 1 y = Round(Application.Sum(Col), Z) * 1 ''以上判断并求和 ''如果竖向x与横向y相等,则直接求和 If x = y Then SumRowCol = (x + y) / 2 ''如果竖向x与横向y不相等,则分三个情况分别求和 ElseIf x <> y Then ''在求和的第一个参数里,即在竖向,查找±号, Set AAA = Row.Find(What:="±", LookAt:=xlPart, SearchFormat:=False) ''在求和的第二个参数里,即在横向,查找±号, Set BBB = Col.Find(What:="±", LookAt:=xlPart, SearchFormat:=False) ''如果竖向有±号,说明竖向有偏差,就计算竖向的偏差值,也就是求竖向带±的单元格的和。 If Not AAA Is Nothing Then SumRowCol = "±" & Sum±(Row) ''如果横向有±号,说明横向有偏差,就计算横向的偏差值,也就是求横向带±的单元格的和。 ElseIf Not BBB Is Nothing Then SumRowCol = "±" & Sum±(Col) ''如果横向与竖向都没有±号,说明两个方向的计算是偏差值,则直接对横向或竖向求和(我是采用横向与竖向的平均值)。 ElseIf AAA Is Nothing And BBB Is Nothing Then SumRowCol = "±" & Round(Abs((x - y)), Z) End If End If End Function 把附件修改了一下,再传上来看看:
把附件修改了一下,再传上来看看:
tTvIMqFg.rar
(18.74 KB, 下载次数: 12)
|