|
▼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として一致したら
その行を出力するのが一番なんでしょうか・・・
|
|