Excel-搜索a列中的单词。在行中找到匹配项后,报告B列中的单词,然后在a列中搜索任何报告的单词
我想知道如何搜索a列中的字符串,报告B列中找到的对应字符串,然后再次搜索a列中报告的字符串,等等。重复搜索,直到找不到更多匹配项 我正在尝试创建一个用户友好的工作表或宏输入框,用于搜索2300多行Excel工作表并生成报告。我希望用户能够选择要搜索的“字符串”(我将使用下拉菜单)。然后,工作表/程序将:Excel-搜索a列中的单词。在行中找到匹配项后,报告B列中的单词,然后在a列中搜索任何报告的单词,excel,ms-access,vba,Excel,Ms Access,Vba,我想知道如何搜索a列中的字符串,报告B列中找到的对应字符串,然后再次搜索a列中报告的字符串,等等。重复搜索,直到找不到更多匹配项 我正在尝试创建一个用户友好的工作表或宏输入框,用于搜索2300多行Excel工作表并生成报告。我希望用户能够选择要搜索的“字符串”(我将使用下拉菜单)。然后,工作表/程序将: 在A列中搜索与选定字符串的所有匹配项 报告在B列中找到的对应字符串(与匹配的行相同) 再次搜索列A以查找在列B中找到的所有报告字符串 重复步骤2)和3),直到找不到更多匹配项 目前,在a列和B列
=IF(iError(索引('All Inclusive Tab'!D:F),SMALL(IF('All Inclusive Tab'!D:D=$A$2,第行('All Inclusive Tab'!D:D)),第(1:1)),第(2)行),索引('All Inclusive Tab'!D:F),SMALL(如果('All Inclusive Tab'!D:D=$A$2,第(1:1)),第(2)行)
我已经在一张单独的纸上的多个单元格中输入了这个代码。工作表上的其他单元格包含类似的代码,然后搜索该代码报告的值。此方法用于查找多个匹配项。然而,我发现它是有限的,因为我的Excel表格很复杂(特别是考虑到行项目的大量)。一旦我开始创建多个“工作”单元,它也会非常慢。我确信一定有更好的方法来做到这一点
我被告知创建一个宏并使用“for”或“while”循环。我对VBA不是很熟悉,正在寻找任何建议。哪些搜索代码对该应用程序有用,以及如何解析它们?我也在考虑使用MicrosoftAccess做这个项目,我想知道这是否会使事情变得更简单或更复杂
Equipment Contents
Box 1 Box 2
Box 1 Box 3
Box 1 Box 4
Box 1 Tool 1
Box 1 Tool 2
Box 1 Tool 3
Box 2 Box 5
Box 2 Tool 4
Box 2 Tool 5
Box 3 Box 6
Box 3 Tool 6
Box 3 Tool 7
Box 4 Tool 8
Box 5 Tool 9
Box 6 Tool 10
编辑:下面是两个所需输出的示例。如果从下拉列表中选择“框2”,则输出如下所示:
Equipment Contents
Box 2 Box 5
Box 5 Tool 9
Box 2 Tool 4
Box 2 Tool 5
Equipment Contents
Box 3 Box 6
Box 6 Tool 10
Box 3 Tool 6
Box 3 Tool 7
如果从下拉列表中选择“框3”,则输出如下所示:
Equipment Contents
Box 2 Box 5
Box 5 Tool 9
Box 2 Tool 4
Box 2 Tool 5
Equipment Contents
Box 3 Box 6
Box 6 Tool 10
Box 3 Tool 6
Box 3 Tool 7
对于这个例子,我是这样设置的 当代码运行时,结果如下所示。 这是代码
Sub Button1_Click()
Dim rws As Long, rng As Range, c As Range, Frng As Range, Frws As Long
Range("K:Z").ClearContents
Application.ScreenUpdating = 0
Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("K1"), Unique:=True
rws = Cells(Rows.Count, "K").End(xlUp).Row
Set rng = Range("K3:K" & rws)
For Each c In rng.Cells
Columns("A:A").AutoFilter Field:=1, Criteria1:=c
Frws = Cells(Rows.Count, "A").End(xlUp).Row
Set Frng = Range("B3:B" & Frws).SpecialCells(xlCellTypeVisible)
Frng.Copy
c.Offset(0, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next c
ActiveSheet.AutoFilterMode = 0
Application.CutCopyMode = 0
End Sub
对于这个例子,我是这样设置的 当代码运行时,结果如下所示。 这是代码
Sub Button1_Click()
Dim rws As Long, rng As Range, c As Range, Frng As Range, Frws As Long
Range("K:Z").ClearContents
Application.ScreenUpdating = 0
Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("K1"), Unique:=True
rws = Cells(Rows.Count, "K").End(xlUp).Row
Set rng = Range("K3:K" & rws)
For Each c In rng.Cells
Columns("A:A").AutoFilter Field:=1, Criteria1:=c
Frws = Cells(Rows.Count, "A").End(xlUp).Row
Set Frng = Range("B3:B" & Frws).SpecialCells(xlCellTypeVisible)
Frng.Copy
c.Offset(0, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next c
ActiveSheet.AutoFilterMode = 0
Application.CutCopyMode = 0
End Sub
您可以创建一个递归函数,在a列中的单元格中循环。每次匹配时,它都将调用相同的函数来查找列表中包含的项。匹配的值将返回并可以追加到分隔字符串中。我已经加粗了一些术语来帮助您开始。访问将是不同的,我不会说更难。您可以使用SQL并将表连接到自身,然后使用VBA更新WHERE子句。您是否计划用户在生成列表后返回到给定项?上市多久会改变一次?您想如何向用户显示结果?谢谢DiegoAndresJAY。清单不应经常更改,但可能每6个月更改一次。我希望结果以表格格式显示(类似于excel)。我希望用户能够在a列中运行搜索。生成报告后,他们可以在同一列上运行单独的搜索。您可以创建一个递归函数,在a列中的单元格中循环。对于每个匹配项,它将调用相同的函数来查找列表中包含的项。匹配的值将返回并可以追加到分隔字符串中。我已经加粗了一些术语来帮助您开始。访问将是不同的,我不会说更难。您可以使用SQL并将表连接到自身,然后使用VBA更新WHERE子句。您是否计划用户在生成列表后返回到给定项?上市多久会改变一次?您想如何向用户显示结果?谢谢DiegoAndresJAY。清单不应经常更改,但可能每6个月更改一次。我希望结果以表格格式显示(类似于excel)。我希望用户能够通过a列运行搜索。然后在生成报告后,他们可以在同一列上运行单独的搜索。感谢您的帮助。结果并不是我想要的显示方式。我已经编辑了我的上述问题,并给出了两个我希望如何显示搜索结果的示例。我如何修改您的搜索以这种方式显示结果?谢谢您的帮助。这个