一說到數學方程,很多人就會馬上聯想到mathematica、MATLAB、mathCAD、maple等專業的數學軟件,確實這四個軟件是在科技和工程界上比較流行和著名,它們在各自針對的目標領域都有不同的特色。要是設計到專業的數學領域的問題當然就要用他們來解決,但是有時候我們的需求就只是想看看這個數學方程式的圖像,這個時候就沒有必要費力去安裝破解體積這麼龐大的軟件,其實我們日常使用的Excel就能夠擔當大任!下面就來詳細講解一下作圖思路和具體步驟:
先看一下最終的效果演示:

最終效果演示
步驟一:
新建一個工作表,命名為方程式和作圖數據,並按如圖所示填好相應的內容:

方程式表內容及參數填寫

作圖數據表格內容填寫
步驟二:
打開VBE編輯器(Alt+F11),或則在功能區打開,如下圖所示:

打開VBE編輯器
插入一個模塊,如下圖所示:

插入一個模塊
步驟三:
雙擊插入的模塊(默認名稱為:模塊1),粘貼以下兩段代碼,代碼的具體含義在這就不做詳細講解了,如有需要,歡迎交流,共同進步。
作圖代碼:
Sub 作圖()
Dim obReg As Object
Dim oMatch As Object
Dim length As Integer
length = (Sheets(“方程式”).Cells(2, 3).Value – Sheets(“方程式”).Cells(2, 2).Value) / Sheets(“方程式”).Cells(2, 4).Value
Set obReg = CreateObject(“vbscript.regexp”)
Sheets(“作圖數據”).Rows(“2:1048576”).Clear
Sheets(“方程式”).ChartObjects(“圖表 3”).Activate ‘假設只有一個圖表
With ActiveChart
For i = .SeriesCollection.Count To 1 Step -1
.SeriesCollection(i).Delete
Next
End With
With obReg
.Global = True
.IgnoreCase = True
.Pattern = “[x]”
End With
Sheets(“作圖數據”).Cells(2, 1).FormulaR1C1 = “=方程式!R2C2”
Sheets(“作圖數據”).Cells(3, 1).FormulaR1C1 = “=R[-1]C+方程式!R2C4”
Sheets(“作圖數據”).Cells(3, 1).AutoFill Destination:=Sheets(“作圖數據”).Range(Sheets(“作圖數據”).Cells(3, 1), Sheets(“作圖數據”).Cells(length + 2, 1))
For i = 0 To 9
Sheets(“作圖數據”).Cells(2, 2 + i).FormulaR1C1 = “=” & obReg.Replace(Sheets(“方程式”).Cells(2 + i, 1).Value, “RC[-” & i + 1 & “]”)
Sheets(“作圖數據”).Range(Sheets(“作圖數據”).Cells(2, 2 + i), Sheets(“作圖數據”).Cells(2, 2 + i)).AutoFill Destination:=Sheets(“作圖數據”).Range(Sheets(“作圖數據”).Cells(2, 2 + i), Sheets(“作圖數據”).Cells(length + 2, 2 + i))
Next
ActiveWorkbook.Names.Add Name:=”X_1″, RefersToR1C1:=”=OFFSET(作圖數據!R1C1,0,0,方程式!R2C7,1)”
For j = 1 To 10
ActiveWorkbook.Names.Add Name:=”Y_” & j, RefersToR1C1:=”=OFFSET(作圖數據!R1C” & j + 1 & “,0,0,方程式!R2C7,1)”
Next
ActiveSheet.ChartObjects(“圖表 3”).Activate
ActiveChart.SetSourceData Source:=Sheets(“作圖數據”).Range(“a1:b” & length + 2)
For k = 2 To 10
Application.Goto Reference:=”Y_” & k
Selection.Copy
Sheets(“方程式”).Select
ActiveSheet.ChartObjects(“圖表 3”).Activate
ActiveChart.Paste
Next
Sheets(“方程式”).ChartObjects(“圖表 3”).Activate
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MinimumScale = Sheets(“方程式”).Range(“e2”).Value
ActiveChart.Axes(xlValue).MaximumScale = Sheets(“方程式”).Range(“f2”).Value
ActiveChart.Axes(xlValue).MajorUnit = Sheets(“方程式”).Range(“E5”).Value
ActiveChart.Axes(xlValue).MinorUnit = Sheets(“方程式”).Range(“F5”).Value
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = Sheets(“方程式”).Range(“b2”).Value
ActiveChart.Axes(xlCategory).MaximumScale = Sheets(“方程式”).Range(“c2”).Value
ActiveChart.Axes(xlCategory).MajorUnit = Sheets(“方程式”).Range(“C5”).Value
ActiveChart.Axes(xlCategory).MinorUnit = Sheets(“方程式”).Range(“D5”).Value
End Sub
刷新代碼:
Sub 刷新()
Dim obReg As Object
Dim oMatch As Object
Dim length As Integer
length = (Sheets(“方程式”).Cells(2, 3).Value – Sheets(“方程式”).Cells(2, 2).Value) / Sheets(“方程式”).Cells(2, 4).Value
Set obReg = CreateObject(“vbscript.regexp”)
Sheets(“作圖數據”).Rows(“2:1048576”).Clear
With obReg
.Global = True
.IgnoreCase = True
.Pattern = “[x]”
End With
Sheets(“作圖數據”).Cells(2, 1).FormulaR1C1 = “=方程式!R2C2”
Sheets(“作圖數據”).Cells(3, 1).FormulaR1C1 = “=R[-1]C+方程式!R2C4”
Sheets(“作圖數據”).Cells(3, 1).AutoFill Destination:=Sheets(“作圖數據”).Range(Sheets(“作圖數據”).Cells(3, 1), Sheets(“作圖數據”).Cells(length + 2, 1))
For i = 0 To 9
Sheets(“作圖數據”).Cells(2, 2 + i).FormulaR1C1 = “=” & obReg.Replace(Sheets(“方程式”).Cells(2 + i, 1).Value, “RC[-” & i + 1 & “]”)
Sheets(“作圖數據”).Range(Sheets(“作圖數據”).Cells(2, 2 + i), Sheets(“作圖數據”).Cells(2, 2 + i)).AutoFill Destination:=Sheets(“作圖數據”).Range(Sheets(“作圖數據”).Cells(2, 2 + i), Sheets(“作圖數據”).Cells(length + 2, 2 + i))
Next
ActiveWorkbook.Names.Add Name:=”X_1″, RefersToR1C1:=”=OFFSET(作圖數據!R1C1,0,0,方程式!R2C7,1)”
For j = 1 To 10
ActiveWorkbook.Names.Add Name:=”Y_” & j, RefersToR1C1:=”=OFFSET(作圖數據!R1C” & j + 1 & “,0,0,方程式!R2C7,1)”
Next
Sheets(“方程式”).ChartObjects(“圖表 3”).Activate
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MinimumScale = Sheets(“方程式”).Range(“e2”).Value
ActiveChart.Axes(xlValue).MaximumScale = Sheets(“方程式”).Range(“f2”).Value
ActiveChart.Axes(xlValue).MajorUnit = Sheets(“方程式”).Range(“E5”).Value
ActiveChart.Axes(xlValue).MinorUnit = Sheets(“方程式”).Range(“F5”).Value
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MinimumScale = Sheets(“方程式”).Range(“b2”).Value
ActiveChart.Axes(xlCategory).MaximumScale = Sheets(“方程式”).Range(“c2”).Value
ActiveChart.Axes(xlCategory).MajorUnit = Sheets(“方程式”).Range(“C5”).Value
ActiveChart.Axes(xlCategory).MinorUnit = Sheets(“方程式”).Range(“D5”).Value
End Sub
步驟四:
在方程式表中插入兩個宏按鈕,具體操作如下:

插入按鈕(窗體控件)
完成後效果如下:

完成效果圖
步驟五:
將控件按鈕分別對應關聯到我們剛才粘貼的兩段代碼:

單擊右鍵指定宏

關聯對應的宏
步驟六:
大功告成!只需在方程式一欄中填寫自己想要作圖的方程然後點擊作圖即可生成函數圖像。
注意:當改變X、Y軸範圍時點擊作圖按鈕,只是改變方程時點擊刷新按鈕!!!

注意事項

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/272896.html
微信掃一掃
支付寶掃一掃