我正在尝试为需要在单元格中填充相同值的用户(如果行在另一列中包含相同值)的用户提供一种解决方案。电子表格包含几百行和超过30列;用户需要解决方案来消除输入过程中的人为错误。
以最简单的形式,电子表格包含以下屏幕快照中的信息:
样本数据
对于John在第2行中的记录,在用户在“批”列中输入A1(列D)之后,解决方案将自动填充具有相同ID(John B)的John的第6行和第8行。棘手的部分是,对于Mary的记录(在第3行中),在用户输入B2之后,应填充第7行,因为ID字段包含Mary的ID号。
此外,由于我们的用户开发了业务流程,因此“批次”值的自动填充不应该依赖于记录的位置。也就是说,如果用户在第8行中输入John的A1,然后在第2行和第6行中填充值,则该解决方案也应该有效。
这是我第一次尝试在网上找到的VBA代码,但无法恢复该代码的来源。但是,无论输入行的位置在哪里,我都需要一些帮助来完成ID字段的部分匹配以及批次字段的自动填充。该代码查找第一个批处理值,并在第一个批处理值之后填充其他值。
Option Explicit
Sub Main()
Dim vals As Variant
Dim curValue As String
Dim r, c As Integer
r = ActiveCell.Row
c = ActiveCell.Column
curValue = ActiveSheet.Cells(r, c - 2)
With Range("B2", Cells(Rows.Count, "B").End(xlUp))
vals = .Value ' store referenced range values
.Replace what:=curValue, replacement:=1, lookat:=xlPart
With .SpecialCells(xlCellTypeConstants, xlNumbers).Offset(, 2)
.Value = .Value
End With
.Value = vals
End With
End Sub
谢谢