在比较Excel

时间:2017-04-27 22:12:19

标签: excel vba excel-vba excel-formula

我现在似乎处于困境中,任何帮助都会受到赞赏。

我有一张包含大量数据的电子表格。基本上,一列数据有多个名称。每个名称都与act #相关联。帐户Allan可能会显示4 times,因为他有4 accounts

我需要将ONE Allan和他的帐号#放入一个新列,并在行中读取帐号。该文件在一列中包含所有帐户#。这是一个问题。

我设法完成了第一项任务。目前发生的事情是我将向下拖动我的公式所在的单元格,它实际上只会生成一个人名的副本,而在下一个单元格中,我现在已经连续分配了帐号。我唯一的问题是,甚至认为只拉动一个人就不会在副本中插入一个空白行。

我显然无法添加图片,因为这是我的第一篇文章或者其他什么,所以这里是我迄今为止使用的2个公式:

=INDEX($B$2:$B$50, MATCH(0, COUNTIF($L$1:$L1, $B$2:$B$50), 0))

=IFERROR(INDEX($C$2:$C$50, MATCH(0, COUNTIF($L2:L2,$C$2:$C$50)+IF($B$2:$B$50<>$L2, 1, 0), 0)), 0)

第一个公式是,如果找到一个副本,则只提取其中一个人名称,而另一个公式是将该多个帐号(如果有的话)拉到一行中的公式。

enter image description here

enter image description here

https://i.stack.imgur.com/vwSwZ.png https://i.stack.imgur.com/gJmnF.png

2 个答案:

答案 0 :(得分:0)

基于https://exceljet.net/formula/get-nth-match-with-index-match并与您的列匹配:

=IFERROR(INDEX($C$2:$C$50,SMALL(IF($B$2:$B$50=$D2,ROW($B$2:$B$50)-ROW(INDEX($B$2:$B$50,1,1))+1),M$1)),0)

使用 Ctrl + Shift + 输入在第一个单元格中输入它,然后将单元格复制到所有其他单元格上。这是基于列标题的值为1,2,3,4,5等,其中n为accountnumber。您可以对其进行优化以匹配您的标题。

答案 1 :(得分:0)

我知道回复的时间已晚,但非常感谢大家的投入,特别是你的KeshShan!我最终得到了一切工作。

我确实使用了索引匹配和几个“IF”语句,见下文。谢谢!!

=IF($D2<>"",INDEX($B$2:$B$50, MATCH(0, COUNTIF($L$1:$L1, $B$2:$B$50), 0)),"")

=IF((IFERROR(INDEX($C$2:$C$50, MATCH(0, COUNTIF($L2:L2,$C$2:$C$50)+IF($B$2:$B$50<>$L2, 1, 0), 0)), 0))=0,"",(IFERROR(INDEX($C$2:$C$50, MATCH(0, COUNTIF($L2:L2,$C$2:$C$50)+IF($B$2:$B$50<>$L2, 1, 0), 0)), 0)))

=IF(B2="","",IF(COUNTIF($B2:B34026,B2)=1,B2,""))

有趣的是,这个项目提出的新问题是,为超过3万条记录实际处理所有这些公式需要花费太长时间。

我需要了解更多关于SQL的消息吗?我希望有一天能成为一名数据分析师,很快就回到学校学习更多有关数据的知识(我从未想过这些话会从我的嘴里说出来的哈哈)哈哈我真的觉得这很有趣也很有趣!我现在是自学成才,所以我为这么多奇怪的问题道歉!关于SQL的任何直接消息以及我应该从哪里开始都会很棒!谢谢!

以下是这些公式的结果。通过查看这3张照片,我应该清楚地看到我想要完成的任务。只需将数据拆分为coloumn B&amp; C进入单独的行以将数据合并到字母上。 One Two (见第三张照片的下一条评论)