首页 > 解决方案 > 使用 If 函数从另一个工作表中提取数据

问题描述

通过使用使用“If”函数从另一个工作表中提取数据中找到的示例数据集,我正在尝试使用 VBA 的 If 函数来查找特定关键字,如果匹配,我想提取名称本身及其序列号和产品,并添加到另一个工作表的最后一行,在同一个工作簿。例如,如果在 C 列中,我们检测到 cana(请注意,这不是完全匹配,但已经足够好了),那么我希望 VBA 帮助我提取 Canary Wharf、它的序列号和旁边的产品,即 8273615 和罐头食品,到另一个工作表的末尾,循环一直持续到 Canary Wharf 的末尾,然后转到 Riverdale,我会输入,比如说,riverd,然后重复相同的过程。x 表示我有一个相当大的数据集,仅此而已。

我使用下面的代码来执行任务:

Option Compare Text
 
Sub DataExtraction()
 
Dim SrchRng As Range, cel As Range, i As Integer
 
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
 
 
Set SrchRng = ws1.Range("A1:A100")
 
For Each cel In SrchRng
    For i = 1 To 10
        For k = 1 To 1
        If InStr(1, cel(i, k).Value, "cana") > 0 Then
            ActiveCell(i, k).Value = "Canary Wharf"
            ActiveCell(i, k + 1).Value = cel(i, k + 1).Value
            ActiveCell(i, k + 2).Value = cel(i, k + 2).Value
        End If
        Next k
    Next i
Next cel
 
End Sub

  上面的代码导入了10个相同的输入,分别是Canary Wharf,8273615,Canned Food,10次,我怀疑是因为我的For i = 1 To 10  命令。我想要的最终目标是让 VBA 提取 Canary Wharf,直到没有 Canary Wharf 的左侧,以及右侧的两个输入。换句话说,我正在查看的将是一个 2x3 矩阵。然后,很自然地,我会搬到 Riverdale,这样循环下去。

标签: excelvba

解决方案


推荐阅读