本帖最后由 zhengdafangyuan 于 2013-02-09 18:04:10 编辑

解决方案 »

  1.   

    每一行数据中,字符串间的分隔是一个Tab键
      

  2.   

    文本文件必须按NAME排序
        Dim i, k, sta_a() As String, s As String, ss() As String
        Dim name As String, n As Integer, s6 As Integer
        Open "d:\a.txt" For Input Lock Read As #1
        i = 0
        Line Input #1, s
        Do While Not EOF(1)   
            Line Input #1, s
            i = i + 1
        Loop
        ReDim str_a(i)
        For k = 0 To i
            str_a(k) = "1"
        Next k
        Seek 1, 1
        i = 0
        Line Input #1, s
        Do While Not EOF(1)
           Line Input #1, s
           ss = Split(s, Chr(9))
           'conc1和conc2都小于10
           If Val(ss(2)) < 10 And Val(ss(5)) < 10 Then
                str_a(i) = "0"
           End If
           i = i + 1
        Loop
        
        Seek 1, 1
        i = 0
        Line Input #1, s
        Do While Not EOF(1)
           Line Input #1, s
           i = i + 1
           If str_a(i - 1) = "1" Then
                ss = Split(s, Chr(9))
                 If i = 1 Then
                      name = ss(1)
                      n = 1
                      s6 = 0
                      If Val(ss(6)) > 1 Then
                          s6 = s6 + 1
                      End If
                 Else
                      If name <> ss(1) Then
                          If n = 1 Then
                              name = ss(1)
                              n = 1
                              s6 = 0
                              If Val(ss(6)) > 1 Then
                                  s6 = s6 + 1
                              End If
                              '单行的
                              str_a(i - 1) = "0"
                          Else
                              '一组都大于1或小于1
                              If s6 = n Or s6 = 0 Then
                                 k = i - 1
                                 Do While n <> 0
                                    If str_a(k - 1) = "1" Then
                                        n = n - 1
                                        str_a(k - 1) = "0"
                                    End If
                                    k = k - 1
                                 Loop
                              End If
                              name = ss(1)
                              n = 1
                              s6 = 0
                              If Val(ss(6)) > 1 Then
                                  s6 = s6 + 1
                              End If
                          End If
                      Else
                          n = n + 1
                          If Val(ss(6)) > 1 Then
                              s6 = s6 + 1
                          End If
                      End If
                 End If
           End If
        Loop
       If n = 1 Then
            name = ss(1)
            n = 1
            s6 = 0
            If Val(ss(6)) > 1 Then
                s6 = s6 + 1
            End If
            '单行的
            str_a(i - 1) = "0"
        Else
            '一组都大于1或小于1
            If s6 = n Or s6 = 0 Then
               k = i - 1
               Do While n <> 0
                  If str_a(k - 1) = "1" Then
                      n = n - 1
                      str_a(k - 1) = "0"
                      
                  End If
                  k = k - 1
               Loop
            End If
            name = ss(1)
            n = 1
            s6 = 0
            If Val(ss(6)) > 1 Then
                s6 = s6 + 1
            End If
        End If
        Open "d:\b.txt" For Output As #2
        i = 0
        Seek 1, 1
        Line Input #1, s
        Write #2, s
        Do While Not EOF(1)  
            Line Input #1, s
            If str_a(i) = "1" Then
               Write #2, s
            End If
            i = i + 1
        Loop
        Close #1
        Close #2
        MsgBox "ok"