Excel 使用If函数从其他工作表中提取数据
通过使用中的示例数据集,我尝试使用VBA的If函数查找特定关键字,如果存在匹配项,我希望提取名称本身,以及其序列号和产品,并将其添加到同一工作簿中另一个工作表的最后一行。 例如,如果在C列中,我们检测到cana(注意,这不是一个精确匹配,但足够好),那么我希望VBA帮助我将Canary Wharf、其序列号和旁边的产品(8273615和罐头食品)提取到另一张工作表的末尾,循环一直持续到金丝雀码头的尽头,然后继续到Riverdale,我会输入riverd,然后重复同样的过程。x的存在意味着我有一个相当大的数据集,没有别的 我已使用以下代码执行此任务:Excel 使用If函数从其他工作表中提取数据,excel,vba,Excel,Vba,通过使用中的示例数据集,我尝试使用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循环似乎没有必要。尝试完全删除它们。相反,检查一些代码以检测目标工作表的最后一个单元格,这样新条目就不会写入最后一个单元格,而是写入第一个空行。