当前位置: 首页 > 知识库问答 >
问题:

Excel VBA-需要循环删除单元格值0的行以上的整个3行

景恩
2023-03-14
x1,y1,z1,i1
  ,  ,z2,i2
  ,  ,z3,i3
****Blank row****
****Blank row****
****Blank row****
x2,y2,z4,i4,
  ,  ,z5,i5,
  ,  ,z6,i6,

^above would represent the last row for demontration purposes, but the real
sheet extends up 1000s of rows
x1,y1,z1,i1
  ,  ,z2,i2
  ,  ,z3,i3
x2,y2,z4,i4
  ,  ,z5,i5
  ,  ,z6,i6
Sub test()

Dim currentSht As Worksheet
Dim erow
Dim i As Integer

Set currentSht = ActiveWorkbook.Sheets(1)
erow = currentSht.Cells(Rows.Count, 3).End(xlUp).Row

For i = erow To 3 Step -3
If currentSht.Cells(i, 1).Value <> " " Then
    currentSht.Range(Cells(i, 1).Offset(-1), Cells(i, 1).Offset(-3)).EntireRow.Delete
End If
Next i

End Sub

共有1个答案

鲜于华容
2023-03-14

这是因为您一直在测试同一行,并删除上面的3行。

假设i为30,解析为true,就像第2列中有数据一样。我们删除它上面的三行,使当前行为第27行,然后i迭代-3,并且i为27,它测试相同的数据,并对相同的数据再次解析为true。

因此,我们需要强制i更改行号:

Sub test()

Dim currentSht As Worksheet
Dim erow
Dim i As Integer

Set currentSht = ActiveWorkbook.Sheets(1)
erow = currentSht.Cells(Rows.Count, 3).End(xlUp).Row

For i = erow To 3 Step -1
If Trim(currentSht.Cells(i, 1).Value) <> "" Then
    currentSht.Range(Cells(i, 1).Offset(-1), Cells(i, 1).Offset(-3)).EntireRow.Delete
    i = i - 3
End If
Next i
 类似资料:
  • 我有一个excel,它有多个行和列,每行的列值范围不同。 需要一个宏,该宏将删除每行中除第一个和最后一个以外的所有单元格,并将最后一个值粘贴到第一个值旁边。 尝试了以下脚本:

  • 问题内容: 我有一个特殊而令人沮丧的问题。对于简单的标记: 我将不同的背景色值应用于 thead , tr 和 tr 奇数元素。问题在于,在大多数浏览器中,每个单元格都有一个不需要的边框,该边框不是任何表行的颜色。仅在Firefox 3.5中,表格的任何单元格都没有边框。 我只想知道如何在其他主要浏览器中删除这些边框,以便表中唯一可见的是交替的行颜色。 问题答案: 您需要将此添加到CSS:

  • 我有一个包含17列(A列到S列)的excel工作表。A列包含ID号,C列是日期列,F列包含时间格式的值(hh: mm)。对于同一个日期/天,一些ID号在F列中包含两个值-通常是一个高数字(多小时和分钟)和一个低数字(几分钟)。如果有这样的重复,我希望从工作表中删除包含F列中低值的整行。 我尝试了Excel的“板载”删除重复项功能,但没有成功。然后我遇到了这段VBA代码,它删除了包含最高值的整个重复

  • 我有一个工作表,我需要根据单元格值删除行。。 要检查的单元格位于A列中。。 如果单元格包含“-”。。删除行 我找不到这样做的方法...我打开一个工作簿,将所有内容复制到另一个工作簿,然后删除整个行和列,但必须根据单元格值删除特定的行。 这里需要帮助。 更新 我拥有的数据样本

  • 我已经看到(搜索)类似的例子,但不完全是我正在寻找的。 我在Excel中有一个工作簿,它有几张工作表,即工作表a和工作表B,这些工作表有一组数据,所以为了显示工作表a中工作表B上最重要的数据,我只想根据工作表上的单元格值镜像我想指定的行。...我需要根据工作表a中的值删除工作表B中的整行。 例如,在表A中,我有10个值(是/否)的列X,并且我用公式将相同的数据链接回表B。也就是说,如果在Sheet

  • 如下所示,我有3张表,即:表“Shops Fruits Data”,表(“Months”)和表(“Output”)。 我正在尝试将数据从“Shops Fruits data”表中复制到(“Output”)结构中,该数据基于从表中的月份(“months”)。我已经写了一段代码。然而,使用这段代码,我只能遍历第一行。我不明白,我怎样才能继续到下一排,直到最后一排。其次,我也不能将商店和水果的名称复制到