如果Excel 2007中前一行为空,则将数据向上移动一行

时间:2012-08-07 06:33:40

标签: excel vba excel-vba excel-formula

我一直在尝试开发一个宏,它允许我将值或文本从一行剪切并粘贴到上一行,如果某些特定列中的上一行是空的。 (如果可能的话,我想在此之后删除空行。)

4137274 20120604   41.6    10.83   Tolerance exceeded
4137279 20120604                   Tax code missing
                   55.9    -0.04    
4137271 20120604
                  111.8   -11.26   Tolerance exceeded
4137325 20120604                   Tax code missing
                  130.72    0   
4139318 20120605   65.36    0      Tax code missing
4139114 20120605
                  223.6   -22.54   Tolerance exceeded
4139279 20120605
                  111.8   111.8    Tolerance exceeded
4139151 20120605   65.36   65.36   GR does not exist
4140802 20120605   27.95   -0.02   Tax code missing
4140732 20120605   27.95   27.95   GR does not exist

如上所示,部分价格在下一行。我必须处理大量数据,因为无法手动剪切和粘贴所有数据。有没有办法用宏或其他方式做到这一点?

1 个答案:

答案 0 :(得分:2)

不为你编写宏,这里有一些伪代码和一些指针:

  1. 将选择移至单元格A1
  2. 测试空单元格
    1. 如果为空,请执行Selection.Delete Shift:=xlUp并增加empty counter
    2. 如果不为空,则为empty counter并向下移动
  3. empty counter达到10(或某个数字表示该列中不存在更多数据)时,请退出循环。
  4. 将选择移至B1并重复
  5. 重复C列等
  6. 执行Selection.Delete Shift:=xlUp而不是执行剪切/粘贴以移动值,而不是删除空单元格并将其下方的所有内容向上移动一个单元格。如果您只选择了 一个 单元格,则不会影响其他列。