【问题标题】:Identify column using column header and delete rows where cell contains substring使用列标题识别列并删除单元格包含子字符串的行
【发布时间】:2017-05-04 21:07:20
【问题描述】:

我正在尝试生成一些 VBA 代码,该代码将在第 1 行的第一个单元格中查找包含列标题“新查询”的列。然后,它应该删除子字符串值 '' 存在于每个行中的所有行列的单元格。

这是我想出的:

Set rng = Rows("1:1").Find(what:="New query", after:=Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
With Intersect(Sheets("Sheet1")
.Columns(rng.EntireColumn.Address))
.Replace "''", "#N/A", xlPart
.SpecialCells(xlConstants, xlErrors).EntireRow.Delete
End With

【问题讨论】:

  • 然后呢?怎么了?那是两个单独的单引号吗?
  • 我在以 Intersect 开头的行出现编译语法错误...是的,它们是两个单独的单引号。它说参数不是可选的
  • 您可能需要With Intersect(Sheets("Sheet1").UsedRange, rng.EntireColumn)。如果您的单元格仅包含两个单引号,也可能会出现问题。这是从其他地方进口的吗?
  • 您好,不是从任何地方导入的。我进行了更改,现在得到 rng.EntireColumn = error
  • 您需要先检查是否找到了该值。你有没有单步执行你的代码?如果您可以选择,我不会使用单撇号,因为它们可能会被文本前缀混淆。

标签: vba excel


【解决方案1】:

您不想为此使用Intersect,这是导致问题的原因。试试这个:

Set Rng = Rows("1:1").Find(what:="New query", after:=Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
With Rng.EntireColumn
    .Replace "''", "#N/A", xlPart
    .SpecialCells(xlConstants, xlErrors).EntireRow.Delete
End With

【讨论】:

    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2020-09-27
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多