[[20160205130136]] 『VBA 合致しない行を別シートにコピペ』(みや) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA 合致しない行を別シートにコピペ』(みや)

シート1に検索データ
シート2に検索結果

シート1は
1行目項目で使用
2行目以降がデータ(行数は都度変わります)
列はA〜Rを使用しています。

シート2は
1〜6行目までは項目等々で使用
7行目以降にシート1からのデータを取り込む様にしています。

今回したいことは、シート1のP列とQ列の金額(数字)が合致しない列の行をシート2の7行目〜コピペする

という風にしたいです。

よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


こんにちは

Sub test()

    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Set sh1 = Worksheets("Sheet1")
    Set sh2 = Worksheets("Sheet2")

    With sh1
        With .Range("S2").Resize(.Range("A1").CurrentRegion.Rows.Count - 1)
            .Formula = "=IF(P2<>Q2,""1"","""")"
            .Value = .Value
            .SpecialCells(xlCellTypeConstants).EntireRow.Copy _
                sh2.Range("A" & Rows.Count).End(xlUp).Offset(1)
            .ClearContents
        End With
    End With
End Sub

こういう事でしょうか?

(ウッシ) 2016/02/05(金) 14:36


 AdvancedFilter で

 Sub test()
    Dim rng As Range
    Sheets("sheet2").Rows("7:" & Rows.Count).ClearContents
    With Sheets("sheet1").Cells(1).CurrentRegion
        .Rows(1).Copy Sheets("sheet2").[a7]
        With .Offset(, .Columns.Count + 1).Cells(1).Resize(2)
            .Rows(2).Formula = "=p2<>q2"
            Set rng = .Cells
        End With
        .AdvancedFilter 2, rng, Sheets("sheet2").Rows(7).SpecialCells(2).Areas(1)
    End With
End Sub
(seiya) 2016/02/05(金) 14:50
 修正:
 >シート2の7行目〜コピペする

ウッシさん

ありがとうございます。
ちなみにシート1のP列とQ列の金額(数字)が合致せず、かつQ列が1以上の明細を同様にシート2の7行目〜コピペという方法も教えて頂きたいです。

seiyaさん
修正ありがとうございます。

(みや) 2016/02/05(金) 16:58


 >P列とQ列の金額(数字)が合致せず、かつQ列が1以上

            .Rows(2).Formula = "=and(p2<>q2,q2>=1)"
(seiya) 2016/02/05(金) 17:05

seiyaさん

ありがとうございます!
バッチリでした!
(みや) 2016/02/05(金) 17:32


 この件は AdvancedFilterが効率がよく、またエラー処理も不要なので適していると思います。
(seiya) 2016/02/05(金) 17:44


seiyaさん

すみません。
1点説明不足の部分があります。
シート2の2行目以降をシート1の7行目以降にコピペで出来ますか?


 >シート1の7行目以降
 これはシート1の7行目? それとも7行目より下の行で最初の空白?
(seiya) 2016/02/05(金) 19:04

シート2の1行目に項目が入っています。
今教えて頂いたマクロだと項目もコピペされてしまうので、項目を抜きたいのです。
従って2行目以降をコピペと表現しました。
わかりますか?
(みや) 2016/02/05(金) 19:20

 >シート2は 
 >1〜6行目までは項目等々で使用 
 >7行目以降にシート1からのデータを取り込む様にしています。
 6行めに項目が列挙されているのであれば.

 Sub test()
    Dim rng As Range
    Sheets("sheet2").Rows("7:" & Rows.Count).ClearContents
    With Sheets("sheet1").Cells(1).CurrentRegion
        With .Offset(, .Columns.Count + 1).Cells(1).Resize(2)
            .Rows(2).Formula = "=and(p2<>q2,q2>=1)"
            Set rng = .Cells
        End With
        .AdvancedFilter 2, rng, Sheets("sheet2").Rows(6).SpecialCells(2).Areas(1)
    End With
End Sub

 これでどうでしょう?

(seiya) 2016/02/05(金) 19:31


コメント返信:

[ 一覧(最新更新順) ]


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