本帖最后由 wang1950317 于 2013-11-25 20:09 编辑
各位老师们好!在A B C列输入数据后 在D列计算结果 已知 AB两列一定有数据,C 列有时置空 想要达到的目的: 1如果C列为空,执行下面的代码: Range("D1").Select Selection.FormulaArray="=IF(SUM(--ISNUMBER(A1:B1)),AVERAGE(IF(ISNUMBER(A1:B1),A1:B1,RIGHT(A1:B1,LEN(A1:B1)-1)/2)),A1)" Selection.AutoFill Destination:=Range("D1100"),Type:=xlFillDefault Range("D1100").Select
若果C列也有数据,执行下列代码: Range("D1").Select Selection.FormulaArray="=IF(SUM(--ISNUMBER(A1:C1)),AVERAGE(IF(ISNUMBER(A1:C1),A1:C1,RIGHT(A1:C1,LEN(A1:C1)-1)/2)),A1)" Selection.AutoFill Destination:=Range("D1100"),Type:=xlFillDefault Range("D1:D100").Select
2 当AB(C)有数据才计算,没有数据不出现0 上面的两段代码怎样改动?
有位老师给出以下代码: Sub Macro2() Dim Arr, i& [d:d].ClearContents Arr = Sheet1.UsedRange For i = 1 To UBound(Arr) If Arr(i, 1) = "" Then GoTo 100 If Arr(i, 3) <> "" Then Cells(i, 4).FormulaArray = _ "=IF(SUM(--ISNUMBER(RC[-4]:RC[-2])),AVERAGE(IF(ISNUMBER(RC[-4]:RC[-2]),RC[-4]:RC[-2],RIGHT(RC[-4]:RC[-2],LEN(RC[-4]:RC[-2])-1)/2)),RC[-4])" Else Cells(i, 4).FormulaArray = _ "=IF(SUM(--ISNUMBER(RC[-3]:RC[-2])),AVERAGE(IF(ISNUMBER(RC[-3]:RC[-2]),RC[-3]:RC[-2],RIGHT(RC[-3]:RC[-2],LEN(RC[-3]:RC[-2])-1)/2)),RC[-3])" End If 100: Next End Sub ***************** 打开工作簿文件时有提示:“ 。。。在打开工作簿时有一个循环引用,在当前情况下,无法列出造成循环的引用。请利用编制菜单的撤销命令删除上次键入的公式,或直接编辑该公式。”继续运行后,当C为空值时,计算完全正确,但在ABC三列都有数据时计算结果均为0.请专家指教!谢谢!
|