我有一张这样的表:
| A | B | C | D | E | F | G | H | ...
---------------------------------
| a | 1 | | b | 2 | | c | 7 |
---------------------------------
| b | 2 | | c | 8 | | b | 4 |
---------------------------------
| c |289| | a | 3 | | a |118|
---------------------------------
| d | 6 | | e | 3 | | e |888|
---------------------------------
| e | 8 | | d |111| | d |553|
---------------------------------
我希望表格变成这样:
| A | B | C | D | E | F | G | H | ...
---------------------------------
| a | 1 | 3 |118| | | | |
---------------------------------
| b | 2 | 2 | 4 | | | | |
---------------------------------
| c |289| 8 | 7 | | | | |
---------------------------------
| d | 6 |111|553| | | | |
---------------------------------
| e | 8 | 3 |888| | | | |
---------------------------------
Col A,Col B和Col G的字母是唯一的,在它旁边的col中它有权重。
为了更清楚,
| A | B |
---------
| a | 1 |
---------
| b | 2 |
---------
| c |289|
...
是 1月
中a,b,c ...的权重同样| D | E |
是七月中a,b,c ...的权重,而| G | H |
是中a,b,c ...的权重腊
我需要将它们并排放置以进行比较,事情是它们不是有序的。
我该如何处理?
更新
有成千上万的a,b,c,aa,bb,cc,aaa,avb,as,saf,sfa等......其中一些可能出现在1月份(Col A)而不是7月份(Col D)
答案 0 :(得分:1)
像这样的东西
<强>码强>
Sub Squeeze()
[c1:c5] = Application.Index([E1:E5], Evaluate("IF(A1:A5<>"""",MATCH(A1:A5,D1:D5,0),A1:A5)"), 1)
[d1:d5] = Application.Index([H1:h5], Evaluate("IF(A1:A5<>"""",MATCH(A1:A5,G1:G5,0),A1:A5)"), 1)
[e1:h5].ClearContents
End Sub
第一行说明
Application.Index([E1:E5], Evaluate("IF(A1:A5<>"""",MATCH(A1:A5,D1:D5,0),A1:A5)"), 1)
MATCH
返回与A1:A5
的位置(5)匹配的D1:D5
INDEX
然后返回E1:E5
所以使用A1:A100的键列对M1:100的值为N1:100
Application.Index([N1:N100], Evaluate("IF(A1:A100<>"""",MATCH(A1:A100,M1:M100,0),A1:A100)"), 1)
答案 1 :(得分:0)
根据需要进行扩展:按D升序排序D:E,按G升序排序G:H,删除G,F,D,C。如果您想要VBA,请选择“录制宏”。