vba - 如果在特定列中发现重复项,则用于更改值的 Excel VBA 代码
问题描述
我是 Excel VBA 的初学者。我只想知道如果发现重复,我将使用什么代码来更改所选行/列的值。我附上的图片中的示例B804 & B805
具有相同的值。在Column C
中,我使用了如果发现重复则添加数字的公式。我想在 VBA 代码中做的是,我想删除公式(不影响另一个单元格),Column C
或者C805
但它会首先问一个问题,比如“已经提到工作订单,你想继续吗?” 然后如果用户单击“是”,则程序是删除公式C805
并在 b 列中找到重复值并粘贴相同的值(意味着 c 列中公式中的任何结果都将粘贴相同的结果如果发现是否重复)。
我尝试了一个代码,但我不知道下一步该放什么。我希望你能帮助我。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B2:B2399")) Is Nothing Then
With Target(1, 2)
'.Value = Date
.EntireColumn.AutoFit
End With
End If
If Range("C1").Value = "Formula" Then
Columns("C").EntireColumn.Hidden = True
Else
Columns("C").EntireColumn.Hidden = False
End If
If Range("C:C").Value = .Duplicate Then
UserForm4.Show
End If
End Sub
解决方案
试试这个代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Set RNG = Range("B2:B2399")
If Intersect(Target(1), RNG) Is Nothing Then Exit Sub
v = Target(1).Value
If WorksheetFunction.CountIfs(RNG, v) > 1 Then 'find duplicates
If MsgBox("Work order was already mentioned, would you like to proceed?", _
vbExclamation + vbYesNo + vbDefaultButton1, "Duplicate found") = vbYes Then
Row = Application.Match(v, Columns("B"), 0) 'find the row with the duplicate
If IsNumeric(Row) Then
Target(1).Offset(, 1) = Cells(Row, 3)
End If
End If
End If
End Sub
推荐阅读
- asp.net-core - Serilog MSSqlServer HTTPs 连接错误
- ios - 如何通过 Swift 5 中的结构项目标签
- python - python - 如何在python中使用PIL直接将像素数组转换为图像?
- perl - 如何在perl cgi中将包括连字符的半角日文字符转换为全角?
- c# - Excel Interop PageSetup 重视有或没有类型转换的奇怪行为
- spring - 使用 Spring Data JPA 避免 UnexpectedRollbackException
- python - 我无法绘制我的 Matplotlib 预测,我不断收到内存错误
- swift - 在 UITableViewCell 中的按钮单击函数中添加一个参数
- java - 如何设计近乎实时的数据流过滤解决方案以向 Web 客户端提供大数据?
- php - 如何在与 csv 文件创建和输出相同的页面中有一个标题('Location:'),或者在基于 html 的页面中创建这个 csv 文件?