2016-09-23 65 views
0

我有一个包含小计的Excel表,用于协调帐户。小计在F & H列。当它们平衡时,我想删除该小计组中的所有行。当单元格匹配时,VBA删除小计组中的行

在这张表中,小计公式包括它正在计算的行(在这种情况下,我想从行104-109中删除,因此可以从公式=SUBTOTAL(9,F104:F108)中获得104,所以我一直试图提取第一行然后将它传递到要被删除的行的范围

UPDATE:改变了脚本

简化,但仍然得到类型不匹配在Rows(y & ":" & i).EntireRow.Delete线

Sub QuickKill() 
Dim i 
Dim y 

For i = 1910 To 1 Step -1 
    If Range("F" & i).Value = Range("H" & i).Value Then 
     y = Mid(Range("F" & i).Formula, 14, CInt(Len(i))) 
     Rows(y & ":" & i).EntireRow.Delete 
    End If 
Next i 

End Sub

任何帮助/指导非常感谢!提前致谢。

Here's the layout of the excel sheet

+1

什么是错误信息? – Brian

+0

它说运行时错误'5'。无效的过程调用或参数。如果我用2,3或4代替x,它表示类型不匹配。这肯定是这一行中的一个问题 –

+0

我认为Range.DirectPrecedents方法应该得到公式中引用的范围 – Slai

回答

1

MID的第三个参数不能为负。检查你没有传入x的负数。有多种类型转换问题。首先从您的暗淡语句中删除“只要”。我认为在这一点上,你会发现问题是你正在进入Rows()是不是一个有效的地址行

+0

我确认。取决于脚本所在行的范围是2-4。 –

+0

它是类型不匹配错误吗?我更新了我的回答 –

+0

它说运行时错误'5'。无效的过程调用或参数。 如果我用2,3或4替换x,它可以工作。这绝对是这条线上的一个问题: –

相关问题