2014-09-22 148 views
0

希望能得到一些帮助。我是VBA的新手,特别是循环。我已经获得了A列中不同长度的数据,其中包含错误字符串(A1,A3,A5,...)和相应的错误消息(A2,A4,A6,...)。我想删除错误消息数据(A2,A4,A6,...)并将其粘贴到列H(H1,H3,H5,...)中,直到列中最后一行数据答:然后,我想新删除的行(2,4,6,...)被删除,所以我有一个表中的错误字符串列AI可以使用'文本到列',并相应的错误消息在列H.VBA将隔行隔行排列到最后一行并粘贴到新列,然后删除空行

最终目标是,在做一个'文本到列'后,我将有一块数据,我可以变成一个表。

如果您认为有比删除粘贴删除空行方法更好的方法,那么我全部都是耳朵。如果你有足够的资源来构建循环的X代码到最后一排,我也很想打扰你。

+0

为了提供最佳的基于VBA的答案,最好展示数据从何开始以及结果应该如何的示例。整个过程可能在VBA中从原始数据到格式化输出完成。 – 2014-09-22 22:33:52

+0

数据被组织为这样: A1:aa.bbbb.cccc.ddddd.eeee(不正确的数据串), A2:错误消息(即,AA是不与BBBB允许), A3及以后具有重复类似的错误代码。 我有多组数据,每组数据都有不同长度的上述数据,这就是为什么我想要一条龙运行直到数据行结束的宏。 最终结果是一个列标题为AA,BBBB,CCCC,DDDDD,EEEE,错误消息和建议修复程序的表格,我将根据错误手动输入。 – 2014-09-22 22:47:30

回答

2
Sub FormatForErrorCorrections() 
    Dim i As Integer 'i always stores the current row# that the loop is operating on 
    'since we'll be deleting rows, start at the bottom and work our way up 
    With ActiveSheet 
     For i = .Range("A" & .Rows.Count).End(xlUp).Row To 1 Step -2 'every other row 
      'assign value from column A to previous line column H 
      .Range("H" & (i - 1)).Value = .Range("A" & i).Value 
      'split A column into A:E using "." delimiter 
      .Range("A" & (i - 1) & ":E" & (i - 1)) = Split(.Range("A" & (i - 1)).Value, ".") 
      'delete the current row 
      .Rows(i).Delete 
     Next i 'i decrements by 2 until we reach 1 (Step -2) 
    End With 
End Sub 
0

使用VBA和循环是一种可能性。另一个是使用帮助列对数据进行排序。

  • 向表中添加一个辅助列,并在前两个单元格中输入“a”和“b”。
  • 选择两个单元格,然后双击填充手柄将序列填充到表格的最后一行。
  • 排序新列
  • 表中选择所有的“a”行的细胞和
  • 复制粘贴旁边的“B”行
  • 删除辅助列
相关问题