Excel:当其他单元格等于定义的值时删除整行

时间:2013-06-20 23:40:19

标签: excel excel-vba excel-formula excel-2010 vba

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

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

例如,在Sheet AI中,列X具有10个值(是/否),并且我已将相同的数据与公式链接到表B.也就是说,如果在SheetA X1中=“是”,那么SheetB单元格Y1 =“完成”...如果SheetA X2 =“是”,则SheetB单元格Y2 =“完成”...如果SheetA X3 =“否”,则SheetB单元格Y1 =“缺少”...等等。

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

我知道Excel中有宏,但我从未在VBA中编写代码,语言处理程序和变量完全逃脱了我。

  

有没有办法编写一个可以在公式中调用的宏;即,e.x)if(A10 =“是”,“”,delete row macro here)???

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

有一种方法可以给猫皮肤。就像安倍说你不能用公式改变其他细胞。但是你可以使用VBA。下面的sub删除整个行,其中范围内的单元格等于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.