何方か、回答をお願いします。
下記もマクロは 、B列:C列(B1:C1はタイトル)をオートフィルタに掛けて
フィルタに掛かった一番上のデータをコピーして貼り付けているマクロですが。
やりたいことは、B1:C1のタイトルとフィルタに掛かった可視領域の一番上の
データ(オートフィルタに引っかからないでデータが無い場合も有り)をコピー
して貼り付けたいのですがどの様なコードを書けば良いのでしょうか。?
Sub フィルタ()
Range("B1:C1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:=">=1e-6"
Range("B1").CurrentRegion.Select
On Error Resume Next
Selection.SpecialCells(xlCellTypeVisible).Areas(2).Rows(1).Select
Selection.Copy
Range("K15").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFilter
End Sub
No.2ベストアンサー
- 回答日時:
こんにちは。
ご提示のコードの仕様だと
Sub sample()
With Range("B1").CurrentRegion
.AutoFilter Field:=2, Criteria1:=">=1e-6"
If Range("B65536").End(xlUp).Row > 1 Then
.Offset(1).SpecialCells(xlCellTypeVisible).Rows(1).Copy Range("K15")
End If
.AutoFilter
End With
End Sub
こんな感じ。
B1:C1のタイトルも必要なら
Sub sample2()
Dim n As Long
With Range("B1").CurrentRegion
.AutoFilter Field:=2, Criteria1:=">=1e-6"
If Range("B65536").End(xlUp).Row > 1 Then
n = .Offset(1).SpecialCells(xlCellTypeVisible).Cells(1).Row
Range("B1:C" & n).Copy Range("K15")
End If
.AutoFilter
End With
End Sub
No.3
- 回答日時:
こんにちは。
Wendy02です。今回のは、前回のワークシートの延長上にあるのですね。
これは、1万行でもあれば、またコードも変わりますが、1,000個のデータぐらいだったら、こんな風でもよいのではないかと思います。
>B1:C1のタイトルとフィルタに掛かった可視領域の一番上のデータ
ということでしたら、オートフィルタを使用しないで、このようなコードで成り立つのではないかと思います。ただ、その後に、作業が続くのなら、このコードは成り立ちません。
Sub PickUpData()
Dim i As Long
Dim j As Integer
With ActiveSheet
With .Range("B1").CurrentRegion
.Cells(1, 1).Resize(, 2).Copy .Range("K15").Offset(j)
j = 1
For i = 2 To .Rows.Count
If .Cells(i, 2).Value >= 1 * 10 ^ -6 Then
.Cells(i, 1).Resize(, 2).Copy .Range("K15").Offset(j)
Exit For
End If
Next i
End With
End With
End Sub
前回の回答のグラフの件では、失礼しました。hibohiboさんのExcelのバージョンは、「Excel 2000」あたりですね。前回、どうしても、こちらでは解決できない部分が存在していました。それで後から、Excel 2000 だとすれば、そのエラーは納得行くという結論に達しました。前回のものは、直接、ここではお書きしませんが、時々、バージョンに関わる部分があります。今回も、Excel 2003 でしか調べてはおりません。
Wendy02様、前回そして今回も回答ありがとう御座います。
なるほど、オートフィルタを使わないタイプですね。
>=1e-6に引っかかるデータ有り・無しどちらでも
エラーも出ずに上手くいきました。
今回も、勉強になるコードありがとう御座いました。
No.1
- 回答日時:
色々な方法はありますが一番簡単で分かりやすいのは、
「オートフィルタで抽出したセルを一旦全部どこかに貼り付け、
貼り付け先で"先頭2行"以外消してしまう、または"先頭2行"
のみをもう一度コピー/貼り付けする」
です。ですので質問者さんのコードで言えば
Range("K15").Select
ActiveSheet.Paste
で、K15セル以下に抽出結果を全件貼り付けた後に
Range("K15:L16").Copy
Range("N15").Select
Activesheet.paste
で、先頭2行を別の場所(この場合N15)に貼り付ける方法でしょうね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) エクセルVBAコピー 2 2022/06/08 21:45
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) excelVBAについて。 4 2022/11/21 16:15
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのオートフィルタで最...
-
エクセルでオートフィルタのボ...
-
エクセルで時刻(8:00~20:00)...
-
Excelのオートフィルタで非表示...
-
エクセルで、条件に一致した行...
-
Excel共有ブックのオートフィル...
-
エクセル関数で、数字の入った...
-
エクセルの偶数行(奇数行)の抽出
-
エクセルで特定の列にある日付...
-
エクセル・条件付で行を削除す...
-
今日の日付のデータをすばやく...
-
オートフィルタで3つ以上の条...
-
Excelオートフィルターで絞り込...
-
【Excel/関数/条件付き書式】月...
-
オートフィルタの抽出が途中で...
-
結合したセルのオートフィルタ...
-
データの抽出を教えてください
-
エクセルフィルターオプション...
-
エクセル、オートフィルタで最...
-
VBA オートフィルタで抽出した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで時刻(8:00~20:00)...
-
エクセルのオートフィルタで最...
-
エクセルでオートフィルタのボ...
-
Excelのオートフィルタで非表示...
-
エクセルの偶数行(奇数行)の抽出
-
エクセル関数で、数字の入った...
-
Excel共有ブックのオートフィル...
-
エクセルで、条件に一致した行...
-
エクセル・条件付で行を削除す...
-
access マクロでのフィルタの...
-
オートフィルタで3つ以上の条...
-
オートフィルタで選択したデー...
-
エクセルにて、フィルタをかけ...
-
可視セルを対象としたcountifが...
-
【EXCEL】条件に一致した最新デ...
-
VBA オートフィルタで抽出した...
-
今日の日付のデータをすばやく...
-
【Excel/関数/条件付き書式】月...
-
なぜShowAllDataだとうまく行か...
-
エクセルのオートフィルタで困...
おすすめ情報