使用VBA(excel)将单元格移动到基于文本字符串的另一个工作表

时间:2014-10-29 11:15:36

标签: excel vba excel-vba

寻找帮助编写VB脚本的任何指导

在Excel中,我们有一个包含A列中文件名的列

" Y:\主文档\同种异体\ DP \ ABO \标签\ 100毫克\ 4.packaging \同种异体制表为100mg-DP-9-PP-moa- [ABO-PR-ANL-0685 -ver4.0] .PDF" " Y:\主文档\同种异体\ DP \ ABO \标签\ 100毫克\ 4.packaging \ ZZ-归档\测试外形00mg-DP-XXX-测试 - [测试文件] -01.01.1900 .DOCX"

SHEETNAME =文件

想要复制到sheetname =当前是字符串" zz-archive"不包含在单元格中,否则移至Sheetname = Archive。

我们使用了公式,但它会留下空行。

任何帮助非常感谢 谢谢 加里

2 个答案:

答案 0 :(得分:1)

如果仍然可以使用基于公式的解决方案,那么Current!A2中的数组公式应该有效。

=IFERROR(INDEX(Files!$A$2:$A$99,MATCH(0, IF(LEN(Files!$A$2:$A$99),IF(ISERROR(SEARCH("zz-archive",Files!$A$2:$A$99)),COUNTIF(A$1:A1,Files!$A$2:$A$99),1),1),0)),"")

它需要在A2中,因为非涉及的单元需要高于它以避免循环引用。作为数组公式,它需要 Ctrl + Shift + Enter 而不是简单地输入。一旦输入正确,可以根据需要填写,以捕获所有可能的回报。

附录:要在Archive!A2中使用相同的公式,请将ISERROR更改为ISNUMBER

答案 1 :(得分:1)

这是一个VBA解决方案,可将过滤后的数据复制到每个当前和存档工作表。

Sub categorize_filesnames()
    Dim ws As Worksheet, wsa As Worksheet, wsc As Worksheet
    Set ws = Sheets("Files")
    Set wsc = Sheets("Current")
    Set wsa = Sheets("Archive")

    wsa.Cells(1, 1).CurrentRegion.Offset(1, 0).ClearContents
    wsc.Cells(1, 1).CurrentRegion.Offset(1, 0).ClearContents

    With ws.Cells(1, 1).CurrentRegion
        .AutoFilter
        .AutoFilter Field:=1, Criteria1:="=*zz-archive*"
        .Offset(1, 0).Copy Destination:=wsa.Cells(2, 1)
        .AutoFilter Field:=1, Criteria1:="<>*zz-archive*"
        .Offset(1, 0).Copy Destination:=wsc.Cells(2, 1)
        .AutoFilter
    End With

    Set wsc = Nothing
    Set wsa = Nothing
    Set ws = Nothing
End Sub