2012-08-07 29 views
0

我一直在试图开发一个宏,它允许我将一行或上一行的值或文本粘贴到上一行,如果上一行为空在一些特定的专栏中。 (如果可能的话,我想以后删除空行。)如果前一行在Excel 2007中为空,则将数据向上移一行

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

是的,这是可能的。但是,虽然我们可以帮助,但我们不会做你的工作。所以请告诉我们[你已经建立了什么](http://whathaveyoutried.com),以及你卡在哪里或什么不工作。 – JMax 2012-08-07 07:18:20

+0

有没有可能有连续的空单元格(在一列中)?如果是这样,你想要下面的值填充上面的所有空行(直到你到达一个非空单元格)或只是第一个?大提示:选择所有数据,然后过滤特定列上的空白并尝试使用公式来获取正在处理的单元格值。复制并粘贴为值。然后,过滤其他列的空白以获取要删除的行。再次,让我们知道你的尝试以及对你有用的东西。如果你自己找到解决方案,那么你也可以回答你自己的问题! :) – Zairja 2012-08-07 15:12:20

+0

@JMax - 很好的文章*你有什么试过*。 – 2012-08-07 18:28:48

回答

1

没有写你的宏,这里是一些伪代码和一些指针:

  1. 移动选择单元格A1
  2. 试了空单元格
    1. 如果是空的,执行Selection.Delete Shift:=xlUp并增加一个empty counter
    2. 如果不为空,零empty counter和向下移动
  3. empty counter达到10(或某个数字表示该列中不存在更多数据时),跳出循环。
  4. 移动选择到B1和重复
  5. 重复列C等

而不是做一个切/粘贴到移动值,做Selection.Delete Shift:=xlUp将丢弃空单元格,并在它移动的一切向上一个单元格。如果您只有一个单元格被选中,它不会影响其他列。

相关问题