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宏:在命名行之间,如果另一个单元格=”则单元格等于零;";_Excel_Vba - Fatal编程技术网

Excel宏:在命名行之间,如果另一个单元格=”则单元格等于零;";

Excel宏:在命名行之间,如果另一个单元格=”则单元格等于零;";,excel,vba,Excel,Vba,我在两个命名行之间的H、I和J列中有数据,顶部是“BorderFirstRow”,底部是“BorderLastRow”。我之所以使用命名行,是因为在添加或删除信息时,中间的行数总是在变化 我试图创建一个宏,其中包含一个节,如果列AA=“c”中同一行的相关单元格 我没有尝试过任何东西,因为我真的不知道从哪里开始,因为我不擅长波动的数据范围。过去我在对数据进行排序时,使用了以下设置范围,但不确定它是否适用于解决方案 With .Range(.Cells(.Range("BorderFirs

我在两个命名行之间的H、I和J列中有数据,顶部是“BorderFirstRow”,底部是“BorderLastRow”。我之所以使用命名行,是因为在添加或删除信息时,中间的行数总是在变化

我试图创建一个宏,其中包含一个节,如果列AA=“c”中同一行的相关单元格

我没有尝试过任何东西,因为我真的不知道从哪里开始,因为我不擅长波动的数据范围。过去我在对数据进行排序时,使用了以下设置范围,但不确定它是否适用于解决方案

With .Range(.Cells(.Range("BorderFirstRow").Row + 1, "H"), _
         .Cells(.Range("BorderLastRow").Row - 1, "J"))

你没有回答我的澄清问题

请检查下一个代码。如果我上述评论中的假设是正确的,它将起作用:

Sub ChangeH_JValuesForCInAA()
 Dim sh As Worksheet, arr, i As Long
 
 Set sh = ActiveSheet
 arr = sh.Range(sh.cells(sh.Range("BorderFirstRow").row, "A"), sh.cells(sh.Range("BorderLastRow").row, "J")).Value
 For i = 1 To UBound(arr)
    If arr(i, 1) = "c" Then
        arr(i, 8) = 0: arr(i, 9) = 0: arr(i, 10) = 0
    End If
 Next i
 sh.cells(sh.Range("BorderFirstRow").row, "A").Resize(UBound(arr), UBound(arr, 2)).Value = arr
End Sub
范围介于到命名行范围之间
  • 那是个好主意
  • 如有必要,只需调整工作簿和工作表名称即可
代码

With ThisWorkbook.Worksheets("Sheet1")
    Dim i As Long
    For i = .Range("BorderFirstRow").Row + 1 To .Range("BorderLastRow").Row - 1
        If .Cells(i, "AA").Value = "c" Then
            .Columns("H:J").Rows(i).Value = 0
        End If
    Next
End With

你的问题没有解释太多。“BorderLastRow”是否在工作表的最后一行命名为cell?我的意思是,在它的行之后没有任何其他填充的单元格。如果是,则有其他简单的方法来设置范围。那么,你想要实现什么?如果列a:a中的一个单元格的值等于“c”,那么同一行H:J范围内的单元格是否应为零?这是你的代码应该完成的唯一任务吗?哦,哇,工作得很好!非常感谢。