【问题标题】:Excel: delete entire row when other cell equals a defined valueExcel:当其他单元格等于定义的值时删除整行
【发布时间】:2013-06-18 00:22:38
【问题描述】:

我看过(搜索过)类似的例子,但不是我想要的。

我在 Excel 中有一个工作簿,其中有几个工作表,工作表 A 和 B。这些工作表有一堆数据,所以为了从工作表 A 显示工作表 B 上最重要的数据,我只想镜像行我想根据工作表 A 上的单元格值指定...。我需要根据工作表 A 中的值删除工作表 B 中的整行。

例如,在工作表 AI 中的 X 列有 10 个值(是/否),并且我已将相同的数据与公式链接回工作表 B。也就是说,如果在工作表 A X1 =“是”,那么工作表 B单元格 Y1="Done"...如果 SheetA X2="Yes",则 SheetB 单元格 Y2="Done"...如果 SheetA X3="No",则 SheetB 单元格 Y1="Missing"..等等。

所以我 only 希望 SheetB 中单元格值="Done" 的行存在,因此希望自动删除单元格值="Missing" 的行。以这种方式,我将创建一个表,其中仅包含指定单元格的“完成”值的行。

我知道 Excel 中有宏,但我从未在 VBA 中编写过代码,而且语言处理程序和变量完全让我无法理解。

有没有办法编写一个可以在公式中调用的宏;即,例如) if(A10="Yes", "", delete row macro here)???

谢谢!

【问题讨论】:

  • 录制宏总是一个不错的起点,它将向您展示如何在 vba 中删除一行。从那里,您可以按照自己的意愿调用它,在这个例子中,一个简单的 if 语句就足够了。

标签: excel excel-formula excel-2010 vba


【解决方案1】:

从您问题中的措辞看来,您似乎想要创建一个可在一个单元格中使用的函数,该单元格将改变其他单元格。那是做不到的。函数在公式中使用时仅限于更改单元格本身,而不是其他单元格。

【讨论】:

    【解决方案2】:

    不止一种给猫剥皮的方法。就像安倍说你不能用公式来改变其他单元格。但是你可以使用 VBA。下面的子删除范围内单元格等于 1 的整行。但您可以使其等于任何您想要的。

    Sub DeleteRows()
    Dim FoundCell As Range
    Set FoundCell = Worksheets("SheetB").Range("YourRange").Find(what:=1)
    Do Until FoundCell Is Nothing
        FoundCell.EntireRow.Delete
        Set FoundCell = Worksheets("SheetB").Range("YourRange").FindNext
    Loop
    End Sub
    

    当然,这是额外的工作。您应该做什么,而不是将数据从 A 复制到 B 然后处理它,只需将完成的单元格从 A 复制到 B。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      相关资源
      最近更新 更多