如何在excel中对齐和合并来自各列的匹配值

时间:2014-07-11 20:45:14

标签: excel excel-formula

我已成功匹配各列的数据并创建新的数据输出。这是我通常开始的;

COL A     COL B     COL C     COL D
ITEM      VALUE     ITEM      VALUE2
----      ----      ----      ----
A         1         B         100
B         2         A         200 
C         3         F         300
G         4         E         400
H         5         C         500 
J         6         M         600

我可以使用VLOOKUP实现这个结果;

COL E     COL F     COL G
ITEM      VALUE     VALUE2
----      ----      ----
A         1         200
B         2         100
C         3         500
G         4
H         5
J         6

但我真正追求的是:匹配和合并;

COL E     COL F     COL G
ITEM      VALUE     VALUE2
----      ----      ----
A         1         200
B         2         100
C         3         500
E                   400
F                   300
G         4
H         5
J         6
M                   600

我用这个在我的重量级别上面打了一个小小的,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

有类似的东西:

=COUNTIF(A:A,C2)  

在一列中并向下复制,您应该知道ColumnA中尚未存在哪些项目。在此基础上使用C:D排序,只需将与0关联的项目复制到ColumnA,将其值复制到ColumnD,然后对VLOOKUP进行排序和应用。

答案 1 :(得分:0)

以下内容基于:http://www.get-digital-help.com/2009/05/25/create-a-drop-down-list-containing-only-unique-distinct-alphabetically-sorted-text-values-using-excel-array-formula/#comment-74005

它是巧妙使用Excel公式的绝佳网站,可以很好地解释下面的怪物公式,创建动态命名范围,以及如何使用数组公式。看看吧!

我的解决方案并不像我喜欢的那样优雅,但它有效。因此,您需要创建一些命名范围。

一个用于COL A中的项目(例如" Items1和#34;)和一个用于COL C中的项目(例如" Items2")

在COL G中,我们将拥有另一个List" AllItems1"。在COL H中,我们将有另一个List" AllItems2"。您需要制作一个命名范围的" AllItems1"太

COL G中的数组公式为:

    =IFERROR(IFERROR(INDEX(Items1,MATCH(0,IF(MAX(NOT(COUNTIF($G$1:$G1,Items1))* COUNTIF(Items1,">"&Items1)+1))=(COUNTIF(Items1,">"&Items1)+1),0,1),0)),INDEX(Items2,MATCH(0,IF(MAX(NOT(COUNTIF($G$1:$G1,Items2))*(COUNTIF(Items2,">"&Items2)+1))=(COUNTIF(Items2,">"&Items2)+1),0,1),0))),"")

这是满口的。这会逐步遍历每个列表(即Items1和Items2),并为您提供一个非重复的按字母顺序排列的项目列表,其中包含" Items1"和" Items2"。

COL G实际上只是让我们进入COL H的中间步骤。我没有找到一种方法来合并两个列表而不执行此步骤。如果你找到更好的方法,请告诉我。

要获得不重复且按字母顺序排列的项目列表,我们将以下数组公式放在COL H中:

    =IFERROR(INDEX(AllItems1,MATCH(0,IF(MAX(NOT(COUNTIF($H$1:$H1,AllItems1))*(COUNTIF(AllItems1,">"&AllItems1)+1))=(COUNTIF(AllItems1,">"&AllItems1)+1),0,1),0)),"")

然后我们从" AllItems2"开始执行VLOOKUP。

将以下VLOOKUP放入COL I:

    =IFERROR(VLOOKUP($H2,$A$2:$B$7,2,0),"")

并将以下VLOOKUP放入COL J:

    =IFERROR(VLOOKUP($H2,$C$2:$D$7,2,0),"")

当然,你可以制作" AllItems2"一个命名范围,并在VLOOKUP中使用它。

我认为这可以让你得到你想要的东西。