excel - 如何比较多个命名列范围中相应单元格的值并更改另一个相应单元格中的内部颜色
问题描述
我想在 Excel VBA 中编写一个代码,比较 3 个命名范围(例如“Peter”、“Paul”和“John”)中相应单元格中的值,如果所有三个值都 >= 3,则内部颜色在第四个命名范围内的相应单元格中,例如“James”,更改为绿色。我使用偏移量编写了代码,但如果我在“Peter”、“Paul”和“John”之间插入新列,代码将无法正常工作。请您帮我编写一个使用命名范围的代码,以避免在添加新列时出错?谢谢你。
If Cell.Value >= 3 Then
If Cell.Offset(0, 1).Value >= 3 Then
If Cell.Offset(0, 2).Value >= 3 Then
If Cell.Offset(0, 3).Value >= 3 Then
Cell.Offset(0, 4).Interior.ColorIndex = 4
End If
End If
End If
End If
Next Cell
解决方案
这有效
Dim xCel As Range, rPtr As Long
Dim xSht As Worksheet
Set xSht = ActiveSheet
rPtr = 0
For Each xCel In xSht.Range("Peter").Cells
rPtr = rPtr + 1
If xCel.Value >= 3 Then
If xSht.Range("Paul").Cells(rPtr, 1).Value >= 3 Then
If xSht.Range("John").Cells(rPtr, 1).Value >= 3 Then
xSht.Range("James").Cells(rPtr, 1).Interior.ColorIndex = 34
End If
End If
End If
Next xCel
这解决了你提到的问题,但它仍然假定所有范围都是相同的长度和单列
推荐阅读
- excel - PowerQuery COUNTIF 以前的日期
- java - 注册表单:404错误
- python - Pandas:根据是否为 NaN 移动列
- glsl - 对于两个向量 a、b,给定它们之间的 45 度角,此着色器代码返回什么?
- c# - 缩短功能
- javascript - 如何将测试用例组织成大型应用程序的测试套件
- unity3d - Unity表面着色器不会在自身上投射阴影
- tfs - 还原 TFS 备份时出错:TF400856:以下服务未在数据库中注册:IdentityManagement
- c# - 使用 Asp.Net 创建带有回复选项的评论框
- powershell - 获取帮助:找不到自定义属性“System.Management.Automation.PSCredential”的类型