Excel VBA質問箱 IV

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

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


5435 / 13646 ツリー ←次へ | 前へ→

【50793】オートフィルタ後の部分コピー けいじ 07/8/16(木) 3:14 質問[未読]
【50794】Re:オートフィルタ後の部分コピー かみちゃん 07/8/16(木) 10:24 発言[未読]
【50807】Re:オートフィルタ後の部分コピー Misako 07/8/16(木) 18:20 回答[未読]
【50814】Re:オートフィルタ後の部分コピー けいじ 07/8/17(金) 1:00 質問[未読]
【50815】Re:オートフィルタ後の部分コピー かみちゃん 07/8/17(金) 1:10 発言[未読]
【50817】Re:オートフィルタ後の部分コピー けいじ 07/8/17(金) 3:57 お礼[未読]
【50818】Re:オートフィルタ後の部分コピー かみちゃん 07/8/17(金) 8:49 発言[未読]

【50793】オートフィルタ後の部分コピー
質問  けいじ  - 07/8/16(木) 3:14 -

引用なし
パスワード
   お世話になっております
VBAで指定セルに入力された条件でオートフィルターし
その結果をA2セルを基点として以下の10個のセルのみコピーしたいのですが
毎度条件によってセルのNO、が変わってしまってうまくいきません
(つまりある条件ではA1822というセルが上から2番目にくるが
 違う条件ではA2000というのが上から2番目に来る)

どうかどんなフィルターの結果でもA2セルを基点として以下10個のセルのみ指定する方法を
何方かご伝授くださいませ

よろしくお願いします

【50794】Re:オートフィルタ後の部分コピー
発言  かみちゃん  - 07/8/16(木) 10:24 -

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

>どんなフィルターの結果でもA2セルを基点として以下10個のセルのみ指定する方法

可視セルの上から10個を取得するには、以下のような感じでできると思います。

Sub Sample()
 Dim i As Integer
 Dim c As Range
 
 Range("A1").AutoFilter Field:=1, Criteria1:="A"
  
 i = 1
 For Each c In Range("A2", Cells(Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeVisible)
  MsgBox c.Address & "-->" & c.Value
  i = i + 1
  If i > 10 Then Exit For
 Next

End Sub

A1からA列に"A"を10個以上、他の値をいろいろ設定して、試してみたください。
"A"になっているセルを上から10個のセル番号と値"A"を表示すると思います。

【50807】Re:オートフィルタ後の部分コピー
回答  Misako  - 07/8/16(木) 18:20 -

引用なし
パスワード
   ▼けいじ さん:
こんな感じのことでしょうか・・・

 Dim c As Range, i As Integer
 Dim msg
  Range("A1").AutoFilter Field:=1, _
           Criteria1:="A" & "*"
  With Range("A1" & ":" & Range("A65536").End(xlUp).Address(0, 0))
   .Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes
  End With 
   i = 1
  For Each c In Range("A2", Cells(Rows.Count, "A").End(xlUp)). _
           SpecialCells(xlCellTypeVisible)
   msg = msg & vbCrLf & c
   i = i + 1
     If i > 10 Then Exit For
  Next
   MsgBox msg

【50814】Re:オートフィルタ後の部分コピー
質問  けいじ  - 07/8/17(金) 1:00 -

引用なし
パスワード
   お返事ありがとうございます
お手を煩わせて申し訳ございません
いろいろやってみたのですが表示されるのですがコピー&ペーストすることが出来ません

因みに今のマクロが

  Dim JUK As Variant
  JUK = Range("B5").Value
    ↑今アクティブのシートのB5の値を変数JUKに代入

  Windows("元データ.xls").Activate
  Rows("2:2").Select
  Selection.AutoFilter
  Selection.AutoFilter Field:=2, Criteria1:=JUK
   ↑そのJUKの内容でフィルタをする
  
  Columns("F:F").Select
  Range("A1:M1928").Sort Key1:=Range("F1"), Order1:=xlDescending,      Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False,                Orientation:=xlTopToBottom, _
    SortMethod:=xlPinYin, DataOption1:=xlSortNormal
  ↑ここでF列の数量の多い順で並び替えしています
  
  Range("A1251:A1269,F1251:F1269").Select
  Range("F1251").Activate
  ↑普通にコピーするとこうなってしまい検索条件が違っても常に
   A1251:A1269,F1251:F1269の値がコピーされてしまいます
   ここがこまっている所で
  
 やりたい事は
  ○A列のA2を含まずその下の10項目と
  ○F列のF2を含まずその下の10項目を選択

  Selection.Copy
   ↑コピーする

  Windows("結果.xls").Activate
  Range("C6").Select
  ActiveSheet.Paste
   ↑それを結果.XLSのC6へペーストする

End Sub

とこんな感じでコピペしたいのです

どうかご指導ご鞭撻よろしくお願いいたします

【50815】Re:オートフィルタ後の部分コピー
発言  かみちゃん  - 07/8/17(金) 1:10 -

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

>   ここがこまっている所で

何か、後からコードを提示されても困ってしまうのですが、
とりあえず、私やMisakoさんが提案している
SpecialCells(xlCellTypeVisible)
は試されたのでしょうか?試されなかったのでしょうか?

これは、要するに、フィルタをかけた後の可視セルのみを取得していますから
この可視セルのひとつひとつの最初から10個を取得すればいいのです。

【50817】Re:オートフィルタ後の部分コピー
お礼  けいじ  - 07/8/17(金) 3:57 -

引用なし
パスワード
   大変ご迷惑とアドバイスありがとうございました
いろいろ考えたあげく 一度他のシートを作って
それに可視セルを貼り付けてそれをコピーする方法にしました

  Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
  Sheets.Add
  ActiveSheet.Paste
  
  Range("A3:A12,F3:F12").Select
  Range("F3").Activate
  Selection.Copy

お蔭様で何とか結果を出すことが出来ました
本当にありがとうございました

【50818】Re:オートフィルタ後の部分コピー
発言  かみちゃん  - 07/8/17(金) 8:49 -

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

> 一度他のシートを作って
> それに可視セルを貼り付けてそれをコピーする方法にしました

なぜ、私やMisakoさんがご提案した可視セルにセル範囲を限定して、そのひとつ
ひとつの最初から10個を取得する方法ではできなかったのでしょうか?

試したのか試されなかったのか?試したけど理解できなかったのか?
簡単なサンプルを示したつもりですが・・・

作業シートを追加して解決したとのことですが、それをするならば、コードでその都度
 Sheets.Add
するのではなく、最初から作業シートを用意しておいたほうがいいです。
どんどん増えるだけですし、たとえ、使い終わってシート削除をしたとしても、
シートの挿入・削除は、繰り返さないほうがいいと私は思います。

質問者さんは、もう見てないかもしれませんが・・・

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