循环语句求教高手,谢谢!!!
有字符串aa:
aaa
bbb
ccc
ddd
eee
fff有字符串bb:
bbb kkk
ddd kkk
fff kkk我想把字符串aa和bb各以vbcrlf分割,然后用分割后的aa里的每个数据和分割后的bb里的每个数据循环比较后,写入字符串cc,如分割后的aa里的每个数据在分割后的bb里的数据里有部分相同(如aa里的bbb和bb里的bbb kkk)
,则把bb里的数据写入cc(aa里的数据bbb不写入),如分割后的aa里的每个数据在分割后的bb里的数据不相同(如aa里的aaa),则把aa里的数据写入cc,写入后的cc为:
aaa
bbb kkk
ccc
ddd kkk
eee
fff kkk

解决方案 »

  1.   


    Split函数
          描述返回一个下标从零开始的一维数组,它包含指定数目的子字符串。语法Split(expression[, delimiter[, count[, compare]]])Split函数语法有如下几部分:部分 描述 
    expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。 
    delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。 
    count 可选的。要返回的子字符串数,–1表示返回所有的子字符串。 
    compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。 
    设置值compare参数的设置值如下:常数 值 描述 
    vbUseCompareOption –1 用Option Compare语句中的设置值执行比较。 
    vbBinaryCompare 0 执行二进制比较。 
    vbTextCompare 1 执行文字比较。 
    vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。 
      

  2.   

    Split是解决楼上方法的一个捷径.
    dim KK() as string
    dim DD() as string
    dim Cc as string
    dim I as long,J as long
    kk=split(aa,chr(13))
    dd=split(bb,chr(13))
    j=0
    for i=0 to ubound(kk) step 2 '奇
      cc=cc & kk(i) & chr(13) & dd(j)
      j=j+1
    next
    '这只是普通演示,还要一些改进,自己完成吧.
      

  3.   

    没有调试:Private Sub Command1_Click()
    Dim tempaa() As String, tempbb() As String
    Dim Cc As String, I As Long, J As Long
    tempaa = Split(aa, vbCrLf)
    tempbb = Split(bb, vbCrLf)For I = 0 To UBound(tempaa)
    For J = 0 To UBound(tempbb)
     If InStr(tempbb(J), tempaa(I)) > 0 Then
     tempaa(I) = tempbb(J)
     Exit For
     End If
    Next
    Next
    Cc = Join(tempaa, vbCrLf)
    Erase tempaa
    Erase tempbb
    MsgBox Cc
    End Sub
      

  4.   

    谢谢!!!northwolves(狼行天下):
    你的代码有一点小问题,还请您帮助,谢谢!!!
    Text1 = "aaa" & vbCrLf & "bbb" & vbCrLf & "ccc" & vbCrLf & "ddd" & vbCrLf & "bbb" & vbCrLf & "eee" & vbCrLf & "eee"
    Text2 = "bbb" & Space(1) & "kkk" & vbCrLf & "eee" & Space(1) & "kkk" & vbCrLf & "eee" & Space(1) & "vvvvvvvvvvvv"
    运行后,
    text3为:
    bbb kkk
    ccc
    ddd
    bbb kkk
    eee kkk
    eee kkk
    不知为何没有
    eee vvvvvvvvvvvv
    还请您帮助,谢谢!!!
      

  5.   

    建两个表
    表A一个字段A,存储
    aaa
    bbb
    ccc
    ddd
    eee
    fff
    表两个字段A,B,存储:
    bbb kkk
    ddd kkk
    fff kkk然后连接
    select b.* from a left join b on a.A=b.A
      

  6.   

    Private Sub Command1_Click()
    Text1 = "aaa" & vbCrLf & "bbb" & vbCrLf & "ccc" & vbCrLf & "ddd" & vbCrLf & "bbb" & vbCrLf & "eee"
    Text2 = "bbb" & Space(1) & "kkk" & vbCrLf & "eee" & Space(1) & "kkk" & vbCrLf & "eee" & Space(1) & "vvvvvvvvvvvv"
    Dim tempaa() As String, tempbb() As String, tempcc() As String
    Dim I As Long, J As Long, num As Long
    Dim exist As Boolean
    num = 0
    tempaa = Split(Text1, vbCrLf)
    tempbb = Split(Text2, vbCrLf)For I = 0 To UBound(tempaa)
    exist = False
    For J = 0 To UBound(tempbb) If InStr(tempbb(J), tempaa(I)) > 0 Then
      num = num + 1
    ReDim Preserve tempcc(1 To num)
     tempcc(num) = tempbb(J)
     exist = True
    End IfNext
    If exist = False Then
    num = num + 1
    ReDim Preserve tempcc(1 To num)
    tempcc(num) = tempaa(I)
    End If
    NextText3 = Join(tempcc, vbCrLf)
    Erase tempaa
    Erase tempbb
    Erase tempcc
    End Sub
      

  7.   

    我的个人意见是用表来解决,
    一个SQL语句就可以解决。
      

  8.   

    to  northwolves(狼行天下) ,谢谢!!!上面的问题以解决,再求教您一个问题:
    字符串:
    aaa
    bbb kkk
    bbb xxxxxxxx
    ccc
    ddd
    bbb kkk
    bbb xxxxxxxx
    eee kkk
    eee vvvvvvvvvvvv
    eee kkk
    eee vvvvvvvvvvvv
    如何使其中的重复的只保留一个,谢谢!!!
    结果为:
    aaa
    bbb kkk
    bbb xxxxxxxx
    ccc
    ddd
    eee kkk
    eee vvvvvvvvvvvv