繁体   English   中英

在Excel中查找和替换文本

[英]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)

哪里:

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

工作表:主列表
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM