Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7450 / 13645 ツリー ←次へ | 前へ→

【39082】オートフィルタ後の可視行のカット kao 06/6/17(土) 17:01 質問[未読]
【39083】Re:オートフィルタ後の可視行のカット かみちゃん 06/6/17(土) 17:04 発言[未読]
【39085】Re:オートフィルタ後の可視行のカット kao 06/6/17(土) 17:16 発言[未読]
【39086】Re:オートフィルタ後の可視行のカット かみちゃん 06/6/17(土) 17:21 発言[未読]
【39084】Re:オートフィルタ後の可視行のカット かみちゃん 06/6/17(土) 17:12 回答[未読]
【39088】Re:オートフィルタ後の可視行のカット kao 06/6/17(土) 17:40 お礼[未読]
【39093】Re:オートフィルタ後の可視行のカット Kein 06/6/17(土) 19:33 回答[未読]
【39097】Re:オートフィルタ後の可視行のカット kao 06/6/17(土) 20:20 お礼[未読]

【39082】オートフィルタ後の可視行のカット
質問  kao  - 06/6/17(土) 17:01 -

引用なし
パスワード
   よろしくお願いします。
A列に日付が入っており,その中の例えば2005年のものを抽出して(ここまではオートフィルタでしたのですが)可視行を行ごとカットし新規ブックのSheet1にペーストしたいと思っています(他の列にもデータは入っています)。
できないのは,可視行をカットするところです。教えていただけないでしょうか。

【39083】Re:オートフィルタ後の可視行のカット
発言  かみちゃん  - 06/6/17(土) 17:04 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>A列に日付が入っており,その中の例えば2005年のものを抽出して(ここまではオートフィルタでしたのですが)可視行を行ごとカットし新規ブックのSheet1にペーストしたいと思っています(他の列にもデータは入っています)。

2005年以外を抽出して、コピー貼り付けするということではいけないのでしょうか?
これであれば、行削除はいらないと思います。

【39084】Re:オートフィルタ後の可視行のカット
回答  かみちゃん  - 06/6/17(土) 17:12 -

引用なし
パスワード
   こんにちは。かみちゃん です。

ちなみに

> 可視行をカット

 〜.SpecialCells(xlCellTypeVisible).EntireRow.Delete Shift:=xlUp
でできます。なお、〜の部分は、
 Columns("A:A")
とか、
 Range("A2", Range("A65536").End(xlUp))
などとします。

【39085】Re:オートフィルタ後の可視行のカット
発言  kao  - 06/6/17(土) 17:16 -

引用なし
パスワード
   かみちゃんさんありがとうございます。

コピー貼り付けするということではなく,もとのほうのBookから該当行をなくし,新規Bookとして保存しておきたいのです。コピー貼り付けしてもとのデータを削除でもいいのですが,それが分からないのです。どなたかよろしくお願いします。

【39086】Re:オートフィルタ後の可視行のカット
発言  かみちゃん  - 06/6/17(土) 17:21 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>コピー貼り付けするということではなく

新規ブックのSheet1にペーストしたい
と書かれていましたので・・・・

> コピー貼り付けしてもとのデータを削除でもいい

元のデータを削除するというのがわかりません。
普通はデータベースを削除するようなことはしません。
重複データとかであれば別ですが・・・

> どなたかよろしくお願いします。

一応、[#39084]で紹介させていただきました。

【39088】Re:オートフィルタ後の可視行のカット
お礼  kao  - 06/6/17(土) 17:40 -

引用なし
パスワード
   ▼かみちゃん さん:
抽出行コピーの後に,下のものを参考に抽出行を削除するという方法にしました。
年次更新のために古いデーターを他に移して,データベースの方を軽くしたかったのです。ありがとうございました。こういうのって他にどんな方法でしているのでしょうか。質問ではありませんが,教えてくださるなら参考になります。

> 〜.SpecialCells(xlCellTypeVisible).EntireRow.Delete Shift:=xlUp
>でできます。なお、〜の部分は、
> Columns("A:A")
>とか、
> Range("A2", Range("A65536").End(xlUp))
>などとします。

【39093】Re:オートフィルタ後の可視行のカット
回答  Kein  - 06/6/17(土) 19:33 -

引用なし
パスワード
   >他にどんな方法
フィルターを使わずに、数式で抽出する方法もあります。

Sub Test2()
  On Error Resume Next
  With Range("A2", Range("A65536").End(xlUp)).Offset(, 255)
   .Formula = "=IF(YEAR($A2)<YEAR(TODAY()),1,"""")"
   With .SpecialCells(3, 1).EntireRow
     .Copy Sheets("Sheet2").Range("A1")
     .Delete xlShiftUp
   End With
   .ClearContents
  End With
End Sub

などとすればIV列に入れた数式で、A列の日付から昨年以前のものをSheet2に抽出
した後、その行を削除する。という処理が出来ます。

【39097】Re:オートフィルタ後の可視行のカット
お礼  kao  - 06/6/17(土) 20:20 -

引用なし
パスワード
   ▼Kein さん:
数式でという考えをしっかり勉強した方がよいと思いました。いつもながら,ためになるお考えに感謝します。

7450 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free