首页 > 解决方案 > 在两列中搜索单词并复制到另一个工作表

问题描述

在我的问题中:

  1. 首先,我需要在 B 列中找到“单位名称”。
  2. 如果找到“单位名称”,则应在 D 列中查找“名字:”并向右复制 5 个单元格。(I10 中的“奥巴马”)
  3. 将名称“奥巴马”粘贴到单位名称表。(将“奥巴马”粘贴到工作表“1”A1)

我是编码新手,因此我不太了解它。我尝试了一些代码,但效率不高。

这是显示我的问题的图像。 这是显示我的问题的图像。

Sub Test()

    Dim i As Integer
    Dim m As Integer
    Dim n As Integer
    Dim z As Integer

    For i = 1000 To 1 Step -1
        If Range("B" & i).Value = "Unit Name" Then
            m = 2
            m = i + 1
            n = i - 18

            If Range("D" & n).Value = "First Name:" Then
                m = Range("B" & m).Value + 1
                Range("H" & n).Copy
                Sheets(m).Range("B7").PasteSpecial xlPasteValues
            End If
        End If
    Next i

End Sub

标签: excelvba

解决方案


您不需要所有这些整数变量,您可以使用一些Range变量来代替:

Sub find_name()
Dim mainWS As Worksheet, altWS As Worksheet
Dim unitCel As Range, fNameCell As Range

Set mainWS = Worksheets("Sheet2") 'CHANGE AS NEEDED
Set altWS = Worksheets("Sheet1")

With mainWS
    Set unitCel = .Range("B:B").Find(What:="Unit Name")
    If Not unitCel Is Nothing Then
        Set fNameCell = .Range("D:D").Find(What:="First Name:").Offset(0, 5)
        altWS.Range("A1").Value = fNameCell.Value
    End If
End With

End Sub

可能需要对此进行调整,具体取决于您的数据所在的位置。我假设“奥巴马”可以是任何文本,即 D 列右侧的三列,其中找到“名字:”。


推荐阅读