You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为VBA行删除代码添加双条件判断:命名范围匹配+区间求和为0

满足双条件删除行的VBA代码

以下是修改后的VBA代码,仅当同时满足两个条件时才删除整行:

  1. C列单元格值不属于命名范围ReferenceLocations
  2. 指定工作表中该行从动态计算的列(通过Offset实现)到P列的求和结果为0
' 定义变量
Dim Cell As Range, cRange As Range, LastRow As Long, x As Long, TestRange As Range, MyRange As Range
Dim targetSheet As Worksheet
Dim offsetCol As Integer ' 存储偏移量,用于确定求和起始列
Dim startCol As Range ' 求和区域的起始列

'DELETE IRRELEVANT LOCATIONS
' 根据C列确定最后一行数据
LastRow = Sheets("Sheet1").Cells(Rows.Count, "C").End(xlUp).Row

' 设置检查范围为C2到C列最后一行
Set cRange = Sheets("Sheet1").Range("C2:C" & LastRow)
' 指定要求和的另一工作表,请根据实际修改名称
Set targetSheet = ThisWorkbook.Sheets("目标工作表名称")
' 假设偏移量存储在Sheet1的D1单元格,请根据实际修改位置
offsetCol = Sheets("Sheet1").Range("D1").Value

' 从下往上遍历检查范围(避免删除行导致的索引混乱)
For x = cRange.Cells.Count To 1 Step -1
    With cRange.Cells(x)
        ' 确定求和区域的起始列:以目标工作表的A列为基准,偏移offsetCol列
        Set startCol = targetSheet.Cells(.Row, 1).Offset(0, offsetCol)
        ' 同时满足两个条件时删除整行
        If IsError(Application.Match(.Value, Range("ReferenceLocations"), 0)) _
            And Application.Sum(targetSheet.Range(startCol, targetSheet.Cells(.Row, "P"))) = 0 Then
            .EntireRow.Delete
        End If
    End With
Next x

关键修改说明

  • 新增targetSheet变量:用于指定要求和的另一工作表,需替换为实际工作表名称
  • 新增offsetCol变量:读取存储偏移量的单元格值(示例为Sheet1的D1),用于动态计算求和起始列
  • 用Offset构建求和起始列:结合P列确定完整求和范围
  • 修改If判断逻辑:通过And连接两个条件,确保仅当双条件都满足时执行删除操作

内容的提问来源于stack exchange,提问作者vjr2109

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:41:03