Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


18742 / 76732 ←次へ | 前へ→

【63428】Re:リスト削除
回答  arajin  - 09/11/3(火) 14:20 -

引用なし
パスワード
   面白そうなので、私も考えてみました。
やはり、Dictionaryを使いたくなりますね。

Sub Sample()
  Dim v As Variant, i As Long
  Dim r As Range
  Dim dic As Object, itm As Variant, ind As Variant
  Dim loopEnd As Boolean
  
  Set dic = CreateObject("scripting.dictionary")
  v = Sheets("Sheet2").Range("A1").CurrentRegion.Resize(, 1).Value
  For i = 1 To UBound(v)
    Set dic.Item(v(i, 1)) = New Collection
  Next
  Set r = Sheets("Sheet1").Range("A1").CurrentRegion
  v = r.Value

  Do
    loopEnd = False
    For i = 1 To UBound(v)
      If dic.Exists(v(i, 1)) Then
        On Error Resume Next
        dic.Item(v(i, 1)).Add i, CStr(i)
        On Error GoTo 0
        If Not dic.Exists(v(i, 2)) Then
          Set dic.Item(v(i, 2)) = New Collection
          loopEnd = True
        End If
      End If
    Next
  Loop While loopEnd

  ReDim vv(1 To UBound(v), 0)
  For Each itm In dic.Items
    For Each ind In itm
      vv(ind, 0) = "←削除対象"
    Next
  Next
  Set dic = Nothing
  r.Resize(, 1).Offset(, r.Columns.Count).Value = vv
End Sub


削除していい行の場合、空列セルに"←削除対象"と印をつけてみました。
あとは、その印を目印に行削除すればいいと思います。
なお、老婆心ながら、削除の際はその列で一旦ソートして、
削除したい行を上下どちらかに纏めてから削除して下さい。

Do 〜 Loopのところが肝ですが、あまり検証してないので誤ってたらごごめんなさい。
2 hits

【63411】リスト削除 たつ 09/11/2(月) 14:26 質問
【63413】Re:リスト削除 Yuki 09/11/2(月) 15:07 発言
【63415】Re:リスト削除 たつ 09/11/2(月) 15:21 発言
【63414】Re:リスト削除 こもと 09/11/2(月) 15:17 発言
【63417】Re:リスト削除 たつ 09/11/2(月) 15:52 質問
【63419】Re:リスト削除 こもと 09/11/2(月) 16:56 発言
【63418】Re:リスト削除 たつ 09/11/2(月) 16:54 質問
【63421】Re:リスト削除 こもと 09/11/2(月) 17:09 発言
【63431】Re:リスト削除 たつ 09/11/3(火) 14:45 お礼
【63442】Re:リスト削除 たつ 09/11/4(水) 8:39 質問
【63443】Re:リスト削除 Hirofumi 09/11/4(水) 13:26 発言
【63444】Re:リスト削除 たつ 09/11/4(水) 15:16 質問
【63445】Re:リスト削除 Hirofumi 09/11/4(水) 15:43 回答
【63447】Re:リスト削除 たつ 09/11/5(木) 11:25 お礼
【63446】Re:リスト削除 kanabun 09/11/4(水) 16:07 発言
【63425】Re:リスト削除 SS 09/11/2(月) 20:05 発言
【63432】Re:リスト削除 たつ 09/11/3(火) 14:47 お礼
【63426】Re:リスト削除 Hirofumi 09/11/2(月) 20:15 回答
【63427】Re:リスト削除 Hirofumi 09/11/3(火) 12:29 回答
【63433】Re:リスト削除 たつ 09/11/3(火) 14:49 お礼
【63428】Re:リスト削除 arajin 09/11/3(火) 14:20 回答
【63429】Re:リスト削除 arajin 09/11/3(火) 14:25 回答
【63434】Re:リスト削除 たつ 09/11/3(火) 14:51 お礼

18742 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free