首页 > 解决方案 > 如何在同一列中搜索多个值?

问题描述

我有一个有八个工作表的工作簿。第一个工作表是一个首页,其中包含工作簿中的所有数据,如果您愿意,可以作为主工作表。其余七个选项卡是团队的员工姓名。

我的代码将在 C 列中搜索名称并将包含该名称的整行复制到相应工作人员的个人工作表中。

我现在需要在同一列 (C) 中搜索其余工作人员的姓名,并将相应的行复制到相应的工作表中。

我当前的代码:

Private Sub CommandButton1_Click()
    Dim c As Range
    Dim j As Integer
    Dim Source As Worksheet
    Dim Target As Worksheet
    ' Change worksheet designations as needed
    Set Source = ActiveWorkbook.Worksheets("Front Page")
    Set Target = ActiveWorkbook.Worksheets("Charlotte")
    j = 2
    ' Start copying to row 2 in target sheet
    For Each c In Source.Range("C1:C1000") ' Do 1000 rows
        If c = "Charlotte Richardson" Then
            Source.Rows(c.Row).Copy Target.Rows(j)
            j = j + 1
        End If
    Next c
End Sub

标签: excelvba

解决方案


如果您要使用您正在寻找的确切名称(“Charlotte Richardson”,而不是“Charlotte”)来命名您的床单,那么您可以使用这个:

Private Sub CommandButton1_Click()
  Dim c As Range
  Dim j As Integer, i As Integer
  Dim Source As Worksheet

  Set Source = ActiveWorkbook.Worksheets("Front Page")
  For i = 2 To ActiveWorkbook.Sheets.Count 'Assuming that "Front Page" is your first sheet
    j = 2
    ' Start copying to row 2 in target sheet
    For Each c In Source.Range("C1:C1000") ' Do 1000 rows
      If c.Value2 = ActiveWorkbook.Worksheets(i).Name Then
        Source.Rows(c.Row).Copy ActiveWorkbook.Worksheets(i).Rows(j)
        j = j + 1
      End If
    Next c
  Next
End Sub

这样做的好处是,当您必须添加员工时,您所要做的就是添加一个具有正确名称的新工作表,您的代码无需任何修改即可工作。


推荐阅读