在Excel中合并行

ABCDEFGH ACC'L SCIENCE 0.5 TRUE 557092 87 87 ACC'L SCIENCE 0.5 TRUE 557092 88 88 ART 0.5 TRUE 557092 98 98 ENGLISH 6 0.5 TRUE 557092 88 88 ENGLISH 6 0.5 TRUE 557092 87 87 GIRLS PE 0.5 TRUE 557092 100 100 GIRLS PE 0.5 TRUE 557092 94 94 

我有一个excel文件中的上述7个行。 我试图检查连续的列是否有相同的值,他们应该合并成一行。 我正在尝试的公式会创build以下数据

 ABCDEFGH ACC'L SCIENCE 0.5 TRUE 557092 87 87 88 88 ART 0.5 TRUE 557092 98 98 ENGLISH 6 0.5 TRUE 557092 88 88 87 87 GIRLS PE 0.5 TRUE 557092 100 100 94 94 

伪代码看起来像这样:

 =IF(A1 = A2),--> G1,H1 = G2, H2 

那么我也必须考虑到跳线 – 就像艺术课一样。 会使用这样的'IF'语句来检查约束是一个有效的方法吗?

IF的问题似乎是它真的只是想要它合并时返回一个布尔值。 有没有一个圆滑的非VBA的方式来做到这一点? 我发现一些很好的VBA选项与类似的数据 – 但似乎有一种不必打破它的方法。 我知道MATCH和INDEX,但还没有想出一个方法来合并它们。

我尝试了一个数组MATCH – INDEX公式,但它返回奇数值 – 我插入一个新的列,以免混乱的数据 – 试图基本上合并成一行的数字。

 MATCH($A$2:$A$7, INDEX(E2 & F2, $G$2:$G$7 & $H$2:$H$7)) 

虽然我已经做了一些python,但对于excel来说我还是很新的。 任何指针在正确的方向,我将不胜感激。

我认为可能比这更容易做到这一点,但我的第一个想法是两个步骤:

例如,在单元格I1 ,input以下公式:

 =IFERROR(INDEX(A$1:A$7,MATCH(1,(--($A$1:$A$7=$A1))*(--(A$1:A$7<>"")),0)),"") 

并按下ctrl + shift + enter其作为数组公式 input

然后,您可以根据需要将其拖下。

(这个公式基本上是说只要A列中的值匹配,就可以把第一个非空行的值和它一起拉出来。)

现在,您可以复制,select性粘贴>值,然后使用Data > Remove Duplicates删除重复的行。

就像我说的,t可能不是最优雅的解决scheme,但它应该做的伎俩!

希望帮助!

更新:


鉴于需要BOTH列A和D匹配的评论,请尝试以下公式:

 =IFERROR(INDEX(A$1:A$7,MATCH(1,(--($A$1:$A$7=$A1))*(--($D$1:$D$7=$D1))*(--(A$1:A$7<>"")),0)),"") 

如果按照D和A来sorting,小计可能适合小计。 对于A中的每个更改,使用E,F,G和H上的和。筛选并selectA包含… Total 。 用B =Bx填充第一个可见的非标题行,其中x小于当前行号。 复制到D和下来,以适应。 Unfilter,select全部复制,粘贴顶部的特殊值。 selectA不包含… Total并删除除标题外的所有可见内容。 将ColumnA中的Totalreplace为Nothing。