みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

二つのマクロで一気に処理したい

以下のようなことができるのかお伺い致します。よろしくお願い致します。

 やりたいこと

  ※ 前提として、sheet1にすでにA列に通し番号で奇数の数字が入っている。


   1.sheet1からsheet2へコピペーストする。しかし、A列からO列のすべてにデータがあった場合のみコピー貼り付けさせたい。

    (前提で示したように、A列に通し番号で奇数の数字が入っていて、A列のみ数字があり、以外が空欄の行があるため)


   2.下記のコピー貼り付けのコードと重複削除のコードを合体させて、一つの処理で動かしたい。


Sub コピー貼り付けつけ()  'コピー貼り付けつけのコード

Dim lastRow As Long

'Sheet1のA3から最終行までをコピー

With Sheets("sheet1")
.Range("A3:O" & .Cells(Rows.Count, "A").End(xlUp).Row).Copy
End With


'Sheet2のA列の最終行の次の行に貼付け

Sheets("sheet2").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial


Application.CutCopyMode = False

End Sub



Sub 重複データを一括削除する()

' Macro1 Macro


Dim i As Long, lastRow As Long, myRng As Range

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 To lastRow - 1

If WorksheetFunction.CountIf(Range(Cells(i + 1, "O"), Cells(lastRow, "O")), Cells(i, "O")) > 0 Then
If myRng Is Nothing Then
Set myRng = Cells(i, "O")
Else

Set myRng = Union(myRng, Cells(i, "O"))

End If
End If
Next i

If Not myRng Is Nothing Then
myRng.EntireRow.Delete

End If

End Sub

投稿日時 - 2019-02-13 12:19:39

QNo.9587372

困ってます

質問者が選んだベストアンサー

下記の点疑問に思った。
補足要求ほか、参考までに。
・O列のセルのデータだけで、重複しているかどうかの判断をしてよいのか。
・>通し番号で奇数の数字が入って
奇数というのが意味があるのか?ないなら余分なことを描かない方がよい。
・質問者のコードで2つのモジュールを連ねて、うまく行かないのか。
  *張り付ける直前に、重複を判断し重複しておれば、張り付けない、で済むのでは?
なんか、聞くまでもないところに、質問者は到達しているようだが、何を不安がっているのか?実際試してみて、エラーが出てから聞くようにしたら。
・>A列からO列のすべてにデータがあった場合のみコピー貼り付けさせたい
は、下記ロジックで簡単に判別できそう。
Sub test02()
For i=2  to 最終行番号
N = Application.WorksheetFunction.CountA(Range("A" & i & ":O" & i))
MsgBox N
'IF N < 15 then ’(貼り付けない。15の時のみこの行を貼り付ける。)
Next i
End Sub
数字、文字、数式・関数、半角・全角ブランク、エラー値は勘定に入れてしまうが。
重複は質問者がやっているように、O列で、張り付けるデータがCountIfして
1なら、すでに存在するのだから、貼り付け処理をスキップ。

投稿日時 - 2019-02-13 13:59:02

お礼

有難うございました。できました。重複については、もう少し考えてみます。
お世話になりました。

投稿日時 - 2019-02-14 20:27:53

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Sub コピー貼り付けつけ()
の最後
Application.CutCopyMode = False
の後に
重複データを一括削除する
と記載すれば「重複データを一括削除する」マクロがそこから実行されます。
重複データを一括削除するマクロにはシートの指定がないのでそのあたりは適宜行ってください。

投稿日時 - 2019-02-13 18:16:46

お礼

有難うございました。また、質問の時はご協力頂ければ幸いです。お世話になりました。

投稿日時 - 2019-02-14 20:29:31

あなたにオススメの質問