怎么使用EXCEL宏命来自令实现自动计算功能?

excel

1个回答

写回答

想吃脆骨

2025-09-23 05:55

+ 关注

VBA
VBA

  送你两个函数,可以计算单元格或单元格区域中可能包含的四则运算(包括有括号)。如,我有15元+欠别人10元,汇总结果=25,而不是 5   CharToValue() 函数可计算单个单元格中可能含有的计算公式。若A1单元格有3×4+3,要求B1出结果,请在B1的输入框中填写=CharToValue(A1) 。并支持下拉自动应用公式。   StrToSUM()函数可计算单元格区域中可能含有的计算公式。若想在H10中求A1:F10的汇总结果,请在H10的输入框中填写=StrToSUM(A1:F10) 。   '以下是需要使用的代码,请按下ALT+F11启动VBA编辑器,插入一个模块,将以下代码粘贴其中,就可以应用了。   Public Function CharToValue(myRange As Range) As Single   '将单元格中可能存在的算式进行计算(仅限于四则运算和括号)   On Error Resume Next   Dim Str1 As String, Str2 As String, Str3 As String, Str4 As String   Dim i As Integer   Str1 = myRange.Text   Str2 = 1234567890.+-*/ ()+-×÷()   '取出算式   For i = 1 To Len(Str1)   Str3 = Mid(Str1, i, 1)   If InStr(1, Str2, Str3) 0 Then   Str4 = Str4 & Str3   End If   Next   '替换算式中因为习惯可能存在的非法,以利计算   Str4 = Replace(Str4, +, +)   Str4 = Replace(Str4, -, -)   Str4 = Replace(Str4, ×, *)   Str4 = Replace(Str4, ÷, /)   Str4 = Replace(Str4, (, ()   Str4 = Replace(Str4, ), ))   Str4 = Evaluate(Str4)   If IsNumeric(Str4) = True Then   CharToValue = Val(Str4)   Else   CharToValue = 0   End If   End Function 地菜副任倒属阳态  Public Function StrToSUM(myRange As Range) As Single   '将单元格区域中含有的算式汇总结果——区域中单元格必须连续   '如:我有15元+欠别人10元,汇总结果=25,而不是 5   Dim i As Long   Dim SumSing As Single   With myRange   For i = 1 To .Cells.Count   SumSing = SumSing + CharToValue(.Cells(i))   Next   End With   StrToSUM = SumSing   End Function

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号