2014-10-17 129 views
0

我正在为我们的部门制定任务列表。 工作簿是建立如下表:在excel中查找并替换文本

 
Master task list 
Person A 
Person B 
Person C 

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

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

我试过各种代码(.find; = address; Match)。并没有得到任何代码工作。 我的头现在纺:-(

任何人都可以请帮助我。

任务的数量变化,以及在主机任务列表表中的位置(新任务是在表的顶部进入。)

谢谢

+1

“我想创建一个脚本VBA”,或者你想别人为你做呢? – pnuts 2014-10-17 04:53:10

+0

我想要一个VBA脚本,只需点击一下按钮即可更新主任务列表 – Marco 2014-10-17 08:36:13

回答

0

我创建后面有一个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创建了两个字符串,用于捕获需要复制到主任务列表中的更改。 我在主任务列表(.find)上查找唯一的任务描述,并返回找到任务的行号。 然后我将现有的进度和评论替换为新的进展和评论。

细胞我只是做了展示,Excel正执行更新任务的用户的着色。

1

如果您已经建立这个部分:

当一个新的任务(列C)被分配给一个人,这将是自动的盟友复制到个人任务列表

所有你需要做的就是添加一个任务ID到主列表,并从每个片上,VLOOKUP,也许间接引用此底部。

如果你的主列表有任务被分配给这个公式的人会在D2进入主列表上:

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

其中:

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

表:主列表
A .............. B ................. C .... .......... D .................... E
任务ID ....人员.......新任务..Percentage ...评论
1 ..............人A ....任务1 ...... 70 ............. ....人A Comm 1
2 ..............人B ....任务2 ...... 12 .......... ....... Person B TestComment 1
3 .............. Person C .... Task 3 ...... 34 ....... .......... Person C TestComm 1
4 .............. Person A .... Task 4 ...... 23 .... .............个人AC omm 2
5 ..............人员B ....任务5 ...... 41 ................ 。Person B TestComment 2
6 .............. Person C .... Task 6 ...... 26 .............. ... Person C TestComm 2

Sheet:Person A
B ............ C ............ K ...... .............中号
任务ID..Task ......进展%..评论
1 ............任务1。 .. 70 .................人A Comm 1
4 ............任务4 ... 23 ..... ............人A Comm 2

工作表:个人B
B ............ C .......... ..K ................... ...,M
任务ID..Task ......进度%.....评论
2 ............任务2 ... 12 .... ................人B TestComment 1
5 ............任务5 ... 41 ......... ...........人B TestComment 2

表:人员C
B ............ C ........... .K ...................中号
任务ID..Task ......进展%..评论
3 ....... .....任务3 ... 34 .................人员C TestComm 1
6 ............任务6。 .. 26 ................. Person C TestComm 2

间接是一种引用另一个单元格的方式,而无需通过创建该引用的字符串来明确指出它。

所以,如果B2 =某甲

的公式将解析:

= VLOOKUP(A2, '某甲' B1:Z10000,10,FALSE)

+0

= vlookup函数对我来说不起作用,因为单元格是动态的。新行插入列表顶部,所以我会每次都需要改变vlookup函数。谢谢 – Marco 2014-10-20 03:42:28