我发现下面的代码对我来说相对有用,但不是100%符合我的要求。请帮助我。
此代码中的问题是: - 我在特定范围内有特定文本(是)(e6:e16)。 我想要的只是检查是的。如果找到,则写入A和A列的值。将所有单词找到的行放入主表并检查到最后一页。
Sub SeachSheets()
Dim FirstAddress As String, WhatFor As String
Dim Cell As Range, Sheet As Worksheet
WhatFor = InputBox("What are you looking for?", "Search Criteria")
If WhatFor = Empty Then Exit Sub
For Each Sheet In Sheets
If Sheet.Name <> "SEARCH" Then
With Sheet.Columns(1)
Set Cell = .Find(WhatFor, LookIn:=xlValues, LookAt:=xlPart)
If Not Cell Is Nothing Then
FirstAddress = Cell.Address
Do
Cell.EntireRow.Copy _
Destination:=Sheets("SEARCH").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
Set Cell = .FindNext(Cell)
Loop Until Cell Is Nothing Or Cell.Address = FirstAddress
End If
End With
End If
Next Sheet
Set Cell = Nothing
End Sub
任何帮助将不胜感激。 谢谢。
答案 0 :(得分:0)
对于一张纸,单独使用配方即可轻松完成,例如
= INDEX(1:1,MATCH("yes",5:5,0))
这会在当前工作表的第5行中找到yes
的第一个实例,并返回第1行和同一列中的值。
一个选项是将此公式放在工作簿中每个工作表上的某个位置作为“辅助单元格”(例如单元格Z99
),然后在主工作表上的某处使用公式来检查所有这些辅助单元格,例如
= IFERROR(Sheet1!Z99,IFERROR(Sheet2!Z99,IFERROR(Sheet3!Z99,IFERROR(...,"no match"))))
当然,也可能没有辅助细胞,但公式变得混乱:
= IFERROR(INDEX(Sheet1!1:1,MATCH("yes",Sheet1!5:5,0)),
IFERROR(INDEX(Sheet2!1:1,MATCH("yes",Sheet2!5:5,0)),
IFERROR(INDEX(Sheet3!1:1,MATCH("yes",Sheet3!5:5,0)),
IFERROR(...,"no match"))))
如果你想要一种没有明确调用每个工作表的方法,那么可能需要VBA。只需发布一个没有VBA的解决方案,看看这是否适合您。