以下是编程的要求呀,录了几遍宏,结果都没调试好。求高手帮助呀。
1、有两张工作表,sheet1和sheet2,所有字段属性均为文本。
2、复制sheet1中的B2字段,在sheet2中搜索相同字段,情况分为:A搜到一个B搜到多个C没搜到
A搜到一个,则将sheet2中搜到的字段的右边一个单元格,复制到sheet1中的B2的右边一个单元格。
B搜到多个,则将sheet1和sheet2中的搜索字段颜色变红。
C没有搜到,则将sheet1中的字段变黄。
3、继续复制sheet1中的B3,重复步骤2,直到结束,以B563为结束。

解决方案 »

  1.   

    2、复制sheet1中的B2字段,在sheet2中搜索相同字段这句里的字段是什么意思? 是不是就是B2单元格里的值,去sheet2里的B列去搜索?概念没明白啊?
      

  2.   

    数据透视+公式就解决了。不用VBA
      

  3.   


    'vba
    Sub main()
      Dim wz(3) As Long
      For i = 2 To 10 '563
        wz(0) = i: wz(1) = 2
        Select Case iCount(Sheet1.Cells(wz(0), wz(1)), wz)
           Case 0
             izero wz
           Case 1
             icopy wz
           Case Else
             iclr wz
        End Select
      Next
    End SubFunction iCount(ByVal a As String, wz() As Long) As Long
        Dim iCnt As Integer, iFlg As Boolean
        Dim j As Integer, k As Integer, f As Boolean
        For j = 1 To Sheet2.UsedRange.Rows.Count
            For k = 1 To Sheet2.UsedRange.Columns.Count
                If Sheet2.Cells(j, k) = a Then
                   If Not f Then wz(2) = j: wz(3) = k: f = True
                   iCnt = iCnt + 1
                   If iCount > 2 Then iFlg = True
                End If
                If iFlg Then Exit For
            Next
            If iFlg Then Exit For
        Next
        iCount = iCnt
        
    End Function
    Sub izero(wz() As Long)
        Sheet1.Cells(wz(0), wz(1)).Interior.ColorIndex = 6
    End SubSub icopy(wz() As Long)
        Sheet1.Cells(wz(0), wz(1) + 1) = Sheet2.Cells(wz(2), wz(3) + 1)
    End SubSub iclr(wz)
        Dim iCnt As Integer
        Dim j As Integer, k As Integer
        Sheet1.Cells(wz(0), wz(1)).Interior.ColorIndex = 3
        For j = 1 To Sheet2.UsedRange.Rows.Count
            For k = 1 To Sheet2.UsedRange.Columns.Count
                If Sheet2.Cells(j, k) = Sheet1.Cells(wz(0), wz(1)) Then
                   Sheet2.Cells(j, k).Interior.ColorIndex = 3
                   
                End If
            Next
        Next
        
    End Sub