A B C D E F G H
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行。我正在尝试检查连续列是否具有相同的值,它们应该合并为一行。我正在尝试的公式将创建以下数据
A B C D E F G H
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))
我很擅长excel,虽然我已经完成了一些python。任何指针都在正确的方向,我将不胜感激。
答案 0 :(得分:1)
我认为这可能比这更容易,但我的第一个想法是两个步骤:
在单元格I1
中,例如,输入以下公式:
=IFERROR(INDEX(A$1:A$7,MATCH(1,(--($A$1:$A$7=$A1))*(--(A$1:A$7<>"")),0)),"")
按 ctrl + shift + 输入 和输入数组公式
然后,您可以根据需要向下拖动它。
(这个公式基本上是说,只要列A中的值匹配,就可以拉入第一个非空行的值。)
现在,您可以复制,粘贴特殊&gt;值然后使用Data
&gt; Remove Duplicates
删除重复的行。
就像我说的那样,可能不是最优雅的解决方案,但它应该可以做到这一点!!
希望有所帮助!!
<强>更新强>
鉴于需要匹配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)),"")
答案 1 :(得分:1)
如果按D排序然后按A,小小的小计可能适合。对A中的每个更改使用E,F,G和H求和。过滤并选择A包含... Total
。在B中用=Bx
填充第一个可见的非标题行,其中x
比当前行号少一个。复制到D和向下以适应。取消过滤,选择所有复制,粘贴顶部特殊值。选择A不包含... Total
并删除所有可见的除标题。将ColumnA中的Total
替换为空。