シート1にデータがあり、それの日付毎にシート作成、重複するようであればシート作成無、シート1のデータをその日付のシートに貼り付けというVBAができたのですが、シート1のデータの重複があるとのことで、
シート1にデータがあり、それの日付毎にシート作成、重複するようであればシート作成無、シート1のデータをその日付のシートに貼り付けというVBAができたのですが、シート1のデータの重複があるとのことで、 データ番号(A列)が重複している場合は作業無というのはできるのでしょうか? 元のコードです。 Sub ボタン4_Click() Dim i As Long Dim trgtShName As String Dim ws As Worksheet Dim ms As Worksheet Application.ScreenUpdating = False Set ms = Sheets("データ") With ms For i = 2 To .Cells(Rows.Count, 4).End(xlUp).Row trgtShName = .Cells(i, 4).Value Set ws = Nothing On Error Resume Next Set ws = Worksheets(trgtShName) If ws Is Nothing Then Worksheets(2).Copy After:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = trgtShName Set ws = Worksheets(trgtShName) End If Dim Last_Row As Long Last_Row = ws.Cells(Rows.Count, 8).End(xlUp).Row ws.Range(ws.Cells(Last_Row + 1, 4), ws.Cells(Last_Row + 1, 7)) = .Range(.Cells(i, 9), .Cells(i, 12)).Value Next i End With Application.ScreenUpdating = True End Sub
Visual Basic・307閲覧
ベストアンサー
ID非公開さん
2022/5/23 11:41
まだ解決していないのだと思い回答します。 日付での重複でなく、A列の番号での重複に変更しなくてはいけないのではないですか? 添付図のようなデータの場合、5月1日のシートと5月3日のシートが作成されればいいのではないですか? その理解があっているなら。 Sub test() Dim dic As Object Dim i As Long Dim dkey As Variant Dim ws As Worksheet Dim trgtShName As String Dim Last_Row As Long Application.ScreenUpdating = False Set dic = CreateObject("Scripting.Dictionary") With Worksheets("データ") For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row dkey = .Cells(i, 1).Value If dic.Exists(dkey) = False Then dic.Add dkey, i Else End If Next i For Each dkey In dic.Keys trgtShName = .Cells(dic.Item(dkey), 4).Value Set ws = Nothing On Error Resume Next Set ws = Worksheets(trgtShName) If ws Is Nothing Then Worksheets(2).Copy After:=Worksheets(Worksheets.Count) Set ws = ActiveSheet ws.Name = trgtShName End If Last_Row = ws.Cells(Rows.Count, 8).End(xlUp).Row + 1 ws.Cells(Last_Row, 4).Resize(1, 4).Value = .Cells(dic.Item(dkey), 9).Resize(1, 4).Value Next dkey End With Set dic = Nothing Application.ScreenUpdating = True End Sub
簡単に伝えようとしておりましたが、余計に混乱するので、事情をお話ししますと、発注に関して、同日の日付は人が複数いるので、注文受付可能、しかし、発注番号の重複はあくまで、注文者が間違って何度も流している情報なので、重複は計上してしまうと、同じ案件を受けてしまうことになります。(こちらのヒューマンエラーを無くせば一番なのですが、それは無理のようでした) なので、同日の日付の依頼をまとめるために、シートを作成し、そちらに必要情報の転記をし、番号が重複しているものは1部のみ採用、それ以外は無視する必要があります。 表を貼り付けようとしましたが、画像しか無理みたいなので、少々時間ください。
質問者からのお礼コメント
根気よく教えていただきありがとうございました!
お礼日時:5/23 16:08