求助:完善Excel VBA单元格值双向联动逻辑(场景3-6)
Excel VBA 实现D18与E19:E24双向联动
我需要编写Excel VBA代码实现D18与E19:E24的双向联动:
- 当D18值变化时,同步修改E19:E24的值;
- 当E19:E24任一或全部单元格值变化时,同步修改D18的值。
已实现场景
- 当D18值为"NA"时,E19:E24所有单元格设为"NA"
- 当E19:E24中存在"NC"时,D18值设为"NC"
待实现场景
- 当E19:E24同时包含"C"和"NA"时,D18值设为"C"
- 当E19:E24同时包含"C"和"NC"时,D18值设为"NC"
- 当E19:E24同时包含"C"、"NA"和"NC"时,D18值设为"NC"
- 当E19:E24全为"C"或全为"NA"时,D18值对应设为"C"或"NA"
现有代码
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Intersect(Target, Range("D18")) Is Nothing Then If Not Intersect(Target, Range("E19:E24")) Is Nothing Then If Target.Value = "NC" Then Range("D18").Value = "NC" End If Else 'Target.Value = D18 Value Select Case Target.Value Case "NA" Range("E19:E24").Value = "NA" End Select End If Application.EnableEvents = True End Sub
完整实现代码
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Dim hasNC As Boolean, hasC As Boolean, hasNA As Boolean Dim cell As Range Application.EnableEvents = False ' 处理D18值变化的情况 If Not Intersect(Target, Range("D18")) Is Nothing Then Select Case Target.Value Case "NA" Range("E19:E24").Value = "NA" Case "C" Range("E19:E24").Value = "C" Case "NC" Range("E19:E24").Value = "NC" End Select ' 处理E19:E24区域值变化的情况 ElseIf Not Intersect(Target, Range("E19:E24")) Is Nothing Then ' 初始化状态标记 hasNC = False hasC = False hasNA = False ' 遍历区域,标记各值存在状态 Set rng = Range("E19:E24") For Each cell In rng Select Case cell.Value Case "NC" hasNC = True Case "C" hasC = True Case "NA" hasNA = True End Select Next cell ' 根据状态标记设置D18的值 If hasNC Then ' 存在NC时优先级最高,覆盖场景2、4、5 Range("D18").Value = "NC" ElseIf hasC And hasNA Then ' 同时存在C和NA,对应场景3 Range("D18").Value = "C" ElseIf hasC Then ' 全为C,对应场景6 Range("D18").Value = "C" ElseIf hasNA Then ' 全为NA,对应场景6 Range("D18").Value = "NA" End If End If Application.EnableEvents = True End Sub
代码说明
- D18变化时:补充了"C"和"NC"的同步逻辑,确保修改D18时E19:E24能统一同步对应值;
- E19:E24变化时:通过遍历单元格标记值的存在状态,按优先级判断D18的值:
- "NC"优先级最高,只要存在就设置D18为"NC";
- 无"NC"时,若同时有"C"和"NA"则设为"C";
- 仅单一值(全C或全NA)时,对应设置D18的取值。
内容的提问来源于stack exchange,提问作者Alan Tse
相关产品推荐
相关产品推荐

