如果条件不等于使用vba excel,如何把其余的唯一值放在数组中

我有两个不同的唯一值(X,Y),到目前为止我已经做了。 如果条件x<>y不相等,并且需要创build一个带有数组值的工作簿(剩余的唯一值),我想把剩余的唯一值放在数组中。

例如:

 XY SAP Siemens Siemens otto Otto Allianz AG Accenture Oracle Oracle Capgemini TCS Daimler Infosys Akka 

我已经有了“Siemens.xlsx”,“Oracle.xlsx”,“Otto.xlsx”的工作簿。 现在我需要数组中列Y的唯一值的其余部分。 我的预期结果应该是“Akka.xlsx”,“Allainz AG。xlsx”,“Daimler.xlsx”。

码:

 Sub array() Dim y as range Dim c as integer Dim Lastrow_Y As Integer Dim Lastrow_X As Integer Dim rngFilter_Y as range Dim rngCopy as range Dim NewBook as workbook With Master_workbook.Worksheets("FBI") Sheets("FBI").Columns("C:C").AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=.Range("AZ1"), Unique:=True Lastrow_Y = .Cells(.Rows.Count, "AY").End(xlUp).Row End with With Master_workbook.Worksheets("WWF") Sheets("WWF").Columns("d:d").AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=.Range("AY1"), Unique:=True Lastrow_X = .Cells(.Rows.Count, "AY").End(xlUp).Row End with For c = 2 To Lastrow_Y Set y = Master_workbook.Sheets("FBI").Range("AZ" & c) Set x = Master_workbook.Sheets("WWF").Range("AY" & c) If x = y Then set NewBook = workbooks.add with NewBook .Title = y NewBook.Worksheets.Add(After:=.Sheets(.Sheets.Count)).Name = "www" With rngFilter_Y .AutoFilter field:=32, Criteria1:="<>(a) 0 - 360", Operator:=xlFilterValues .AutoFilter field:=37, Criteria1:=y.Value, Operator:=xlFilterValues Set rngCopy = .SpecialCells(xlCellTypeVisible) .AutoFilter ' Switch off AutoFilter End With .SaveAs Filename:= Y & ".xlsx" rngCopy.Copy NewBook.Worksheets("www").Cells(1, 1) Else End If Next End sub 

如果有人帮我解决这个问题,我真的很感激。

在我看来,如果要检查当前文件夹中已经创build的文件会更容易,那么只需在范围Y中创build那些尚不存在的文件夹呢?

 Option Explicit Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim folder : Set folder = fso.GetFolder(<path to your .xlsx files here>) Dim file, fileNames, lastRowY, row, checkFile, newBook For Each file in folder.Files If Right(file.Name, 4) = "xlsx" Then fileNames = fileNames & file.Name & ";" ' will give a list of all filenames End If Next With Master_workbook.Worksheets("FBI") lastRowY = .Cells(.Rows.Count, "AY").End(xlUp).Row End With For row = 2 to lastRowY checkFile = Master_workbook.Worksheets("FBI").Range("AY").Value If Instr(fileNames, checkFile) = 0 Then Set newBook = Workbooks.Add ' do whatever with newBook newBook.SaveAs (checkFile & ".xlsx") newBook.Close End If Next