将以一组模式结尾的单词汇总到新工作表中

时间:2013-02-13 20:32:35

标签: excel-vba excel-2010 vba excel

我有Excel 2010,我正在尝试合并一个单词列表。

  1. Sheet1 包含一个包含单词列表的列,例如'ing','ed','en'....
  2. Sheet2 包含一个包含“Flying”,“Opening”,“Taken”,“Baked”,“Awaken”等词语的列。
  3. Sheet3 ,对于Sheet1中的每个列值,我想要一个函数,将该单词与Sheet2中的所有单词进行比较,并将它们一起收集到sheet3中。
  4. 因此, Sheet3 在运行此

    之后应该有3列
    • 第一栏应该有'Flying','Opening' - 所有以'ing'结尾的单词
    • 第二栏应该有'Baked' - 所有以'ed'结尾的单词
    • 第三栏应该有'Taken','Awaken' - 所有以'en'结尾的单词

    我尝试使用下面的公式中的一个单词,它似乎一次只能用于一个单词,但我不知道如何自动执行此操作 - 我是否需要使用宏?

    = IF(右(A1:A7,3)=“ing”,A1:A7,“”)

    任何人都可以建议如何处理这个问题吗?

    此致 SONU

1 个答案:

答案 0 :(得分:1)

忽略我的澄清请求 - 我已重新阅读,现在了解您的问题。

以下代码适用于您所描述的内容。它假设如下:

  1. Sheet1中的单词结尾列表和sheet2中的单词列表 是从单元格A1开始并延伸的连续列表 向下。
  2. Sheet2中的单元格A1包含列标题,例如“我的单词”不会被复制到Sheet3中的单词列。如果要复制标题,请从第13行中删除.Offset(1,0)
  3. Sheet1上的列表中没有比您的Excel版本中可用的列更多的条目(例如XL2003 = 256)
  4. 在宏启动之前,Sheet3为空
  5. 您尚未更改3工作表的默认VBA代号 对象
  6. 表格不受保护
  7. Sub extract()
    Dim rFilt As Range
    Dim rSrc As Range
    Dim iTgtCol As Integer
    
        If Sheet2.FilterMode Then Sheet2.ShowAllData
        If Not Sheet2.AutoFilterMode Then Sheet2.Cells(1).CurrentRegion.AutoFilter
    
        Set rSrc = Sheet2.Cells(1).CurrentRegion.Columns(1)
    
        iTgtCol = 0
    
        For Each rFilt In Sheet1.Cells(1).CurrentRegion.Columns(1).Cells
    
            iTgtCol = iTgtCol + 1
    
            With rSrc
                .AutoFilter field:=1, Criteria1:="=*" & rFilt
                .Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy Sheet3.Cells(iTgtCol)
            End With
    
        Next rFilt
    
        Sheet2.ShowAllData
    
    End Sub