Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改第一列时自动计算(或删除)Excel中的行_Excel_Vba - Fatal编程技术网

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

更改第一列时自动计算(或删除)Excel中的行,excel,vba,Excel,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范围不同。我试图将其转换为表“C

我有一个大表,其中第一列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
或:

我需要什么:

如果删除X值,则需要自动删除Y值:

  | A | B | C | D | E
1 | X | Y | Y | Y | Y
2 | X | Y | Y | Y | Y
  | A | B | C | D | E
1 | X | Y | Y | Y | Y
2 | X | Y | Y | Y | Y
3 | X | Y | Y | Y | Y
如果我添加X值,我需要自动计算Y值:

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

希望清楚,谢谢

对于Y列,可以添加“如果”公式


尝试将公式更改为

=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

它起作用了!谢谢,这么简单,只有一个问题,excel现在太慢了,我很痛苦:(太多了,但我需要所有这些,Y通常是这样的:=VLOOKUP(A2;'Sheet2'!$A:$F;2;FALSE),我在两张纸中“vlookuping”。一张纸有8000行,一张超过20000:D,第三张是“结果表”这里提到过。如果我不使用If函数,一切正常。我会稍后再试,我不在我的电脑附近(让你知道!:)Uff我不确定我是否知道如何正确使用你的函数,因为只是复制和粘贴不起作用(我临时将其更改为public Sub(),但我仍然无法在宏中看到它),您能帮忙吗?谢谢。私有子工作表\u更改将转到特定位置。右键单击有X列和Y列的工作表。单击“查看代码”。然后将代码粘贴到显示的宏编辑器中。这将等待您在X列中的更改,并且每当X列中有更改时,它将执行代码。只需让您要知道,此代码将删除X列值为0的整行,包括同一行中的Y列公式。它将运行得更快,但如果您希望在X列为空时保留公式,我不建议您使用此代码。并且代码复制了上面的行公式。因此,如果跳过或清空上面的行,Y列将不起作用