首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果工作表1上的单元格与工作表2上的单元格匹配,请删除行?

如果工作表1上的单元格与工作表2上的单元格匹配,请删除行?
EN

Stack Overflow用户
提问于 2016-12-31 12:04:21
回答 1查看 2K关注 0票数 0

我有两个工作表,第一页和第二页。

在第1页上,我创建了一个表单,允许用户在单元格B21、B26、I21、I26、P21、P26中输入值。

然后单击submit,将数据插入到下一行A、B、C、D、E和F列的第2页。

我还试图创建一个宏,该宏一旦运行,将删除第2页上的行,其中的值与sheet1上的值匹配。

目前,我通过使用IF语句来保持简单,但是这给了我一个类型不匹配的错误。

代码语言:javascript
复制
Sub QuickCull()

If Sheets(1).Range("B21").Value = Sheets(2).Range("A:A").Value And _
    Sheets(1).Range("B26").Value = Sheets(2).Range("B:B").Value And _
    Sheets(1).Range("P21").Value = Sheets(2).Range("C:C").Value And _ 
    Sheets(1).Range("I21").Value = Sheets(2).Range("D:D").Value And _
    Sheets(1).Range("I26").Value = Sheets(2).Range("E:E").Value And _
    Sheets(1).Range("P26").Value = Sheets(2).Range("F:F").Value Then

    Rows(ActiveCell.Row).EntireRow.Delete
End If

End Sub

有人能告诉我我哪里出了问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-12-31 12:19:14

首先,您需要查看第一个条件是否满足,因此我们将使用B21函数在Sheets(2)的整个列A中查找范围中的值(“Match”)。如果它返回一个成功的匹配,那么我们将使用该结果(RowMatch表示一个行号)。

其次,我们需要检查所有其他IfRowMatch中的Sheets(2)中是否有匹配的值。如果是这样的话,那么我们可以在Sheets(2)中删除该行。

试试下面的代码

代码语言:javascript
复制
Option Explicit

Sub QuickCull()

Dim RowMatch As Long

With Sheets(2)
    If Not IsError(Application.Match(Sheets(1).Range("B21").Value, .Range("A:A"), 0)) Then
        RowMatch = Application.Match(Sheets(1).Range("B21").Value, .Range("A:A"), 0)

        If Sheets(1).Range("B26").Value = .Range("B" & RowMatch).Value And _
            Sheets(1).Range("P21").Value = .Range("C" & RowMatch).Value And _
            Sheets(1).Range("I21").Value = .Range("D" & RowMatch).Value And _
            Sheets(1).Range("I26").Value = .Range("E" & RowMatch).Value And _
            Sheets(1).Range("P26").Value = .Range("F" & RowMatch).Value Then

            .Rows(RowMatch).Delete
        End If

    End If
End With

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

https://stackoverflow.com/questions/41408143

复制
相关文章

相似问题

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