- ベストアンサー
重複したコメントを削除するマクロの作成方法
- 質問者は、A列~H列の1~100行目に入力されたコメントの中に重複があることに気付きました。同じコメントが異なる列にあっても書き出したいと考えています。質問者は既存のデータを試行錯誤して確認しましたが、うまくいきませんでした。
- A列~H列の1~100行目に入力されたコメントには、重複があります。例えば、A列のコメントには1,2,3,4,5,3,4,5という重複があります。質問者は、重複を削除してA列に1,2,3,4,5と書き出したいと考えています。同様に、B列のコメントにも重複があります。
- 質問者は、A列~H列の1~100行目に入力されたコメントの重複を削除して書き出すマクロを作成したいと考えています。同じコメントが異なる列にあっても書き出したいとのことです。試行錯誤しましたが、うまくいかなかったため、助言を求めている状況です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 本当は、他の方法でもよいとは思ったのですが、この前の続きで、ほとんど変えないまま、手を加えています。ほとんど、考えて作っていませんので、間違っていましたら、すみません。 ----------------------------------------------- '標準モジュール Sub TestMacroR() Dim rng As Range Dim ar() As String Dim ar2() As String Dim cl As Range Dim ret As Variant Dim buf As String Dim i As Long Dim j As Long Set rng = ActiveSheet.UsedRange Application.ScreenUpdating = False For Each cl In rng.Columns ReDim ar(cl.Cells.Count - 1) ReDim ar2(cl.Cells.Count - 1, 0) For i = 1 To rng.Cells.Count If Not cl.Cells(i).Comment Is Nothing Then buf = WorksheetFunction.Clean(Trim(cl.Cells(i).Comment.Text)) On Error Resume Next ret = 0 ret = WorksheetFunction.Match(buf, ar(), 0) On Error GoTo 0 If ret = 0 Then ar(i - 1) = buf ar2(j, 0) = Mid$(buf, InStr(buf, ":") + 1) j = j + 1 End If buf = "" End If Next i If j > 0 Then '151行目から排出 With Cells(151, cl.Column).Resize(j) .Value = ar2() '並べ替え .Sort Key1:=.Cells(1), _ Order1:=xlAscending, _ Header:=xlNo, _ MatchCase:=False, _ Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End With j = 0 End If Next cl Application.ScreenUpdating = True Set rng = Nothing End Sub
お礼
忙しい中、回答ありがとうございました。 教えていただいたマクロで思ったとおりの結果を得ることができました。たびたびありがとうございました。