2016-08-17 49 views
-1

有谁知道我可以使数据快速正确对齐的方式。我目前不得不剪切和粘贴多次。我确信有一种方法,只是不知道如何。 以下示例解释我需要帮助的内容。谢谢,麻烦您了。Excel数据对齐

我分别编译我的数据每个部分然后把这些部分放在一起。 第=列A:D,E:H,I:L,M:P

我想将其变更为

如图现在的数据被对准为每个组的信息匹配起来,A,B和C的彼此水平,留下空白,其中没有数据或文本是必需的。 任何人都有一个聪明的方式来实现这一点?

问题扩展。

如果我的数据显示如下。在某些部分没有数据,他们仍然可以对齐并匹配吗? enter image description here

看起来像这样。 [在这里输入的形象描述] [2]

[2]: http://i.stack.imgur.com/UMHiN.png 
+0

愿望有最好的原因不是真的知道我应该是标记。 –

+0

也希望有人知道我需要什么,就像你自己的声音一样,帮助他们摆脱心灵的美好。 –

+0

看起来你的每个部分都是9行。这是一个起点。您可以将9,4的区域定义为一个范围来粘贴数据,然后创建一个宏,在列A中搜索非空白。这将是您要复制的第一行数据。捕获该单元格(A10)并将其存储在变量中。之后,执行另一个宏查找右边相邻列中的下一个空白。您可以选择整个区域,复制,然后转到您的单元格并粘贴数据。这一切都在VBA中。只需稍微玩一下宏,你就会最终得到它。 – TBridges

回答

0

右键单击工作表>查看代码>粘贴下面的代码>运行

Sub test() 
    'If Application.UserName = "." Then Cells.Delete: [a1:p1,a2,a3,a9, e2,e7,e8, i2,i6,i16, m2,m10,m13] = 1 
    Dim c(3) As Range, m&, i&: m = 1 
    While True 
     Set c(3) = UsedRange.Offset(m).Resize(, 1) ' column A 
     For i = 0 To 3 
      Set c(i) = c(3).Offset(, i * 4).Find("*") 
      If c(i) Is Nothing Then Exit Sub 
      If m < c(i).Row Then m = c(i).Row 
     Next 
     For i = 0 To 3 
      If c(i).Row < m Then c(i).Resize(m - c(i).Row, 4).Insert xlDown 
     Next 
    Wend 
End Sub 
+0

非常感谢Slai,很多appricated你已经节省了我的大量时间! –

+0

第4行--Me.UsedRange有一个小错误/错字。应该是m.UsedRange –

+0

@Alex Arshamian'Me'是指代码所在的工作表。 'm.UsedRange'会导致错误。此外,你可以通过点击旁边的绿色检查来接受答案,以便其他人知道你的问题已得到解决http://stackoverflow.com/tour – Slai