[英]Find and replace text in excel
我正在为我们部门制定任务清单。 该工作簿由以下工作表构成:
Master task list Person A Person B Person C
将新任务(列C)分配给人员后,该任务将自动复制到该人员任务列表的底部。 当该人执行其任务时,他们将在列注释(M列)中输入注释,并在%列(K列)中输入进度。
我想创建一个VBA脚本,只需单击一下按钮,所有输入的注释和进度将在主任务列表中更新。
我尝试了各种代码(.find; = address; Match)。 并且无法使任何代码正常工作。 我的头现在在旋转:-(
谁能帮帮我吗。
任务的数量以及主任务列表表中的位置有所不同(新任务在表顶部输入)。
谢谢
如果您已经建立了这部分:
将新任务(C列)分配给人员后,该任务将自动复制到该人员任务列表的底部
您需要做的就是将任务ID添加到主列表中,并使用vlookup或间接引用每个工作表中的ID。
如果您的主列表包含“人员”,则分配给该公式的任务将进入主列表的D2中:
=VLOOKUP(A2,INDIRECT("'"&B2&"'!B1:Z10000"),10,FALSE)
哪里:
工作表:主列表
A B C D。 ...................è
任务ID ...人...新任务...百分比...注释
1 ..............人A ....任务1 ...... 70 .................人A通讯1
2 ..............人B ....任务2 ...... 12 ........人B TestComment 1
3 ..............人员C ....任务3 ...... 34 .................人员C TestComm 1
4 ..............人A ....任务4 ...... 23 .................人A通讯2
5 ..............人B ....任务5 ...... 41 ........人B TestComment 2
6 ......................人员C ....任务6 ...... 26 .................人员C TestComm 2
工作表:A人
乙............Ç............ķ...................中号
任务ID ..任务......进度%..注释
1 ............任务1 ... 70 ........ A通讯员1
4 ............任务4 ... 23 ......................人A通讯2
工作表:B人
乙............Ç............ķ......................中号
任务ID ..任务......进度%.....注释
2 ............任务2 ... 12 ...........人B测试注释1
5 ............任务5 ... 41 ..............人B测试注释2
工作表:C人
乙............Ç............ķ...................中号
任务ID ..任务......进度%..注释
3 ............任务3 ... 34 .................人C TestComm 1
6 .....................任务6 ... 26 .................人C TestComm 2
间接的是一种引用另一个单元格的方法,而无需通过创建该引用的字符串来明确说明它。
所以如果B2 =人A
该公式将解析为:
= VLOOKUP(A2,'Person A'!B1:Z10000,10,FALSE)
我创建了一个命令按钮,其后具有以下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创建了两个字符串,以捕获需要复制到主任务列表的更改。 i在主任务列表(.find)上查找唯一的任务描述,并返回找到任务的行号。 然后,我将现有进度和注释替换为新进度和注释。
我只是为了向用户显示Excel正在执行更新任务而对单元格进行着色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.