Excel公式或VBA搜索匹配值,找到的每个匹配值都移动到新列

时间:2015-06-11 13:28:33

标签: excel vba excel-vba

我是擅长excel并且对它有非常基本的了解。我希望有人可以帮助我,因为我现在试图找几天类似的公式或VBA代码而没有运气。

我需要公式或VBA在范围内找到相同的值,并且当第一个匹配值find移动到新列时。 例如:  A1中的值检查H列中的所有值,如果找到相同的值,则将该值移动到B1,然后再检查A1中的值,如果找到相同的值,则检查H列中剩余的值移动到C1,每次发现A1与H列中的值相同将该值移动到新列D1,E1 .....继续,直到检查了H列中的所有值并移动匹配的值。在A2中的该值与H列中的所有值进行核对并且所有匹配值移动到B2,C2,E2等之后继续直到所有值都从列H移开。
移动前数据的显示方式:



 0     A      B      C      D      E      F      G    H
 ----------------------------------------------------------
1    123                                            123
2    256                                            123
3    333                                            123
4                                                   123
5                                                   123
6                                                   256
7                                                   256
8                                                   333
9                                                   333 
10                                                  333
11                                                  333
12                                                  333
13                                                  333



移动后:



    0         A      B       C        D      E      F      G     H
     ----------------------------------------------------------
    1    123    123     123      123    123    123                      
    2    256    256     256                                  
    3    333    333     333      333    333    333    333                    
    4                                                   
    5                                                   
    6                                                   
    7                                                   
    8                                                   
    9                                                    
    10                                                  
    11                                                  




1 个答案:

答案 0 :(得分:0)

这样的事情: -

Sub tester()
With ActiveSheet
    For Each cell In .Range("A1:" & .Range("A1").End(xlDown).Address)
        i = 1
        For Each c In .Range("H1:" & .Range("H1").End(xlDown).Address)
            If cell.Value = c.Value Then
                cell.Offset(0, i).Value = c.Value
                i = i + 1
            End If
        Next
    Next
End With
End Sub

注意:这不会清除运行运行的结果。