Excel实例下载
  VBA  应用教程
    数据库SQL知识
设为首页
多个工作表中查找结果的自定义函数
作者:bengdeng | 来源:Excel吧 | 时间:2009-08-24 | 阅读权限:游客 | 会员币:0 | 【

这个是网站在本站论坛中的一个提问,原贴地址:http://www.excelba.com/BBs/Show.asp?bid=1&aid=2771&page=1,我用自定义函数的方法来完成,感觉有点通用的意义,就把它整理成文章,发布于此。

Function MoreSheetFind(FindText As Variant, Starts As Integer, Ends As Integer, _
    Cols As Integer, Optional All As Boolean = False, Optional Delimiter As String = "/")
'*****************************************************************
'时间:2009-8-24
'作者:bengdeng
'功能:按条件在指定的连续多个工作表中查找结果
'参数说明:
'  FindText:要查找的值。可为单元格或数值。
'  Starts:开始的工作表索引。
'  Ends:结束的工作表索引。
'  Cols:查找值与结果的间隔列数。
'  All:指定是否查找所有的结果。默认为否,即只查找第一个结果。可选。
'  Delimiter:查找所有结果时,结果间的分隔符。默认为“/”。可选。
'发布:http://www.excelba.com
'******************************************************************
Application.Volatile
On Error Resume Next
Dim X As Integer, FRan As Range, TStr As String, UStr As String
For X = Starts To Ends
    Set FRan = Sheets(X).Cells.Find(FindText, LookIn:=xlValues)
    If Not FRan Is Nothing Then
        If All Then
            TStr = FRan.Address
            Do
                If UStr = "" Then
                    UStr = FRan.Offset(0, Cols - 1)
                Else
                    UStr = UStr & Delimiter & FRan.Offset(0, Cols - 1)
                End If
                Set FRan = Sheets(X).Cells.FindNext(FRan)
            Loop While Not FRan Is Nothing And FRan.Address <> TStr
        Else
            UStr = FRan.Offset(0, Cols - 1)
            Exit For
        End If
    End If
Next
MoreSheetFind = UStr
End Function

使用示例:

在第2到第4个工作表中,查找A1单元格中的值,查找结果与查找值的间隔为2,只查找首个结果。

=MoreSheetFind(A1,2,4,2)

在第1到第3个工作表中,查找值为“甲”,查找结果与查找值的间隔为2,查找所有结果,结果分隔符为默认的“/”。

=MoreSheetFind("甲",1,3,2,1)

在第3到第5个工作表中,查找值为“Excel”,查找结果与查找值的间隔为1,查找所有结果,结果分隔符为“|”。

=MoreSheetFind("Excel",3,5,1,1,"|")

文章录入:admin | 浏览次数:
相关评论(以下网友评论只代表其个人观点,不代表Excel吧的观点或立场)
相关信息

关于本站 | 留言本站 | 友情连接 | 后台管理
Copyright © 2005 - 2008 Excel吧 Inc. All Rights Reserved.
HxCms Ver9.0  闽ICP备06001689号
关闭此窗口