|
>▼こもと さん:
いろいろ教えてもらったんですが、もう一つ作らないといけないパターンがありまして…
これがどうもうまくいかず悩んでいます
【シート1】
A列 B列
__________親名前____子名前_______________
|
1行 | AAA BBB
2行 | BBB CABBB ←削除(CAから始まる為、BBBがキーとなってます)
3行 | BBB CCC ←削除
4行 | CCC DDD ←削除
5行 | BBB EEE ←削除
6行 | EEE FFF ←削除
7行 | FFF GGG ←削除
8行 | HHH RRR
9行 | RRR TTT
10行| EEE PPP ←削除
11行| WWW YYY
12行| YYY ABC
13行| YYY CAABC ←削除(CAから始まる為、ABCがキーとなってます)
14行| ABC EFG ←削除
上記のように、[シート1]の中のB列に"CA"からはじまる名前があり、この"CA"を抜いた名前と繋がっているものを
順番に削除していきたいのですが、うまくいきません
例)CABBB ⇒ BBBがキーとなります
前に教えてもらったVBAを少し改造してみました
何でうまくいかないのか、伝授して頂けるとありがたいです
Sub test()
Dim myD As Object, i As Long, tbl
Dim MyLen As Integer
Dim MyCA As Variant
Set myD = CreateObject("Scripting.Dictionary")
'========================================================================
tbl = Worksheets(2).Range("A2").CurrentRegion.Columns("A:B").Value
For i = 1 To UBound(tbl)
If Left(Cells(i, 2).Value, 2) = "CA" Then
MyLen = Len(Cells(i, 2))
MyCA = Right(Cells(i, 2).Value, MyLen - 2)
For q = 1 To UBound(tbl)
If Cells(q, 2).Value = MyCA Then
If Not myD.exists(tbl(q, 2)) Then
myD.Add tbl(q, 2), ""
End If
Exit For
End If
Next q
End If
' myD.Add tbl(i, 1), ""
Next i
With Worksheets(2)
tbl = .Range("A2").CurrentRegion.Columns("A:B").Value
For q = 1 To UBound(tbl)
If myD.exists(tbl(q, 1)) Then
If Not myD.exists(tbl(q, 2)) Then
myD.Add tbl(q, 2), ""
End If
End If
Next q
For q = UBound(tbl) To 1 Step -1
If myD.exists(tbl(q, 1)) Then Range("C" & q).Value = "X"
Next q
End With
End Sub
|
|