第一列更改时自动计算(或删除)Excel中的行

时间:2016-05-31 08:18:04

标签: excel excel-vba vba

我有一张大桌子,第一列 X 是"输入栏"并且它正在发生变化。

Y - 有更多公式和函数(Vlookup),第一列X是查找值,然后其他列从其他工作表计算。

  | A | B | C | D | E
1 | X | Y | Y | Y | Y
2 | X | Y | Y | Y | Y
3 | X | Y | Y | Y | Y
4 | X | Y | Y | Y | Y

我正在插入(并删除)更多X值(实际数据),然后我使用"双击"对于要计算的所有其他Y列,但它不好,因为X范围不同。我试图将它转换为表格" Ctrl-T",但它对我来说效果不好。也许我没有正确使用它。

问题:

如果我粘贴一个新的X列,我需要自动计算其他Y列,或者如果我删除少量X行,其他Y也应该被删除。现在我得到这样的东西:

  | A | B   | C   | D   | E
1 | X | Y   | Y   | Y   | Y
2 | X | Y   | Y   | Y   | Y
3 |   | N/A | N/A | N/A | N/A
4 |   | N/A | N/A | N/A | N/A

或:

  | A | B   | C   | D   | E
1 | X | Y   | Y   | Y   | Y
2 | X | Y   | Y   | Y   | Y
3 | X |     |     |     | 

我需要什么:

如果我删除X值,我需要自动消失Y值:

  | A | B | C | D | E
1 | X | Y | Y | Y | Y
2 | X | Y | Y | Y | Y

如果我添加X值,我需要自动计算Y值:

  | A | B | C | D | E
1 | X | Y | Y | Y | Y
2 | X | Y | Y | Y | Y
3 | X | Y | Y | Y | Y

希望它清楚,谢谢!

2 个答案:

答案 0 :(得分:1)

对于Y列,您可以添加" IF"公式

=if(A1>0,*Y COLUMN FORMULA*,"")

答案 1 :(得分:0)

尝试将公式更改为

=iferror(*Y formula,"")

或者如果它仍然很慢并且您只更换X列

您可以使用以下代码

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 And Target.Count = 1 Then 'CHECK IF THERE IS ANY CHANGE ON X COLUMN
        If Target.Value = Empty Then 'CHECK IF X COLUMN HAS BEEN DELETED
            Rows(Target.Row).Delete 'IF X COLUMN IS DELETED, DELETS WHOLE ROW
        Else
            Cells(Target.Row - 1, 2).Resize(1, 4).Copy Cells(Target.Row, 2).Resize(1, 4) 'IF X COLUMN IS ENTERED OR MODIFIED COPIES ABOVE Y COLUMN FORMULAS
        End If
    End If
End Sub