文本框有如下数据:
25 30 35 40 45
50 55 60 65 70
75 80 85 90 95
0  5  10 15 20
24 32 36 42 48
如何输出各行、各列和总平均值?数据要从文本框读取,方法要是一般性的方法(即行、列更多时仍可用)

解决方案 »

  1.   

        
        Dim sLineC() As String
        Dim sCharC() As String
        Dim pCount As Long, pChars As Long
        sLineC = Split(Text1.Text, vbCrLf)
        For i = 0 To UBound(sLineC) - 1
            sCharC = Split(Trim(sLineC(i)), " ")
            For j = 0 To UBound(sCharC) - 1
                If IsNumeric(sCharC(j)) = True Then
                    Dim pTmp As Long
                    pTmp = CLng(Trim(sCharC(j)))
                    pCount = pCount + pTmp
                    pChars = pChars + 1
                End If
            Next
            
        Next
        
        Debug.Print "Args:" & pCount / pChars
    '---------------计算结果:42.7
    '以上代码可以任意行使用
      

  2.   

    1、先用:LineData=Split(Text1.Text,VbCrLf)
       获取每一行,每个数组元素占一行;
       用Ubound(LineData)返回文本框的行数。
    2、再用:ColData=split(LineData(i)," ")
       获取每一行中的元素,即数值;
       用Ubound(ColData)返回每一行的元素个数。
    3、分别输出并求平均值。
      

  3.   

    原来写过一个类似的例子,稍改了一下:
    Dim Arr(4, 4)
    Private Sub Command1_Click()
    For i = 0 To UBound(Arr, 1)
    Total2 = 0
    For j = 0 To UBound(Arr, 2)
    Total1 = Total1 + Val(Arr(i, j))
    Total2 = Total2 + Val(Arr(i, j))
    Next
    Print Tab(7); "第" & i + 1 & "行的平均值是:" & Total2 / 5
    Next
    For j = 0 To UBound(Arr, 2)
    Total3 = 0
    For i = 0 To UBound(Arr, 1)
    Total3 = Total3 + Val(Arr(i, j))
    Next
    Print Tab(7); "第" & j + 1 & "列的平均值是:" & Total3 / 5
    Next
    average1 = Total1 / 25
    Print Tab(7); "总的平均值是:" & average1
    End SubPrivate Function delspace(ByVal str As String)
    str = Replace(str, " ", "*")
    str = Replace(str, "**", "*")
    delspace = str
    End Function
    Private Sub Form_Load()
    Form1.Show
    Print
    Print
    Print
    Form1.FontSize = 18
    Open "C:\01.txt" For Input As #1
    b = ""
    Do Until EOF(1)
    Line Input #1, nextline
    Print Tab(7); nextline
    b = b & nextline & "|"
    Loop
    Close #1
    a = Split(Trim(b), "|")
    For i = 0 To UBound(a) - 1
    a(i) = delspace(a(i))
    C = Split(a(i), "*")
    For j = 0 To UBound(C)
    Arr(i, j) = C(j)
    Next
    Next
    End Sub