VBA:检查全0的列并删除

时间:2017-09-12 18:31:48

标签: excel

我是VBA的新手,我一直在努力弄清楚如何做到这一点。如果有人可以提供帮助,那将非常感激。

我想做什么:我从另一个工作表中复制了一系列单元格。此范围包含标题,某些列只包含我想要删除的0' s的单元格。以下是一个例子:

Header1 Header2。 Header3。 Header4 1 0. 2. 3 2. 0 3. 4 3. 0 4. 5

我希望代码遍历每一行,从第2行开始,如果它的值为0,则检查行中的每个单元格。如果它是0,那么我希望它然后检查列中的每个单元格以查看列中的所有单元格值是否也为0.如果是,则删除。如果它遇到的值不是零,那么它将跳转到下一列的开头并重复。

如何使用上面的内容是它将开始使用第1行进行检查.Cell(1,1)的值为1,然后它将转到下一列Cell(1,2)。它检查该值是否为0,然后移至Cell(2,2)向下移动到Cell(2,3)。由于列中每个单元格的所有值均为0,因此将删除第2列,然后转到第3列。

这是我到目前为止的代码,但它没有删除任何列。列计数器的代码倒退,因为我读到的是删除列时最简单的方法

Sub Delete column ()
Dim i as long
Dim j as long
Dim lrow as long
Dim lCol as long

lrow = Cells(rows.count, 1).end(xlup).row
lcol = cells(1, column.count).end(xltoleft).column

For i = 2 to lRow
For j = lCol to 8 Step -1
if Cell(I,j) = 0 then

else
Cell.offset(0,1).select
end if 
next j
Column(1).Entirecolumn.delete 
next i

End sub ()

1 个答案:

答案 0 :(得分:0)

这应该可以帮助你。它检查A列并查看值是否加起来为0,如果是,则删除该列。如果A不加0,你只需要让列改变字母。希望这可以帮助你解决一些问题。

procedure TForm1.LocationSensor1LocationChanged(Sender: TObject;
  const OldLocation, NewLocation: TLocationCoord2D);
var
  LDecSeparator: String;
begin
  LDecSeparator := FormatSettings.DecimalSeparator;
  FormatSettings.DecimalSeparator := '.';
  // Show current location
  ListBoxItemLatitude.ItemData.Detail  := Format('%2.6f', [NewLocation.Latitude]);
  ListBoxItemLongitude.ItemData.Detail := Format('%2.6f', [NewLocation.Longitude]);
end;