从vba中可能包含NA的范围中删除列

时间:2014-01-05 05:10:50

标签: excel excel-vba vba

我有从第三方API下载的数据范围。数据出现在这样的范围内,它会定期从数据库中获取#N / A.我想删除列ABCH(而不是整列)中的数据并将它们移到仅剩下DEFG。我该怎么做这种迭代。当我尝试遍历范围中的单元格时,当我删除列时,索引会混淆,因为范围现在缩短了。如何在我删除列的情况下循环范围,范围大小会发生变化。感谢

2 个答案:

答案 0 :(得分:0)

这样的事可能有用。请检查出来

Range("C18:C25,G18:G25,I18:I25").Select ' select multiple ranges - in your case columns A, B, C H
Selection.Delete Shift:=xlToLeft

答案 1 :(得分:0)

所以数据表可能看起来像这样 A B C D E
7 8 9 10 11
NA NA 4 5 7
9 10 11 12 NA
10 11 12 13 14
11 12 13 14 15

在这个例子中,我希望能够删除A,B和E列,并且C& D列是A列和B列的列。我最终做了一个解决方法,但我尝试的初始代码是这样的

  for i =1 to datarange.columns.count  
   for j = 1 to datarange.rows.count  
   if iserror(datarange.cells(j,i)) then  
'   delete column shift cells 
   end if
   next
  next

问题在于,当我删除范围中的列时,列数正在下降。我没有迭代原始范围。无论如何,我设法做了一个简单的解决方法。谢谢你看看。