excel - 当旁边的单元格更改时更改单元格
问题描述
如果 B 列或 D 列有任何变化,则应仅在 E 列中为更改的行打印数据。
条件是:
- 如果 B = 进程并且 D = ADD 那么在 E = MfgddnS 中,
- 如果 B = Process 并且 D = REMOVE 那么在 E = MetrhS 中,
- 其他什么都没有,
- 如果 B = TOOL 且 D = ADD 那么在 E = Mfgd 中,
- 如果 B = TOOL 且 D = REMOVE 那么在 E = Met 中,
- 其他什么都没有。
我设法通过单击按钮而不是自动地实现了这一点,它还更改了 E 列中的每个单元格,而不仅仅是更改的行中。因此,如果您有任何想法,请提及。
Sub effected()
Dim R As Long, Ws As Worksheet
Set Ws = Worksheets("Sheet1")
For R = Ws.Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If Ws.Range("B" & R).Value = "Process" And Ws.Range("D" & R).Value = "ADD" Then
Ws.Range("E" & R).Value = "MfgddnS"
Ws.Range("E" & R).Interior.ColorIndex = 41
ElseIf Ws.Range("B" & R).Value = "Process" And Ws.Range("D" & R).Value = "REMOVE" Then
Ws.Range("E" & R).Value = "MetrhS"
Ws.Range("E" & R).Interior.ColorIndex = 6
ElseIf Ws.Range("B" & R).Value = "Process" And Ws.Range("D" & R).Value = "MODIFY" Then
Ws.Range("E" & R).Value = "qeth"
Ws.Range("E" & R).Interior.ColorIndex = 8
Else
Ws.Range("E" & R).Value = "NOTHING"
Ws.Range("E" & R).Interior.ColorIndex = 4
End If
Next R
End Sub
解决方案
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("D:D"), Target) Is Nothing Then
Dim changedCell As Range
For Each changedCell In Intersect(Range("D:D"), Target).Cells
If changedCell.Offset(0, -2).Value = "Process" And changedCell.Offset(0, 0).Value = "ADD" Then
changedCell.Offset(0, 1).Value = "MfgddnS"
changedCell.Offset(0, 1).Interior.ColorIndex = 41
Else
changedCell.Offset(0, 1).Value = "Nothing"
changedCell.Offset(0, 1).Interior.ColorIndex = 4
End If
Next changedCell
End If
End Sub
唯一的问题是我如何在代码中提及 B 列
推荐阅读
- javascript - 我的“过渡”事件侦听器不起作用吗?
- c# - 使用 C# XmlElement 创建 XML 字符串
- bash - 如何使用 Bash 将 .flac 文件的目录(包括多个子目录)转换为 .mp3?
- html - 单击颜色时如何更改整个站点的背景颜色或文本颜色?角
- python - 如何将我的python默认为另一个python版本
- python - 如何根据列表元素的类型将列表转换为字符串
- r - 当条件表达式存储在数据框列中时,如何迭代运行 dplyr::case_when()?
- sql - SQL语句获取未排序的书名
- ms-office - Office 始终以匿名用户身份请求文件
- r - 需要帮助在 Mac 上安装 rJava