2016-11-28 268 views
0

我有一个excel问题,我不确定它可以解决。excel单独的单元格值到行

我想改变这个Excel格式

enter image description here

为此格式:

enter image description here

可能吗?

特里

+0

您是否尝试过在数据菜单中的 “文本到列功能”? –

+0

是的。我已经尝试过,但不是我想要的。 – xingtan

回答

0

这是可以做到的。 如果您不想手动执行操作,则必须使用VBA。

步骤之一:使用文本到列单独的列C中的值

Columns("C:C").Select 
Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _ 
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ 
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _ 
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True 

第二步:将其粘贴到另一片材,但调换它

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=True 

第三步:复制列A和B列到新表,并重复它在所有条目用C

有两个回路参与,一是通过每个条目在C遍历:C和其他粘贴A和B,直到一个将C填入新表。

如果您不熟悉VBA可以随时录制宏,并努力使之动态,这样的范围和循环被调整到您的数据。

如果你的数据不是很大,你不想使用VBA 你可以检出Split String和Transpose函数。

Split String

Transpose

0

您可以使用此

Sub main() 
    Dim users As Variant 

    users = Split(Replace(Range("C2"), " ", ""), ",") 
    Range("A2:B2").Resize(UBound(users) + 1).Value = Range("A2:B2").Value 
    Range("C2").Resize(UBound(users) + 1).Value = Application.Transpose(users) 
End Sub 
+0

哇。它的工作。 – xingtan

+0

不客气。您可能想要将我的答案标记为已接受。谢谢! – user3598756

+0

@xingtan,我看到你不停地问,并得到很好的答案,但从来没有标记为接受。根据本网站的规定(请参阅[当某人回答我的问题时该怎么办?](http://stackoverflow.com/help/someone-answers)),您必须点击答案旁边的复选标记以将其从灰色填充。谢谢! – user3598756

相关问题