首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Excel中的一组3列中删除缺少的数据

从Excel中的一组3列中删除缺少的数据
EN

Stack Overflow用户
提问于 2017-02-24 00:03:12
回答 3查看 131关注 0票数 0

我有一个包含9列的数据集。我想检查每一行,看看最后3列是否为空。如果3个都是空的,我想删除该行。我目前正尝试在VBA中实现这一点,但我是一个编程新手,我发现自己完全不知所措。

我写的伪代码如下:

代码语言:javascript
运行
复制
For Row i
If(Col 1 & Col 2 & Col 3) = blank
Then delete Row i
Move on to next Row 
EN

回答 3

Stack Overflow用户

发布于 2017-02-24 01:50:08

我会像下面这样

代码语言:javascript
运行
复制
Dim iArea As Long

With Range("E:G") '<--| change "E:G" to your actual last three columns indexes
    If WorksheetFunction.CountBlank(.Cells) < 3 Then Exit Sub
    With .SpecialCells(xlCellTypeBlanks)
        For iArea = .Areas.Count To 1 Step -1
            If .Areas(iArea).Count Mod 3 = 0 Then .Areas(iArea).EntireRow.Delete
        Next
    End With
End With
票数 1
EN

Stack Overflow用户

发布于 2017-02-24 00:13:03

假设您至少有一行总是被填写,您可以使用以下命令:

代码语言:javascript
运行
复制
Dim LR as Long
Dim i as Integer

LR = Cells(Sheets("REF").Rows.Count,1).End(xlUp).Row

For i = 1 to 9

If Range(Cells(LR-3,i),(Cells(LR,i)).Value="" Then

    Columns(i).Delete
Else:
End If
Next i

这是通过将最后一行定义为LR,并将一个变量定义为i。您将检查列"i“以确定该列的最后3行是否为"",也就是它是否为空;您可以尝试使用ISBLANK(),但这不适用于数组。如果这是真的,那么您将删除列i。然后代码将移动到下一个i。使用i的FOR循环从1开始到9,这对应于从第1 (A)列开始并在第9 (I)列结束。

编辑:

我似乎误读了应该是空的,应该删除的,就列/行而言……这段代码将被重写为:

代码语言:javascript
运行
复制
Dim LR as Long
Dim i as Integer

LR = Cells(Sheets("REF").Rows.Count,1).End(xlUp).Row

For i = LR to 2 Step -1 'Assumes you have headers in Row1
    If AND(ISBLANK(Cells(i,7)),ISBLANK(Cells(i,8)),ISBLANK(Cells(i,9)) Then
        Rows(i).Delete
    End If
Next i

重要的更改是检查行中最后3列中的每一列都为空,ISBLANK(),更改满足条件时删除行,以及更改循环通过的内容。

票数 0
EN

Stack Overflow用户

发布于 2017-02-24 00:19:26

这是另一个答案,假设你的最后三列以"G","H","I“开头。

代码语言:javascript
运行
复制
Sub DeleteRowWithLastThreeColumnsBlank()

    Dim N As Long, i As Long
    N = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To N
        If Cells(i, "G").Value = "" And Cells(i, "H").Value = "" And Cells(i, "I").Value = "" Then
            Rows(i).EntireRow.Delete
            N = Cells(Rows.Count, "A").End(xlUp).Row
        End If 
    Next i

End Sub
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42420668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档