2016-09-22 84 views
2

我想将2列合并为1.一个接一个。将2列合并为1(一个接一个)

我有这样的:

 A B 
Row 1: 1 10 
Row 2: 2 11 
Row 3: 3 12 
Row 4: 4 13 

并希望获得这样的:

 A 
Row 1: 1 
Row 2: 2 
Row 3: 3 
Row 4: 4 
Row 5: 10 
Row 6: 11 
Row 7: 12 
Row 8: 13 

每次(行数在甲在2列的行的数目不同,B是一样)。

我尝试了很多功能,我很接近但仍然不在那里。 希望得到任何帮助。我更喜欢公式。我仍然是VBA的新手,但任何帮助都可以。

谢谢!

+0

你能告诉我们你试过吗?有几种不同的方式可以解决这个问题,但是为你编写代码并不是这个网站的目的。我们很乐意为您提供帮助和编写代码。你卡在哪里? – Tyeler

+1

这篇文章(几乎)只是一天前发布的问题的完全重复[Excel VBA:找到两个表的联合](http://stackoverflow.com/questions/39617785/excel-vba-find-the-工会的两桌)。唯一的区别就是你想要一个'Union All'而不是'Union'。因此,您可以使用发布的解决方案,只删除'.Range(“C1”,.Range(“C1”)。End(xlDown))。RemoveDuplicates Array(1)'(消除可能的重复)行。而已。 – Ralph

+0

@Ralph这两篇文章确实有相似之处,但他确实表示他更喜欢使用'Formulas',这令人惊讶的是我找不到重复的。我真的认为这个问题已经被问到,但我找不到任何东西... – Tyeler

回答

2

这是一个公式,它会做到这一点。

把它放在C1并复制下来。

=IF(A1<>"",A1,INDEX(B:B,ROW()-COUNTA(A:A))) 

enter image description here

+1

..........好的! ............. –

+0

太棒了!我认为它有效。我会稍后检查它,并让你知道! –

+0

@KubaGuzik如果它适合你,请通过点击答复中的复选标记告诉我标记为正确。 –

-1

试试这个。

Range("B1").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy 
Selection.End(xlToLeft).Select 
Selection.End(xlDown).Offset(1, 0).Select 
ActiveSheet.Paste 
Range("A1").Select 
+2

你可能想检查[如何避免使用.select](http://stackoverflow.com/questions/10714251/how-to在-Excel的VBA的宏 - 避免使用 - - 选择 - )。我们不知道正在使用什么类型的工作簿,有多少张工作簿,他想从哪里调用子工具,等等。使用'.Select'最好尽可能避免。 – Tyeler

+0

我刚刚回答了他的问题。他需要更具体地了解他有多少张床单。关于使用。选择,是的,我同意最好避免。但是我只记录了一个宏,因为他的问题很简单,不是更具体。 – sn152

+0

你必须记住,在OP完成之后,许多人都会阅读堆栈溢出问题的答案。如果您觉得他向我们提供了一个很差的问题,那么[该网站的指导](http://stackoverflow.com/help/how-to-answer)告诉我们,最好不要回答。对低质量问题提供低质量答案不会对任何人有所帮助,并且可能会降低成本。 – Tyeler