[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『重複データ削除の結果が毎回異なる』(りっくん)
はじめまして。
エクセル2002ファイルからデータをエクセル2007に取り込み、
以下のようなコードで重複データの削除を行うと結果が毎回
異なります。
テスト的に1回目に読み込んだデータが544行(最終行)で
同じデータを再度読み込んで1085行になったところで、この
重複データ削除処理を行うと、544行(最終行)に戻るはずが、
1回目のテストが716行(最終行)になり2回目のテストが
645行(最終行)、3回目のテストが771行(最終行)となりました。
何が問題なのか、ご教授いただけないでしょうか?
宜しくお願いいたします。
Sub 重複データ削除()
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(3, 1), Cells(LastRow, 19)).RemoveDuplicates Columns:= _ Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19), Header:=xlYes
End Sub
< 使用 Excel:Excel2007、使用 OS:Windows8 >
余談:
質問者さんは、きちんとColumns引数を指定されていますが、
Columns引数を指定しない場合には、
想定しない動き(重複判定しない)などがあり、
このメソッド自体に挙動の怪しい所はあるような気がします。
ですからその現象もあり得ると思いますが、
一応、再現できる方法を示していただくと、有益かと思います。
(γ) 2016/01/17(日) 08:43
データの読み込みはユーザーフォームで以下のようなコードで行っています。
ご確認をお願い致します。
Private Sub Kihondosa_Click_Sub(ByVal Index As Integer)
Dim nen As String Dim tuki As String Dim name As String Dim myfile As String Dim myfile1 As String Dim mysheet As String Dim mysheet1 As String Dim i As Long Dim j As Long Dim LastRow As Long Dim LastRow1 As Long Dim MaxRow As Long
myfile = ActiveWorkbook.name mysheet = ActiveSheet.name
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
name = UserForm1.Controls("CommandButton" & Index).Caption
nen = InputBox("平成何年ですか?数字を入力してください。") tuki = InputBox("何月ですか?数字を入力してください。")
Workbooks.Open ThisWorkbook.Path & "\" & nen & "年" & tuki & "月(配車)" & name & ".xls" ActiveWorkbook.Worksheets("DBX").Activate myfile1 = ActiveWorkbook.name mysheet1 = ActiveSheet.name
LastRow1 = Cells(Rows.Count, 1).End(xlUp).Row
For i = 4 To LastRow1 For j = 1 To 19 Workbooks(myfile).Worksheets(mysheet).Cells(i + LastRow - 3, j).Value = Workbooks(myfile1).Worksheets(mysheet1).Cells(i, j).Value Next j Next i
Workbooks(myfile1).Close SaveChanges:=False Unload UserForm1 Worksheets(mysheet).Activate
MaxRow = Range("A4").End(xlDown).Row Worksheets(mysheet).Range(Cells(4, 1), Cells(MaxRow, 19)).Select Selection.Borders.LineStyle = xlContinuous
End Sub
Private Sub CommandButton1_Click()
Call Kihondosa_Click_Sub(1) End Sub Private Sub CommandButton2_Click() Call Kihondosa_Click_Sub(2) End Sub Private Sub CommandButton3_Click() Call Kihondosa_Click_Sub(3) End Sub Private Sub CommandButton4_Click() Call Kihondosa_Click_Sub(4) End Sub Private Sub CommandButton5_Click() Call Kihondosa_Click_Sub(5) End Sub Private Sub CommandButton6_Click() Call Kihondosa_Click_Sub(6) End Sub Private Sub CommandButton7_Click() Call Kihondosa_Click_Sub(7) End Sub Private Sub CommandButton8_Click() Unload UserForm1 End Sub
(りっくん) 2016/01/18(月) 09:35
あとは、A列末尾をデータの終端としていますが、A列が空欄になってしまうような場合はありませんか?
(???) 2016/01/18(月) 12:55
元データがオートフィルタで絞られている、とか、非表示、とかありませんか?
また、データのあるファイルが旧形式のxlsであり、互換モードで開かれている、とかは?
フィルタが原因であれば、取り込む前にフィルタを外せば良いのですが…。
If AutoFilterMode = True Then AutoFilterMode = False End If (???) 2016/01/18(月) 14:42
一度AdvancedFilterで別列に重複は無視する形で抽出してみては? (seiya) 2016/01/18(月) 17:26
空白あってもデータがしっかりしていれば正常に抽出できるはずです。 どこかに実際のシートをアップしてもらった方が手っ取り早いと思いますが? (seiya) 2016/01/20(水) 20:44
回答者の手元で確実におなじ現象が起こせるような
最低限のデータを提示されてはどうでしょう。
2列5行程度の小さなデータで十分です。
コードもそれに応じてすこし変更になりますね。
( 佳 ) 2016/01/21(木) 06:44
同じ値なので重複削除されるべきものが、重複して登場している!!!
ということなんですよね。
その重複が残ったものを昇順なり降順なりで並び替えをすると、どこかに【同じ値】のセルが (たぶん連続して)存在するわけですよね。 その状態で、シートのどこかに =一方のセル=他方のセル という数式をいれると True になりますか?Falseになりますか?
(β) 2016/01/21(木) 10:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.