1

次のようなシートがあります。

| 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|   |   |   |   |
---------------------------------

列 A、列 B、列 G には固有の文字があり、その隣の列には重みがあります。

さらにわかりやすくするために、

| A | B |
---------
| a | 1 |
---------
| b | 2 |
---------
| c |289|
...

1月のa、b、c...の重みです

同様| D | E |に、7 月| G | H |は a,b,c... の重みがあり、12 月には a,b,c... の重みがあります

比較のためにそれらを並べて配置する必要があります。問題は、それらが順番に並んでいないことです。

どうすればこれにアプローチできますか?

アップデート

a,b,c, aa, bb, cc, aaa, avb, as, saf, sfa などは何千もあり、そのうちのいくつかは 1 月 (Col A) に存在し、7 月 (Col D) には存在しない可能性があります。

4

2 に答える 2

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

1行目の説明

 Application.Index([E1:E5], Evaluate("IF(A1:A5<>"""",MATCH(A1:A5,D1:D5,0),A1:A5)"), 1)
  • は、に対してMATCHの位置 (5) に一致する VBA 配列を返します。A1:A5D1:D5
  • INDEX次に、対応する値を返しますE1:E5

したがって、N1:100 の値を持つ M1:100 に対して A1:A100のキー列を使用するには

Application.Index([N1:N100], Evaluate("IF(A1:A100<>"""",MATCH(A1:A100,M1:M100,0),A1:A100)"), 1)
于 2013-07-01T12:06:30.710 に答える