エクセルVBAについて質問です。



アクティブブック内の最初のシート(つまりsheet(1)のこと)の
A列に記入されている文字列が、
そのブック内の最初と最後のシートを除く
全てのシートのN列に記入されている文字列がひとつでも完全に合致した場合、
合致した文字列の行を削除するというマクロを作成してください。

(例)
Sheet(1)のA列にはプロ野球のセリーグ全球団の名前が入っていたとします。
Sheet(2)以降のN列にはパリーグもあわせた12球団の名前が入っているとします。
例えばSheet(3)のN5に「広島東洋カープ」、Sheet(5)のN8に「横浜ベイスターズ」があった場合、
Sheet(3)の5行目とSheet(5)の8行目を削除するというものです。

ただしSheet(1)のA列にある文字列が「横浜ベイスターズ」ではなく「横浜」であった場合、
つまりそれぞれの文字列が完全に合致しなければ行は削除されないということとにご留意ください。

以上、よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/11/11 08:13:05
  • 終了:2007/11/11 09:32:34

回答(1件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692007/11/11 09:17:42

ポイント80pt
Sub Macro1()
    Dim LastRow1 As Long
    Dim LastRow2 As Long
    Dim i, j, k As Long
    
    LastRow1 = Worksheets(1).Range("A65536").End(xlUp).Row
    For i = 2 To Worksheets.Count - 1
        LastRow2 = Worksheets(i).Range("N65536").End(xlUp).Row
        For j = 1 To LastRow1
            If Worksheets(1).Cells(j, 1).Value <> "" Then
                For k = 1 To LastRow2
                    If Worksheets(1).Cells(j, 1).Value = Worksheets(i).Cells(k, 14).Value Then
                        Worksheets(i).Rows(k & ":" & k).Delete shift:=xlUp
                        k = k - 1
                    End If
                Next k
            End If
        Next j
    Next i
End Sub
id:taroemon

ご回答ありがとうございます。

今回もうまくいきました。


もっと長いものになると思ってましたが、

すごくスマートにできるんですね。正直うらやましいです。


また教えてください。

2007/11/11 09:31:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません