[[20251031214015]] 『可視セルのみのデータ入力』(ンゴ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『可視セルのみのデータ入力』(ンゴ)

過去ログを参照したのですがうまく行かずアドバイスをください

 Sheets("マスタ").Columns(5).SpecialCells(xlCellTypeVisible).Select

    Dim i As Long
    For i = 1 To Rows.Count
    If Sheets("マスタ").Cells(i + 1, 5) = "" Then Exit Sub
    Sheets("通知").Cells(1, 8) = Sheets("マスタ").Cells(i + 1, 5)
    Next

データ抽出後のマスタシートの列5にマスタナンバーが入っている
まずはColumns(5)の可視セルのみを選択
次に見出しを除いた2行目Cells(i + 1,5)から空白にぶつかるまで
通知シートの指定セルに入力をしたい

抽出前のすべての数字までセルに入力されてしまいます。

< 使用 Excel:unknown、使用 OS:unknown >


 Sub test()
    Dim r As Range

    Set r = Sheets("マスタ").AutoFilter.Range.Columns(5)
    Intersect(r, r.Offset(1)).Copy Sheets("通知").Cells(1, 8)

 End Sub
(マナ) 2025/10/31(金) 23:57:16

■1
エクセルのバージョンが書いてありませんが、オートフィルタの絞り込みの結果をほかに転記するならば、既に提示されているようにコピー&ペーストが楽ちんです。
(すごく昔のエクセルは可視セルを指定しなければなりませんでしたが、少なくとも2007以降のバージョンは絞り込まれて表示されている行のみがコピーの対象になるようになっています。)

■2
ただ、発想されたことができないわけでは無いです。
コツはデータ行と出力行で変数をわけるところと、行ごとに可視セルか判定するところでしょうか。

   Sub 研究用()
      Dim データ行 As Long, 出力行 As Long

      出力行 = 1
      With Worksheets("マスタ")
         For データ行 = 2 To .Cells(.Rows.Count, "E").End(xlUp).Row
            Stop 'ブレークポイントの代わり
            If Not .Rows(データ行).Hidden Then
               Worksheets("通知").Cells(出力行, "H").Value = .Cells(データ行, "E").Value
               出力行 = 出力行 + 1
            End If
         Next データ行
      End With
   End Sub

■3
なお、提示されたコードだと出力先が通知シートのH1セルに固定されていますが、意図通りでしょうか?それならそれで考え方を変える必要があります。

(もこな2) 2025/11/02(日) 12:29:22


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.