[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『左右のセルの重複する内容を削除したい』(NITTA)
5000行程あるのですが、
左右のセルで重複がある場合、右側の内容だけを削除したいのですが、方法がわかりません。
A1:abc
B1:abc
C1:abb
の場合、
A1:abc
B1:
C1:abb
としたいのです。
< 使用 Excel:Excel2013、使用 OS:MacOSX >
とりあえず実現方法としては、マクロを作成して、1行ずつA列とB列が一致するか確認し、一致していればB列のセルを""にする、というコーディングをしましょう。
(???) 2016/06/22(水) 16:43
一例です。(データはA1から始まっているという前提です) なお、質問文には左右のセルで とありますが、サンプルでは、B列で重複があれば というようになっていますね。 サンプルに合わせました。
Sub Test() Dim wCol As Long
With ActiveSheet.UsedRange wCol = .Columns.Count + 1 .Columns(wCol).Formula = "=IF(COUNTIF(B$1:B1,B1)=1,B1,"""")" .Columns("B").Value = .Columns(wCol).Value .Columns(wCol).ClearContents End With
End Sub
(β) 2016/06/22(水) 17:29
あっ!!!!
もしかしたら 本当に 【左右のセルで】ということだった? つまり、各行の各セルに、ずらっと abc abc abb ・・・・ と入っていて 重複があれば先行セルのみを残し 後続の重複セルは空白?
そうであれば、アップしたコードは忘れてください。 後ほど改訂版をアップします。
(β) 2016/06/22(水) 17:35
↑の理解で改訂版です。アップ済みのものと同じく A1からリストが始まっているという理解です。
Sub Test2() Dim dic As Object Dim v As Variant Dim i As Long Dim j As Long
Set dic = CreateObject("Scripting.Dictionary") v = Range("A1").CurrentRegion
For i = 1 To UBound(v, 1) dic.RemoveAll For j = 1 To UBound(v, 2) If dic.exists(v(i, j)) Then v(i, j) = Empty dic(v(i, j)) = True Next Next
Range("A1").CurrentRegion.Value = v
End Sub
(β) 2016/06/22(水) 17:43
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.