VBA在Excel中求解一元一次方程式_第1页
VBA在Excel中求解一元一次方程式_第2页
VBA在Excel中求解一元一次方程式_第3页
VBA在Excel中求解一元一次方程式_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自建公式,VBA在Excel中计算一元一次方程式

小学必考内容:一元一次方程式。

只要将方程输入到Excel工作表单元格内,VBA代码可以快速识

别方程未知数,求得未知数系数和常数值,使用自建公式,一拖一拉,

快速求解一元一次方程。

先看效果图:

B2▼A|=finalx(A2)

ABC

1方程,求露

25X-8=103.6

38M-10=6M-33.5

17y-8=5y-42

56b=7b-33

59h-6h=155

75v-4v+10=3-7

操作思路:

1、查找方程中未知数,未知数可以是“A-Z“和“a-z”遍历方

程字符串,凡为以上字母,均将替换;

2、计算常数,将上述查询到的字母替换成“*0”,将方程“二”

两边分成两个数组,左边数组数值计算得数后*(-1)后与右数数组

数值相加;

3、计算未知数系数,将上述查询到的字母替换成“*1”,将方

程“二”两边分成两个数组,右边数组数值计算得数后*(-1)后与左

数数组数值相加,再加上2中得出的常数值,即为未知数系数。

4、常数除以未知数系数,即为未知数值。

优点:未知数可以是26个字母大小写,适用于大多数方程式。

缺点:常数只能是数值,不能是字母。

如不符合实际需求,有兴趣的童鞋可以修改未知数和常数的判断

条件。

代码如下:

'去除方程中未知数,将未知我转为“*0”

FunctionDeIX(strAsString)AsString

DimcAsString

DimiAsInteger

DimtmpAsString

Fori=1ToLen(str)

c=Mid(str,i,1)

If(c>"A"Andc<"Z")Or(c>"a"Andc<"z")Then

c="*0"

tmp=tmp&c

Else

tmp=tmp&c

EndIf

Next

DeIX=tmp

EndFunction

'计算方程中常数

Functionchangshu(strAsString)AsInteger

Dimarr()AsString

DimtmpAsString

DimCSLeftAsString

DimCSRightAsString

DimchangshuLeftAsInteger

DimchangshuRightAsIntsger

DimjisuanAsInteger

ReDimarr(2)

tmp=DelX(str)

arr=Split(tmp,"=")

CSLeft=EvaluateCarr(0))'数值计算

CSRight=Evaluate(arr(1))

changshuLeft=-1*CSLeft'所有常数移到右边,符号变化

changshuRight=Clnt(CSRight)

changshu=changshuLeft+changshuRight,常数值为右边常会减去左边常数

EndFunction

'计算方程中未知数的系数一,先将未知数替换成“*1”

FunctionxishuX(strAsString)AsString

DimcAsString

DimiAsInteger

DimtmpAsString

Fori=1ToLen(str)

c=Mid(str,i,1)

If(c>"A"Andc<"Z")Or(c>"a"Andc<"z")Then

c="*1"

tmp=tmp&c

Else

tmp=tmp&c

EndIf

Next

xishuX=tmp

EndFunction

'计算方程中未知数的系数二

Functionxishu(strAsString)AsInteger

Dimarr()AsString

DimtmpAsString

DimXSLcftAsString

DimXSRightAsString

DimXishuLeftAsInteger

DimChangsAsInteger

tmp=xishuX(str)

arr=Split(tmp,"=")

XSLeft=Evaluate(arr(0))'计算左边数值

XSRight=Evaluate(arr(D)'计算右边数值

xishuRight=-1*XSRight'右边移动左边,符号变化

Changs=changshu(str)'获取常数值

xishu=xishuRight+Clnt(XSLeft)+Changs'未知数系数为所有数值移到左边后得数加上常数

EndFunction

'计犀方程得致

FunctionfinalX($trAsString)AsDoubIe

DimxishuFAsInteger

DimchangshuFAsInteger

xishuF=xishu(str)

changshuF=changshu(str)

finaIX=changshuF/xisnuF

EndFunction

代码截图:

'去除方程中未知数,将未知数转为“*0”

FunctionDelX(strAsString)AsString

DincAsString

Di-iAsInteger

DiatmpAsString

Fori=1ToLen(str)

c=Mid(str,i,1)

If(c>XAndc<Z)Or(c>Andc<*z*)Then

e="*0"

tmp=tnp&c

Else

tmp=tmp&c

EndI£

Next

DelX=tmp

EndFunction

'计算方程中常数

Functionchan5shu(strAsString)AsInteger

Dinarr()AsString

DintmpAsString

DinCSLeftAsString

DIBCSKightAsString

DinchangshuLeftAsInteger

Di»changshuRightAsInteger

DinjisuanAsInteger

ReDinarr(2)

tmp=DelX(str)

arr=Split(t«p,*=*)

CSUft=Evaluate(arr(O)),数值计算

CSRight=Evaluate(&rr(1))

chm>huU£t=-1*CSLo£t'所有常数移至循边,存号变化

chmgxhuRight=CInt(CSRight)

ch^ngzhu=chgphuL.ft+ch«n«zhuRight'常数值为右边京致诚去左边常数

EndFunction

'计算方程中未知软的系数一,,先芦未知既菅扬成“*1”

FunctionxishuX(strAsString)AsString

DXHtA、SuIAI^

DiniAsInteger

DintmpAsString

Fori=1ToLen(str)

c=Mid(str,1,1)

If(c>"A"Andc<"Z")Or(c>\"Andc<"/)Then

Else

tmp=tmp&c|

EndIf

Next

xizhuX=imp

EndFunction

’计算方程中未知数的系数二

Functionxishu(strAsString)AsInteger

Dimarr()AsString

DimtmpAsString

DimXSLeftAsString

DimXSRightAsString

DimXishuLeftAsInteger

DimChangsAsInteger

trap=xishuX(str)

arr=Split(tmp/*=*)

XSLeft=Evaluate(arr(0))'计算左边款值

XSRight=Evaluate(arr(1)),计算看边巍值

xishuRight=-1*XSRight冬播动左边,符号变化

Changs=changshu(str),获前常数值

xishu=xishuRight+CInt(XSLeft)+Changs,未知数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论