在Excel中查找和replace文本

我正在为我们的部门制定任务清单。 该工作簿由以下工作表组成:

主任务列表
人A
人B
人C

当新任务(列C)被分配给将被自动复制到该人员任务列表的底部的人员时。 当这个人正在执行他/她的任务时,他们将在列注释(列M)中input注释,并在列%(列K)中input进度。

我想创build一个VBA脚本,只需点击一下button,input的所有注释和进度都会在主任务列表表单中更新。

我试过各种代码(.find; = address; Match)。 并不能得到任何代码工作。 我的脑袋正在旋转:-(

谁能帮帮我吗。

任务数量与主任务列表表单中的位置不同(新任务input在表单顶部)。

谢谢

如果你已经build立这个部分:

当新任务(列C)被分配给将被自动复制到该人员任务列表的底部的人员时

所有你需要做的就是添加一个任务ID到主列表中,并从每个工作表引用一个vlookup,也许是一个间接的。

如果您的主列表具有人员,则将该任务分配给此公式将在主列表中进入D2:

=VLOOKUP(A2,INDIRECT("'"&B2&"'!B1:Z10000"),10,FALSE) 

哪里:

  • A2是主列表上的任务ID
  • B2是表格名称/人员(例如人员A)
  • 范围B1:Z10000是Person Sheet中的查找范围
  • 数字10是ID字段与包含任务ID的列B的人员表上的注释之间的相对距离。

工作表:主列表
A B C D。 ……………….è
任务ID ….人员…….新的任务..百分比…评论
1 …………..人A ….任务1 …… 70 ……………..人A Comm 1
2 …………..个人B ….任务2 …… 12 ……………..个人B TestComment 1
3 …………..人员C ….任务3 …… 34 ……………..人员C TestComm 1
4 …………..人A ….任务4 …… 23 ……………..人A Comm 2
5 …………..个人B ….任务5 …… 41 ……………..个人B TestComment 2
6 …………..人员C ….任务6 …… 26 ……………..人员C TestComm 2

表:人A
乙…………Ç…………ķ……………….中号
任务ID..Task ……进度%..评论
1 …………任务1 … 70 ……………..人A Comm 1
4 …………任务4 … 23 ……………..人A Comm 2

表:人B
乙…………Ç…………ķ………………….中号
任务ID..Task ……进度%…..评论
2 …………任务2 … 12 ……………….. B人员testing意见1
5 …………任务5 … 41 ……………….. B人员testing意见2

表:人C
乙…………Ç…………ķ……………….中号
任务ID..Task ……进度%..评论
3 …………任务3 … 34 ……………..人C TestComm 1
6 …………任务6 … 26 ……………..人C TestComm 2

间接是一种引用另一个单元格的方法,不需要通过创build一个引用的string来明确地指明它。

所以如果B2 =人A

该公式将解决:

= VLOOKUP(A2,'人A'!B1:Z10000,10,FALSE)

我已经创build了一个命令button,后面有下面的VBA文本。

 Private Sub Update_Click() Dim nextrow As Long, i As Integer Dim comments As String, task As String, progress As Double Dim w10 As Worksheet, w20 As Worksheet Dim sourcebook As Workbook Dim findrow As Long, findcolumn As Long Set sourcebook = ActiveWorkbook Set w10 = sourcebook.Sheets("Master task list") Set w20 = sourcebook.Sheets("Harsh C") nextrow = w20.Range("C" & w20.Rows.Count).End(xlUp).Row Range("M14", "M" & nextrow).Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .color = 5296274 .TintAndShade = 0 .PatternTintAndShade = 0 End With For i = 14 To nextrow comments = w20.Cells(i, 13).Value progress = w20.Cells(i, 11).Value task = w20.Cells(i, 3).Value findrow = w10.Cells.Find(what:=task, MatchCase:=True).Row w10.Cells(findrow, 13).Value = comments w10.Cells(findrow, 11).Value = progress On Error Resume Next Cells(i, 13).Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With Next i End Sub 

Iv'e创build了两个string,用于捕获需要复制到主任务列表中的更改。 我查看主任务列表(.find)上的唯一任务描述,并返回find任务的行号。 然后,我将取代现有的进展和意见,以新的进展和意见。

单元格的颜色我只做了向用户显示Excel正在执行更新任务。