Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用If函数从其他工作表中提取数据_Excel_Vba - Fatal编程技术网

Excel 使用If函数从其他工作表中提取数据

Excel 使用If函数从其他工作表中提取数据,excel,vba,Excel,Vba,通过使用中的示例数据集,我尝试使用VBA的If函数查找特定关键字,如果存在匹配项,我希望提取名称本身,以及其序列号和产品,并将其添加到同一工作簿中另一个工作表的最后一行。   例如,如果在C列中,我们检测到cana(注意,这不是一个精确匹配,但足够好),那么我希望VBA帮助我将Canary Wharf、其序列号和旁边的产品(8273615和罐头食品)提取到另一张工作表的末尾,循环一直持续到金丝雀码头的尽头,然后继续到Riverdale,我会输入riverd,然后重复同样的过程。x的存在意味着我有

通过使用中的示例数据集,我尝试使用VBA的If函数查找特定关键字,如果存在匹配项,我希望提取名称本身,以及其序列号和产品,并将其添加到同一工作簿中另一个工作表的最后一行。   例如,如果在C列中,我们检测到cana(注意,这不是一个精确匹配,但足够好),那么我希望VBA帮助我将Canary Wharf、其序列号和旁边的产品(8273615和罐头食品)提取到另一张工作表的末尾,循环一直持续到金丝雀码头的尽头,然后继续到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个相同的输入,即金丝雀码头、8273615、罐头食品,输入了10次,我怀疑这是因为我的
for I=1到10
命令。我期望的最终目标是让VBA提取金丝雀码头,直到没有金丝雀码头的左边,以及右边的两个输入。换句话说,我所看到的是一个2x3矩阵。然后,很自然地,我会移动到Riverdale,循环继续。

如果InStr(1,cel.Value,“cana”)>0那么
这里的
I
循环的目的是什么?是的,I和k循环似乎没有必要。尝试完全删除它们。相反,检查一些代码以检测目标工作表的最后一个单元格,这样新条目就不会写入最后一个单元格,而是写入第一个空行。