Excel 根据两个条件在文件中搜索
此宏将打开以ECL开头的最后保存的文件。 并将在ECL文件中搜索工作表中此工作簿中的定义值:“主”单元格:B3 但我试图让这个宏根据两个条件搜索depending,例如在B3和B4中(我的意思是当两个条件合适时),但我还没有找到方法。 先谢谢你Excel 根据两个条件在文件中搜索,excel,vba,Excel,Vba,此宏将打开以ECL开头的最后保存的文件。 并将在ECL文件中搜索工作表中此工作簿中的定义值:“主”单元格:B3 但我试图让这个宏根据两个条件搜索depending,例如在B3和B4中(我的意思是当两个条件合适时),但我还没有找到方法。 先谢谢你 Sub Findandkopy() Dim cellscontents As String Dim rng As Range Dim loDeinWert As String Dim sfirstaddress As String Dim ESLWb A
Sub Findandkopy()
Dim cellscontents As String
Dim rng As Range
Dim loDeinWert As String
Dim sfirstaddress As String
Dim ESLWb As Workbook
Dim wb As Workbook
Const strPath As String = "L:\10 \05\HGB\"
Dim strFile As String, strFile2Open As String, dteFile As Date, dteLast As Date
strFile = Dir$(strPath & "ECL*.xlsm")
If strFile <> "" Then
Do
dteFile = FileDateTime(strPath & strFile)
If dteFile > dteLast Then
strFile2Open = strFile
dteLast = dteFile
End If
strFile = Dir$
Loop Until strFile = ""
Workbooks.Open strPath & strFile2Open
Else
MsgBox "NO FILES FOUNDED!"
End If
loDeinWert = ThisWorkbook.Worksheets("Main").Range("B3").Value
For Each wb In Application.Workbooks
If wb.Name Like "ECL*" Then
Set ESLWb = wb
Exit For
End If
Next wb
If ESLWb Is Nothing Then
MsgBox "ECL* not found"
Exit Sub
Else
ESLWb.Worksheets("All").Activate
End If
Set rng = ESLWb.Worksheets("All").Range("B:B").Find(loDeinWert)
If rng Is Nothing Then
MsgBox "Wert " & loDeinWert & " not found!"
Else
sfirstaddress = rng.Address
Do
rng.EntireRow.Copy
ThisWorkbook.Worksheets("Main").Cells(Rows.Count, "A").End(xlUp) _
.Offset(1, 0).PasteSpecial Paste:=xlPasteAll
Set rng = ESLWb.Worksheets("Alle").Range("B:B").FindNext(rng)
Loop While Not rng Is Nothing And rng.Address <> sfirstaddress
End If
ESLWb.Close
End Sub
Sub Findandkopy()
模糊单元格内容为字符串
变暗rng As范围
Dim loDeinWert As字符串
Dim sfirstaddress作为字符串
将ESLWb设置为工作簿
将wb设置为工作簿
Const strPath As String=“L:\10\05\HGB\”
Dim strFile作为字符串,STRFILE2作为字符串打开,dteFile作为日期,dteLast作为日期
strFile=Dir$(strPath和“ECL*.xlsm”)
如果是strFile“”,则
做
dteFile=FileDateTime(strPath和strFile)
如果dteFile>dteLast,则
strFile2Open=strFile
dteLast=dteFile
如果结束
strFile=Dir$
循环直到strFile=“”
工作簿。打开strPath和strFile2Open
其他的
MsgBox“未找到任何文件!”
如果结束
loDeinWert=此工作簿。工作表(“主”)。范围(“B3”)。值
对于应用程序中的每个wb。工作簿
如果wb.名称像“ECL*”那么
设置ESLWb=wb
退出
如果结束
下一个wb
如果ESLWb不算什么,那么
MsgBox“未找到ECL*”
出口接头
其他的
ESLWb.工作表(“全部”)。激活
如果结束
设置rng=ESLWb.工作表(“全部”).范围(“B:B”).查找(loDeinWert)
如果rng不算什么,那么
MsgBox“Wert”和loDeinWert&“未找到!”
其他的
sfirstaddress=rng.Address
做
rng.EntireRow.Copy
此工作簿。工作表(“主”)。单元格(Rows.Count,“A”)。结束(xlUp)_
.Offset(1,0).粘贴特殊粘贴:=xlPasteAll
设置rng=ESLWb.Worksheets(“Alle”).Range(“B:B”).FindNext(rng)
非rng时循环为Nothing,rng.Address为SFIRSTAAddress
如果结束
关闭
端接头
但B4肉类必须符合哪些标准?它是否以某种方式基于loDeinWert
字符串?它的定义是否完全相同?我们可以这样说:thiswook.Worksheets(“Main”).Range(“B4”).Value
?您可以根据B3
和B4
中的值筛选所有工作表。然后获取过滤后的行。如果返回行,请使用这些行来运行代码