【问题标题】:Delete entire row when a value exist in a second sheet当第二张工作表中存在值时删除整行
【发布时间】:2015-03-24 15:08:17
【问题描述】:

我有 2 张纸:sheet1 和 sheet2。我在单元格 A3(sheet1)中有一个值,它不是恒定的。还有 sheet2 中的许多文件。

我想要做的是,当单元格 A3 (Sheet1) 中的值与 A 列 (Sheet2) 中的值相同时,它将删除找到该值 (Sheet2) 的整行。

这是我的尝试。它不起作用:没有行被删除。

If Worksheets("Sheet1").Range("A3").Text = Worksheets("Sheet2").Range("A:A").Text Then
    Dim f As String
    f = Worksheets("Sheet1").Range("A3")        
    Set c = Worksheets("Sheet2").Range("A:A").Find(f)
    Worksheets("Sheet2").Range(c.Address()).EntireRow.Delete
End If

【问题讨论】:

标签: vba excel


【解决方案1】:

我猜你在.Find() 上找不到任何东西。由于您没有检查is Nothing,因此您不知道。此外,.Find() 保留了您上次搜索时设置的所有搜索参数 - 通过代码或在电子表格中手动设置。虽然只需要 What 参数,但始终值得为其设置最关键的参数(如下所述),您可能需要全部设置它们以确保您准确了解您的搜索方式。

Dim f As String

If Worksheets("Sheet1").Range("A3").Text = Worksheets("Sheet2").Range("A:A").Text Then
  f = Worksheets("Sheet1").Range("A3")
  Set c = Worksheets("Sheet2").Range("A:A").Find(What:=f, Match:=[Part|Whole], _
          LookIn:=[Formula|value])
  if not c is Nothing then
    Worksheets("Sheet2").Range(c.Address()).EntireRow.Delete
  else
    MsgBox("Nothing found")
  End If
End If

去MS docs看看所有的参数和它们的枚举是什么。

【讨论】:

    【解决方案2】:

    子测试()

    将 ws 调暗为工作表

    对于 x = 1 To Rows.Count

    If ThisWorkbook.Sheets("Sheet2").Cells(x, 1).Value = ThisWorkbook.Sheets("Sheet1").Cells(3, 1).Value Then ThisWorkbook.Sheets("Sheet2").Cells (x, 1).EntireRow.Delete

    下一个 x

    结束子

    【讨论】:

    • 希望这对你有用,它对我有用。不过,我将整个 if 语句放在一行上。
    猜你喜欢
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2014-01-30
    • 2016-11-16
    • 1970-01-01
    相关资源
    最近更新 更多