Excel宏:在命名行之间,如果另一个单元格=”则单元格等于零;";
我在两个命名行之间的H、I和J列中有数据,顶部是“BorderFirstRow”,底部是“BorderLastRow”。我之所以使用命名行,是因为在添加或删除信息时,中间的行数总是在变化 我试图创建一个宏,其中包含一个节,如果列AA=“c”中同一行的相关单元格 我没有尝试过任何东西,因为我真的不知道从哪里开始,因为我不擅长波动的数据范围。过去我在对数据进行排序时,使用了以下设置范围,但不确定它是否适用于解决方案Excel宏:在命名行之间,如果另一个单元格=”则单元格等于零;";,excel,vba,Excel,Vba,我在两个命名行之间的H、I和J列中有数据,顶部是“BorderFirstRow”,底部是“BorderLastRow”。我之所以使用命名行,是因为在添加或删除信息时,中间的行数总是在变化 我试图创建一个宏,其中包含一个节,如果列AA=“c”中同一行的相关单元格 我没有尝试过任何东西,因为我真的不知道从哪里开始,因为我不擅长波动的数据范围。过去我在对数据进行排序时,使用了以下设置范围,但不确定它是否适用于解决方案 With .Range(.Cells(.Range("BorderFirs
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范围内的单元格是否应为零?这是你的代码应该完成的唯一任务吗?哦,哇,工作得很好!非常感谢。