我正在撰寫 VBA,如果單元格 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”。
現在我已經完成了場景 1 和 2,但我不知道如何為場景 3-6 撰寫 VBA。
有人會幫助我嗎?非常感謝。
下面是我的代碼:
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
uj5u.com熱心網友回復:
請嘗試下一個改編的代碼:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngE As Range: Set rngE = Range("E19:E24")
Dim rngD As Range: Set rngD = Range("D18")
If Target.address = rngD.address Then
Application.EnableEvents = False
If Range("D18").Value = "NA" Then Range("E19:E24").Value = "NA" '1
Application.EnableEvents = True
ElseIf Not Intersect(Target, rngE) Is Nothing Then
Dim countC As Long, countNA As Long, countNC As Long
countC = Application.CountIf(rngE, "C")
countNA = Application.CountIf(rngE, "NA")
countNC = Application.CountIf(rngE, "NC")
Application.EnableEvents = False
If countNC = rngE.cells.count Then
rngD.Value = "NC" '2
ElseIf countC > 0 And countNA > 0 And (countC countNA = rngE.cells.count) And countNC = 0 Then
rngD.Value = "C" '3
ElseIf countC > 0 And countNC > 0 And ((countNA = 0 And countC countNC = rngE.cells.count) Or _
(countNA > 0 And countC countNC countNA = rngE.cells.count)) Then
rngD.Value = "NC" '4 - 5
ElseIf countC = rngE.cells.count Then
rngD.Value = "C" '6 (1)
ElseIf countNA = rngE.cells.count Then
rngD.Value = "NA" '6 (2)
End If
Application.EnableEvents = True
End If
End Sub
上面的代碼基于以下假設:
一個。如果所有范圍字串都相同(“C”或“NA”或“NC”),則滿足條件 1、6(1 和 2 )。
灣。如果至少有一個包含“C”的單元格,最少一個包含“NA”的單元格,并且所有其余單元格包含兩個提到的字串之一,則滿足條件 3
C。如果單元格的最小值為“C”,單元格的最小值為“NC”并且(如果沒有“NA”單元格,則所有范圍單元格都填充有提到的兩個字串,但滿足條件 4 - 5)如果至少一個單元格包含“NA”,則所有范圍單元格都必須包含所有三種情況的值)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/521980.html
標籤:擅长vba细胞相交
