3.360     4.767     4.560     2.988      .211    -2.509    -2.908   -1.209
-1.290     -.953    -1.249    -1.998    -3.908    -3.131      .142   3.130
4.671     4.834     4.727     4.699     2.930      .644     -.776   -2.592
-2.223     -.097      .912    -1.308    -4.855    -3.859    .508      .241
.013     2.698     3.491     3.312     1.566      .575     1.137     2.116
.299    -2.998    -5.818    -4.720    -3.711    -3.405     -.726     1.288
-.414    -2.825    -3.052     -.250      .792     2.336     2.141  3.209
3.240     3.076     1.432    -1.518    -3.994     .244      .776   .142
-2.400    -2.796      .115     1.172     2.880      .571    -4
.117     5.017     6.685     6.809     2.779    -4.313    -7.274    -6.182
-3.663     -.017     1.599      .717     2.765     3.548     2.088   
我的文本数据中有几千个这样的数据,如何才能找到其中绝对值最大的一个

解决方案 »

  1.   

    我的天啊,这是文本数据,数与数之间总得有分隔符啊(是豆号“,”还是引号“”,还是空格)。先定义一个动态数组(Dim TextData() as long),用Open命令打开文本文件,然后将数据读入这个数组中。
        1、根据数组维数,即可知道数据的个数;2、用VB提供的Max函数求最大值(用一个递归函数,一对一对地求)。
      

  2.   

    一,读入文本到数组.不过按你给出的那格式,看来不是换行回车之类的分隔符....就先读入一个变量内,然后使用Split函数来拆分到一个数组;二,排序.使用任意一种排序算法把这个数组排序.具体到算法里的比较大小过程,使用ABS()函数就可以以绝对值进行比较了.三,输出.总数,如BD所说,数组的最大上标减最小下标就是了(SPLIT函数返回的数组最小下标是0,因此可以直接取最大上标,Ubound函数)绝对值最大的,直接找数组第一位或最后一位的成员(看排序是从大到小还是从小到大排的...)
      

  3.   

    Dim tmp As String, txtData() As String, i As Integer
    Dim MaxValue As SingleOpen "test.txt" For Input As #1
    Do Until EOF(1)
        Line Input #1, tmp
        If Trim(tmp) > "" Then
            tmp = Replace(tmp, vbTab, Space(1))
            Do While InStr(tmp, Space(2))
                tmp = Replace(tmp, Space(2), Space(1))
            Loop
            txtData = Slipt(tmp, Space(1))
            For i = 0 To Ubound(txtData)
                If Abs(Val(txtData(i))) > Abs(MaxValue) Then MaxValue = Val(txtData(i))
            Next i
        End If
    LoopMsgBox MaxValue
      

  4.   

    楼上正解
    Dim tmp As String, txtData() As String, i As Integer
    Dim MaxValue As SingleOpen "test.txt" For Input As #1
    Do Until EOF(1)
        Line Input #1, tmp
        If Trim(tmp) > "" Then
            tmp = Replace(tmp, vbTab, Space(1))
            Do While InStr(tmp, Space(2))
                tmp = Replace(tmp, Space(2), Space(1))
            Loop
            txtData = Slipt(tmp, Space(1))
            For i = 0 To Ubound(txtData)
                If Abs(Val(txtData(i))) > Abs(MaxValue) Then MaxValue = Val(txtData(i))
            Next i
        End If
    LoopMsgBox MaxValue
      

  5.   

    可以找到最大值了txtData = Slipt(tmp, Space(1))
    上面的split函数写错了