Excel公式或VBA搜索匹配值,找到的每个匹配值都移动到新列
我是新手,对excel有着非常基本的了解。我希望有人能帮助我,因为我几天来一直在寻找类似的公式或VBA代码,但运气不好。Excel公式或VBA搜索匹配值,找到的每个匹配值都移动到新列,vba,excel,Vba,Excel,我是新手,对excel有着非常基本的了解。我希望有人能帮助我,因为我几天来一直在寻找类似的公式或VBA代码,但运气不好。 我需要公式或VBA在范围内找到相同的值,并且在第一次匹配值时找到“移动到新列”。 例如: A1中的值对照H列中的所有值进行检查,如果发现相同的值,则将该值移动到B1,然后再次对照H列中的左侧值进行检查,如果发现相同的值移动到C1,则每次发现A1与H列中的值相同,则将该值移动到新的D1列,E1..继续,直到检查H列中的所有值并移动匹配值。A2中的该值与H列中的所有值进行核对后,
我需要公式或VBA在范围内找到相同的值,并且在第一次匹配值时找到“移动到新列”。 例如: A1中的值对照H列中的所有值进行检查,如果发现相同的值,则将该值移动到B1,然后再次对照H列中的左侧值进行检查,如果发现相同的值移动到C1,则每次发现A1与H列中的值相同,则将该值移动到新的D1列,E1..继续,直到检查H列中的所有值并移动匹配值。A2中的该值与H列中的所有值进行核对后,所有匹配值移动到B2、C2、E2等。继续,直到所有值都从H列移动。
这是数据移动前的外观:
0a 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
13333类似这样的:-
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
注意:这不会清除每次运行的结果。通常,像这样没有显示任何代码的请求不会得到肯定的响应,因为堆栈溢出不是免费的代码编写服务。您需要将解决方案分解为多个步骤,然后开始研究如何完成每个步骤并编写一些代码。如果你的代码不起作用,那么在这里发布详细信息,你可能会得到一个非常有用的快速响应。对不起,我下次会尝试。在这种情况下,我甚至不知道如何开始编写代码来对这个问题进行排序,因为我的VBA级别非常基本。没问题——只是试图帮助您获得所需的东西——看起来有人帮了您!请确保将其标记为已接受的答案(如果有效),这样他们就可以获得信任,其他读者也会知道它有效。它的工作原理如前所述,只是在移动后不删除值,但这并不重要。