• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用VB6控制Excel處理數據

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 31次 | 進入軟件測試論壇討論

    領測軟件測試網 浙江大學農業生物環境工程研究所 泮進明 張穎萍  

    Excel是微軟辦公軟件的“大腕”之一,幾乎已經成為電子表格軟件的代名詞。除了管理數據并對其進行一些簡單的數學運算外,Excel還擁有強大的數據處理功能,尤其是其中的數理統計功能,更是那些對SAS、SPSS望而生畏的“軟腳蟹”們的最佳選擇;但Excel并非真是如此那么簡單,要隨心所欲運用之并非易事,本大蝦周圍總有人被Excel的INDEX結果顯示整得云里霧里(還有很多問題哦。。最近本大蝦潛入海底閉關修煉了一陣,試著打造“VB+Excel”,期望推出“傻瓜型”數據處理“小件”,已有所小成,F以調用Excel中的LINEST(多元線性回歸函數)為例,和各位大蝦煮酒論劍,望指正。
    一、VB控制界面組成
    數據輸入控件:TextDataNum(數據組數輸入TextBox),TextFacNum(參數個數輸入TextBox),TextInput(實驗數據輸入中介TextBox),GridIn(實驗數據表格MSFlexGrid);
    結果輸出控件:LabTRV(回歸相關系數顯示Label),LabTEV(回歸總體方差顯示Label),GridOut(各參數回歸系數、標準誤差顯示表格MSFlexGrid);
    程序控制控件:ComCalcu(程序執行按鈕CommandButton);
    其它控件從略。
    二、操作步驟
    操作步驟簡述如下:
    1、引用Microsoft Excel類型庫
    “工程”-“引用”-選擇“Microsoft Excel 8.0 Object Library”-“確定”
    2、聲明顯式數據類型,創建新實例并獲取Excel的控制句柄
    Dim ExcelObject As Excel.Application
    Set ExcelObject = CreateObject("Excel.Application")
    3、調用并顯示Excel
    Excelobject.Visible = True
    由于Excel啟動為不可見,在編程調試過程中,需要監測之,完工后最好Rem。
    4、將GridIn中的數據送入Excel
    5、Excel對數據進行多元回歸
    6、將Excel運算結果輸入GridOut,LabTRV 和LabTEV
    7、最后交還Excel控制句柄
    Set ExcelObject = Nothing
    此方法也可直接控制其他大量應用軟件,可從你的Object Library略知一二。
    三、操作程序
    部分源程序代碼如下:
    通用聲明
    Dim DNum As Integer ' DNum數據組數
    Dim FNum As Integer ' FNum參數個數
    Dim ExcelObject As Excel.Application
    表格初始化
    --DataGRidMK 'GridIn制作模塊
    Sub DataGRidMK()  
    DNum = Val(Me.TextDataNum.Text)
    FNum = Val(Me.TextFacNum.Text)
    With Me.GridIn
    .Cols = FNum + 2
    .Rows = DNum + 1
    End With
    With Me.GridIn
    .Row = 0
    .Col = 0: .Text = " 實驗數據"
    .Col = 1: .Text = " 測值Y"
    For i = 1 To .Cols - 1
    .ColWidth(i) = 1200
    Next i
    For i = 2 To .Cols - 1
    .Col = i
    .Text = " 參數 X" & (i - 1)
    Next i
    For i = 1 To .Rows - 1
    .Col = 0
    .Row = i: .Text = " " & i
    Next i
    End With
    End Sub
    --DataInitial '隨機產生GridIn數據模塊
    Sub DataInitial() '隨機產生表格數據
    Randomize Timer
    With Me.GridIn
    For i = 1 To .Rows - 1
    .Row = i
    For j = 1 To .Cols - 1
    .Col = j
    .Text = Rnd * 500 \ 1
    Next j
    Next i
    End With
    End Sub  
    為方便程序調式,實驗數據采用隨機產生;也可自行修改/輸入,從略
    --GridOutMK 'GridOut制作模塊
    Sub GridOutMK()
    With Me.GridOut
    .Cols = FNum + 2
    .Rows = 3
    End With
    With Me.GridOut
    .Row = 0
    .Col = 0: .Text = " 回歸輸出"
    .Col = 1: .Text = " Const"
    .Row = 1: .Col = 0: .Text = " 系數Ai"
    .Row = 2: .Col = 0: .Text = " 相關系數"
    For i = 1 To .Cols - 1
    .ColWidth(i) = 1200
    Next i
    .Row = 0
    For i = 2 To .Cols - 1
    .Col = i
    .Text = " 參數 X" & (i - 1)
    Next i
    End With
    End Sub
    回歸運算
    Private Sub ComCalcu_Click()
    ' GridOut清空
    With Me.GridOut
    For i = 1 To .Rows - 1
    .Row = i
    For j = 1 To .Cols - 1
    .Col = j
    .Text = ""
    Next j
    Next i
    End With
    'LabTEV,LabTRV處于等待狀態
    With Me.LabTEV
    .BackColor = vbBlue
    End With
    With Me.LabTRV
    .BackColor = vbBlue
    End With
      
    Dim SA As String, Sb$, Sc$
    Set ExcelObject = CreateObject("Excel.Application") '創建新實例
    'Excelobject.Visible = True '顯示調用
    ExcelObject.Workbooks.Add '添加新工作簿
    Sb = "B" & Format$(DNum)
    Sc = Chr$(65 + FNum) & Format$(DNum)
    '表格數據送入Excel
    For i = 1 To DNum
    Me.GridIn.Row = i
    For j = 1 To FNum + 1
    Me.GridIn.Col = j
    If Me.GridIn.Text = "" Then
    MsgBox "實驗數據有空缺,請補充完整。", vbOKOnly, "警告"
    With Me.LabTEV
    .Caption = "#VALUE"
    .BackColor = &HC0C0C0
    End With
    With Me.LabTRV
    .Caption = "#VALUE"
    .BackColor = &HC0C0C0
    End With
    'Set Excelobject = Nothing
    Exit Sub
    End If
    SA = Chr$(64 + j) & Format$(i)
    ExcelObject.Range(SA).Value = Me.GridIn.Text
    Next j
    Next i
    '回歸運算
    Dim Ip, P As String '定位回歸結果顯示單元格
    For i = 1 To 2
    Ip = Format$(i + DNum) 'i=1時在第Dnum+1行顯示系數,i=2時在第Dnum+2行 顯示標準誤差
    For j = 1 To FNum + 1
    P = Chr$(64 + j) & Ip
    ExcelObject.Range(P).Formula="=INDEX(LINEST($A$1:$A$"& Format$(DNum)  
    & ",$B$1:$" & Chr$(65 + FNum) & "$" & Format$(DNum) & ",1,1)," &  
    Format$(i) & "," & Format$(j) & ")"
    Next j
    Next i
    P = "A" & Format$(DNum + 3) '定位
    ExcelObject.Range(P).Formula = "=INDEX(LINEST($A$1:$A$" & Format$(DNum) & ",$B$1:$" & Chr$(65 + FNum) & "$" & Format$(DNum) & ",1,1),3,1)" '相關系數
    P = "B" & Format$(DNum + 3) '定位
    ExcelObject.Range(P).Formula = "=INDEX(LINEST($A$1:$A$" & Format$(DNum) & ",$B$1:$" & Chr$(65 + FNum) & "$" & Format$(DNum) & ",1,1),3,2)" '總體方差
      
    '顯示回歸結果至GridOut
    With Me.GridOut
    '顯示Const系數
    .Row = 1: .Col = 1
    P = Chr$(64 + FNum + 1) & Format$(DNum + 1)
    .Text = Format$(ExcelObject.Range(P).Value, "0.0000")
    '顯示Const標準誤差
    .Row = 2: .Col = 1
    P = Chr$(64 + FNum + 1) & Format$(DNum + 2)
    .Text = Format$(ExcelObject.Range(P).Value, "0.0000")
    For i = 1 To FNum
    '顯示系數
    .Row = 1
    P = Chr$(64 + i) & Format$(DNum + 1)
    .Col = FNum - i + 2
    .Text = Format$(ExcelObject.Range(P).Value, "0.0000")
    '顯示標準誤差
    .Row = 2
    P = Chr$(64 + i) & Format$(DNum + 2)
    .Col = FNum - i + 2
    .Text = Format$(ExcelObject.Range(P).Value, "0.0000")
    Next i
    End With
    '顯示總體相關系數
    P = "A" & Format$(DNum + 3)
    Me.LabTRV.Caption = Format$(ExcelObject.Range(P).Value, "0.0000")
    '顯示總體方差
    P = "B" & Format$(DNum + 3)
    Me.LabTEV.Caption = Format$(ExcelObject.Range(P).Value, "0.0000")
      
    With Me.LabTEV
    .BackColor = &HC0C0C0
    End With
    With Me.LabTRV
    .BackColor = &HC0C0C0
    End With
    Set ExcelObject = Nothing
    End Sub
    說明:Excel回歸結果“矩陣”(記為A())與一般的思維相異,以三元回歸為例,A(1,1)和A(2,1)分別為X3的回歸系數和標準誤差,A(1,2)和A(2,2)對應X2,A(1,3)和A(2,3)對應X1,A(1,4)和A(2,4)對應常數項,A(3,1)代表回歸相關系數,A(3,1)代表回歸總體方差。夠狡猾的吧?!其他問題還多著呢!按笸蟆眰冊瓉硪彩悄軕袆t懶的(同是打工仔,呵呵)。
    本程序在VB6.0調試通過。好了,本大蝦就灌這點水。各位大蝦請來信聯系:panhouse@sohu.com

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>