Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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 VBA:根据另一列中的单元格范围删除列中的行_Vba_Excel - Fatal编程技术网

Excel VBA:根据另一列中的单元格范围删除列中的行

Excel VBA:根据另一列中的单元格范围删除列中的行,vba,excel,Vba,Excel,我有上面的Excel表格,并且一直在尝试使用VBA根据B列中的值删除行,前提是它们与C列中当前的值相匹配。我是一名编码新手,到目前为止,我只通过选择C列中的单个单元格来删除行(B列中有一行包含值331013,我通过选择C列中具有该值的单元格(当前为第一行)来删除该行,并将其删除 我想做的是选择列C中的整个值范围,这样我就可以在单个批处理中删除列B中的所有匹配值 以下是我迄今为止在大量谷歌搜索的基础上管理的内容,它只处理一个选择,但当我手动选择多个行时,它只会删除第一个选择的对应值,如果我选择整个

我有上面的Excel表格,并且一直在尝试使用VBA根据B列中的值删除行,前提是它们与C列中当前的值相匹配。我是一名编码新手,到目前为止,我只通过选择C列中的单个单元格来删除行(B列中有一行包含值331013,我通过选择C列中具有该值的单元格(当前为第一行)来删除该行,并将其删除

我想做的是选择列C中的整个值范围,这样我就可以在单个批处理中删除列B中的所有匹配值

以下是我迄今为止在大量谷歌搜索的基础上管理的内容,它只处理一个选择,但当我手动选择多个行时,它只会删除第一个选择的对应值,如果我选择整个列范围,则会出现不匹配错误。我以前也遇到堆栈溢出错误

Sub DeleteRows()

Dim rng As Range
Dim InputRng As Range
Dim DeleteRng As Range
Dim DeleteStr As Range

xTitleId = "Input"

Set InputRng = Application.Selection
Set DeleteStr = Application.Selection

Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set DeleteStr = Application.InputBox("delete range :", xTitleId, DeleteStr.Address, Type:=8)
For Each rng In InputRng
    If rng.Value = DeleteStr Then
        If DeleteRng Is Nothing Then
            Set DeleteRng = rng
        Else
            Set DeleteRng = Application.Union(DeleteRng, rng)
        End If
    End If
Next
DeleteRng.EntireRow.Delete
End Sub

我真的很感激能提供的任何输入。

我真的很抱歉,但是如果你想要一个干净的删除,你绝对必须从最后一行到顶部进行数字运算。行的并集是一个选项。^^意味着使用For循环从最后一行到第一行执行-1步循环。或者使用并集循环向前收集符合条件的行,如果最后不是空,然后删除。感谢您的输入。我尝试了以下操作,得到一个不匹配错误
Sub DeleteRows()Dim I As Integer Dim inputng As Range Dim DeleteRng As Range Set inputng=Application.Selection Set DeleteRng=Application.Selection Set inputng=Application.InputBox(“范围:”,xTitleId,inputng.Address,Type:=8)将i=DeleteRng的DeleteRng=Application.InputBox(“删除范围:”,xTitleId,DeleteRng.Address,Type:=8)设置为1步骤-1如果IsError(Application.Match(单元格(i,2),DeleteRng,0))则设置行(i&“:”&i).EntireRow.Delete End If Next i End Sub
很抱歉上面的文字块,我无法让换行符在我的一生中发挥作用。希望有人仍能理解我所做的更改并提供帮助