| 
    
     |  | ▼kanabun さん: >▼栗きんとん さん:
 >こんにちは〜
 >
 >>先頭文字がJan 〜 Decから始まるものA列を検索。
 >ということは、セルの値が
 >Jan*
 >Feb*
 >Mar*
 >Apr*
 >May*
 >Jun*
 >Jul*
 >Aug*
 >Sep*
 >Oct*
 >Nov*
 >Dec*
 >で始まっているセルだけをCopyしたいってことですよね?
 >
 >>一致した行をコピーして××シートのA列へ貼り付け繰り返す。
 >フィルタオプションの設定(Excel2007以降ではフィルタ -「詳細設定」のことです)を
 >つかわれたらどうでしょう。これなら、Loopする必要ないですし、Jan*〜 Dec* まで
 >一括抽出できますよ
 >
 >Sub Try1()
 > Dim WS1 As Worksheet
 > Dim WS2 As Worksheet
 > Dim r As Range
 > Dim c As Range
 >
 > Set WS1 = Worksheets(1)  'コピー元シート
 > Set WS2 = Worksheets(2)  'コピー先シート
 > With WS2
 >   '[AA列]に抽出条件記入 列は空いている列ならどこでもよい
 >   Set c = .Range("AA1").Resize(13)
 >   c.Value = [{"wkHeader";"Jan*";"Feb*";"Mar*";"Apr*";"May*";"Jun*";"Jul*";"Aug*";"Sep*";"Oct*";"Nov*";"Dec*"}]
 > End With
 > Application.CutCopyMode = True
 > With WS1
 >   .Rows(1).Insert                 '1行挿入
 >   .Range("A1").Value = "wkHeader"  '作業用に列見出しを書き込む
 >   Set r = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
 >   r.AdvancedFilter xlFilterInPlace, c        ’フィルタオプション実行
 >   If r.SpecialCells(xlVisible).Count > 1 Then  '1行以上抽出行があったとき
 >     Intersect(r, r.Offset(1)).Copy WS2.[A1]   '所定シートへコピー
 >   End If
 >   .ShowAllData
 >   .Rows(1).Delete
 > End With
 >End Sub
 
 つん氏、kanabun氏
 返信ありがとうございます。
 記載が遅くなり申し訳ありません。
 
 すいません、誤解をさせてしまったようです。
 先頭文字列をJan 〜 Decから始まるA列を検索し
 行をすべてコピーしたいのです。
 
 ※検索する文は以下のようにセルA1からインプットされます。
 (区切りはされずセルAすべて記載されます)
 A
 1  Jan 20111221 aaa
 2  Feb 20111221 AAA
 3  Mar 20111222 bbb
 4  Apr 20111222 BBB
 5  May 20111223 ccc
 6  Jun 20111223 CCC
 7  Jul 20111224 ddd
 8  Aug 20111224 DDD
 9  Sep 20111225 eee
 10 Oct 20111225 EEE
 11 Nov 20111226 fff
 12 Dec 20111226 FFF
 13 日時: 2011年8月17日 12:39
 14 差出人: KKKAAABBB
 
 13、14のように不要な文章が多くインプットされてしまうので、
 13、14を除くものをJan 〜 Decから始める行をコピーしたいのです。
 
 何が一番いいのかさっぱりです。
 FunctionプロシージャでJan〜Decをkeyとして一致したら
 その行を出力するのが一番なんでしょうか・・・
 
 |  |