プロが教えるわが家の防犯対策術!

おはようございます。よろしくお願いします。エクセルは2013です。

範囲D5:D36に重複するデータがあれば、
1個だけ残して、他の重複セルに""(空白)を書き込みたいのですが
VBAではどう書けばよいでしょうか

D5:D36に下記のような空白を含むデータがあった時に
山田と書かれたセルは2つあるので、ひとつ残して、もうひとつは空白にしたいです
同じように高橋は3つあるので、ひとつ残して、あとの2つは空白にしたいです

山田
高橋
佐藤
空白
空白
鈴木
山田
空白
高橋
高橋

A 回答 (1件)

詰めないで良いのですね?


この位ならば Dictionary 機能を使わなくてもどうにかなりそうだけど、行が増えた時に圧倒的に早くなりますので覚えておくと便利です。
--------------------------------------------------------------------------------
Sub Sample()
Dim 辞書 As Object
Dim 行 As Long
Application.ScreenUpdating = False
Set 辞書 = CreateObject("Scripting.Dictionary")
For 行 = 5 To 36
If 辞書.Exists(Cells(行, 4).Text) Then
Cells(行, 4).ClearContents
Else
辞書.Add Cells(行, 4).Text, 行
End If
Next
Set 辞書 = Nothing
Application.ScreenUpdating = True
End Sub
--------------------------------------------------------------------------------
    • good
    • 3
この回答へのお礼

GooUserラックさん、こんにちは
休日の貴重な時間に教えていただきありがとうございます

重複セルを処理したらソートして詰めます
ソート方法は、gooで皆さんに教えていただいた方法でできます

昨日からずっと、D5:D36の空白セルを探して、別のセルのデータを書き込むことをやってきて
私の腕でどうにかできたのですが、よくよく考えたら、重複セルがあった時の処理ができなくてギブアップしました

重複する行を削除する関数は検索ですぐに見つかったのですが、それはしたくないので質問させていただきました
ありがとうございました
検索で見つからないマクロを作っていただきまして感謝します

お礼日時:2017/12/03 12:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A