在所有床单中查找特定文本,如果匹配,则在同一行中写入值,但对主表的列值不同


  • 检查所有床单
  • 如果在表格的第五行中找到了特定的文本(例如,是(,请从该行获取数据(但列(,然后将数据写入主纸我该怎么做?

我在下面的代码中发现对我相对有用,但与我的要求不匹配100%。请帮助我。

此代码中的问题是: - 我在特定范围内有特定的文本(是((E6:e16(。 我想要的是仅检查是的。如果找到,则写A列的写入值&ROW(在其中找到的单词(中,将其纳入总主表,然后将其检查到最后一张。

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

任何帮助将不胜感激。谢谢。

对于一张纸,单独使用公式很容易完成,例如

= 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的解决方案,以查看是否对您有用。

最新更新