- ベストアンサー
Excel2013の枠線を残したまま重複行を削除する方法
- Excel2013のフォームには、重複する行を枠線を残したまま削除する方法があります。VBAコードを使用して、セルの内容や数値のみを削除することができます。
- 以下のようなデータがある場合、同じ内容の行を1つにまとめ、枠線を残すことができます。 A列 B列 C列 あ 1 a あ 1 a あ 2 a い 1 a い 2 c い 2 c A列 B列 C列 あ 1 a あ 2 a い 1 a い 2 c
- 以下のVBAコードを使用すると、枠線を残したまま重複する行を削除することができます。 ActiveSheet.Range("$A$1:$C$6").RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo しかし、このコードでは枠線も削除されてしまいます。枠線を残したい場合は、コードの実行後に枠線を再作成する必要があります。 以上がExcel2013で枠線を残しながら重複行を削除する方法です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> でも今回のはやはり別シートを作らなければいけないですよね。 RemoveDuplicatesを使う場合だと別シートか既存のシートの利用しないところで一時的に作業をしないとダメっぽいですね。 RemoveDuplicatesを使わない方法だと http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_jyufuku.html 上記のページで紹介されている一番最後の「Dictionaryを利用する」を基にしてA,B,Cの3列をカンマ区切りの文字列として結合し、Dictionaryに登録後にSplit関数で3つにわける方法でも。(No1の時には時間がなかったので簡単な方法のみ紹介しました) 以下のような感じで Dim myDic As Object, myKey As Variant Dim c As Variant, varData() As String, rdData As Variant Dim i As Long, j As Long Set myDic = CreateObject("Scripting.Dictionary") With Worksheets("Sheet2") For i = 1 To .Range("A" & Rows.Count).End(xlUp).Row ReDim Preserve varData(i) varData(i) = .Cells(i, "A") & "," & .Cells(i, "B") & "," & .Cells(i, "C") Next i For Each c In varData If Not c = Empty Then If Not myDic.Exists(c) Then myDic.Add c, Null End If End If Next myKey = myDic.Keys .Range("A:C").ClearContents For i = LBound(myKey) To UBound(myKey) rdData = Split(myKey(i), ",") For j = LBound(rdData) To UBound(rdData) .Cells(i + 1, j + 1) = rdData(j) Next j Next i End With Set myDic = Nothing
その他の回答 (1)
- kkkkkm
- ベストアンサー率66% (1719/2589)
tempというシートを作成して ActiveSheet.Range("$A$1:$C$6").Copy Sheets("temp").Range("A1") Sheets("temp").Range("$A$1:$C$6").RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo ActiveSheet.Range("$A$1:$C$6").ClearContents Sheets("temp").Range("$A$1:$C$6").Copy ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues Sheets("temp").Range("$A$1:$C$6").Clear このようなのはいかがですか。
補足
ありがとうございます。ほんとに助かっています。ちょっとの応用で問題なく対応できました。でも今回のはやはり別シートを作らなければいけないですよね。
お礼
ありがとうございます。完璧で非常に助かりました。