Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 根据两个条件在文件中搜索_Excel_Vba - Fatal编程技术网

Excel 根据两个条件在文件中搜索

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

此宏将打开以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 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
中的值筛选所有工作表。然后获取过滤后的行。如果返回行,请使用这些行来运行代码