0

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

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

因此,Sheet3在运行后应该有 3 列

  • 第一列应该有 'Flying'、'Opening' - 所有以 'ing' 结尾的词
  • 第二列应该有“Baked”——所有以“ed”结尾的词
  • 第三列应该有 'Taken', "Awaken' - 所有以 'en' 结尾的单词

我尝试对其中一个词使用下面的公式,它似乎一次只对一个词有效,但我不确定如何自动执行此操作 - 我需要为此使用宏吗?

=IF(RIGHT(A1:A7, 3)="ing", A1:A7, "")

谁能建议如何解决这个问题?

问候, 索努

4

1 回答 1

1

忽略我的澄清要求 - 我已重新阅读并现在理解您的问题。

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

  1. Sheet1 中的单词结尾列表和 sheet2 中的单词列表都是从单元格 A1 开始并向下延伸的连续列表。
  2. Sheet2 中的单元格 A1 包含一个列标题,例如“我的单词”,它不会被复制到 Sheet3 中的单词列中。如果要复制标题,请.Offset(1,0)从第 13 行删除。
  3. Sheet1 上的列表中没有比您的 Excel 版本中可用的列多的条目(例如 XL2003=256)
  4. Sheet3 在宏启动之前为空
  5. 您尚未更改 3 个工作表对象的默认 VBA 代号
  6. 床单不受保护

.

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
于 2013-02-14T07:55:06.190 回答