0

Excel 2010 を使用しており、単語のリストを統合しようとしています。

  1. Sheet1には、「ing」、「ed」、「en」などの単語のリストを含む列が含まれています....
  2. Sheet2には、「フライング」、「オープニング」、「テイク」、「ベイクド」、「アウェイクン」などの単語を含む列が含まれています.
  3. Sheet3、 Sheet1 のすべての列の値に対して、その単語を Sheet2 のすべての単語と比較し、それらを sheet3 にまとめる関数が必要です。

したがって、これを実行した後、 Sheet3には 3 つの列が必要です。

  • 最初の列には「Flying」、「Opening」を含める必要があります - 「ing」で終わるすべての単語
  • 2 番目の列には「Baked」が必要です - 「ed」で終わるすべての単語
  • 3 番目の列には「Taken」、「Awaken」、「en」で終わるすべての単語を含める必要があります

単語の 1 つに対して以下の式を使用してみましたが、一度に 1 つの単語に対して機能するようですが、これを自動化する方法がわかりません。これにはマクロを使用する必要がありますか?

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

誰でもこれにアプローチする方法を提案できますか?

よろしく、ソヌ

4

1 に答える 1

1

明確にするための私の要求を無視してください - 私はあなたの質問を読み直して理解しました.

次のコードは、あなたが説明したものに対して機能します。次のことを前提としています。

  1. Sheet1 の単語末尾のリストと sheet2 の単語のリストは、どちらもセル A1 から始まり、下に伸びる連続したリストです。
  2. Sheet2 のセル A1 には、シート 3 の単語の列にコピーされない "My Words" などの列見出しが含まれています。見出しをコピーしたい場合は、.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 に答える