计算精度问题 Sub d4() Application.ScreenUpdating = False Dim qishi As Long, jieshu As Long, K1 As String qishi = Range("n7").Row jieshu = Range("g7").End(xlDown).Row Range("P" & qishi & ":bi65536") = "" For qishi = qishi To jieshu If Range("G" & qishi) = "本月合计" Then m = qishi - 1 i = Range("C" & m + 1).End(xlUp).Row Range("H" & m + 1) = Evaluate("SUMPRODUCT(($B$6:$B" & i & "=$B" & i & ")*H$6:H" & i & ")") Range("J" & m + 1) = Evaluate("SUMPRODUCT(($B$6:$B" & i & "=$B" & i & ")*J$6:J" & i & ")") ElseIf Range("G" & qishi) = "本年累计" Then n = qishi - 2 Range("H" & n + 2) = Evaluate("SUMPRODUCT(($B$6:$B" & n & ">0)*H$6:H" & n & ")") Range("J" & n + 2) = Evaluate("SUMPRODUCT(($B$6:$B" & n & ">0)*J$6:J" & n & ")") End If Range("p" & qishi & ":u" & qishi) = Range("b" & qishi & ":g" & qishi).Value Range("ah" & qishi) = Range("i" & qishi) Range("au" & qishi) = Range("k" & qishi) Range("bh" & qishi) = Range("m" & qishi)
If Range("h" & qishi) <> "" Then K1 = CStr(WorksheetFunction.Round(Range("h" & qishi) * 100, 0)) For i = 1 To Len(K1) If VBA.IsNumeric(Mid(K1, i, 1)) = True Then f = 33 - Len(K1) + i Cells(qishi, f) = Mid(K1, i, 1) End If Next i End If If Range("j" & qishi) <> "" Then K1 = CStr(WorksheetFunction.Round(Range("j" & qishi) * 100, 0)) For i = 1 To Len(K1) If VBA.IsNumeric(Mid(K1, i, 1)) = True Then f = 46 - Len(K1) + i Cells(qishi, f) = Mid(K1, i, 1) End If Next i End If If Range("l" & qishi) <> "" Then K1 = CStr(WorksheetFunction.Round(Range("l" & qishi) * 100, 0)) For i = 1 To Len(K1) '多次运算后这个地方LEN(K1) 始终是=4 If VBA.IsNumeric(Mid(K1, i, 1)) = True Then f = 59 - Len(K1) + i Cells(qishi, f) = Mid(K1, i, 1) End If Next i End If Next qishi Range("N2") = qishi Application.ScreenUpdating = True End Sub |