プロが教える店舗&オフィスのセキュリティ対策術

エクセルで ある列 A列に下の方に 文字が入ってゐて 並んでいて 例えば 表という文字が
A1に入ってゐて、A2に表の内容が○○、A3にも△△、・・・・という具合で並んでいて、A5に裏
という文字が入ってきて、その裏内容がA6 ××、××、A7 ◇◇と並んでいて  さらに下ってゆくと例えばA9にまた表という文字が入ってきてA10にその内容の□□、A11◆◆・・とならんでいてしかしまたA15に裏という文字がでてきて、その裏の内容をA16、A17....という具合に下にならんで繰り返していった場合、裏という行を含めた裏の内容の行を一気に消す VBAはどう書けばいいのでしょうか。つまりは裏の内容を一気に消し、表の内容だけにしたいということです。ご教授ください。

A 回答 (3件)

この作業をマニュアル操作で行う場合、たとえばB列を作業列にして、削除対象を判断するための数式を設定し、その値を元に行削除したりすると思いますが、それをマクロにしてみました。

こんな感じです。

Sub sample()
With Range("B1:B" & Cells(Rows.Count, "A").End(xlUp).Row)
.Formula = "=IF(A1=""裏"",NA(),IF(A1=""表"","""",OFFSET(B1,-1,0)))"
.SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとう、でもなぜか 全部消えてしまいました。

お礼日時:2018/12/22 12:42

こんにちは!



表のレイアウトがよく判らないのですが・・・
単にA列が「裏」の行を削除ではなく、↓の画像のような場合
黄色のセルの行を削除したい!というコトでしょうか?

そういうコトだとしての一例です。

Sub Samle1()
 Dim i As Long, myRng As Range, myFlg As Boolean
  For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
   If Cells(i, "A") = "裏" Then
    myFlg = True
   ElseIf Cells(i, "A") = "表" Then
    myFlg = False
   End If
   If myFlg = True Then
    If myRng Is Nothing Then
     Set myRng = Cells(i, "A")
    Else
     Set myRng = Union(myRng, Cells(i, "A"))
    End If
   End If
  Next i
   If Not myRng Is Nothing Then
    myRng.EntireRow.Delete
    MsgBox "完了"
   Else
    MsgBox "該当データなし"
   End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
「一定の行間の削除」の回答画像2
    • good
    • 0
この回答へのお礼

できました、有難うございました。素晴らしいものですね。プログラマーさんなんでしょうね・・! 羨ましい才能ですね。

お礼日時:2018/12/22 12:41

うろ覚えなので要点だけ。



先ず、「裏」で検索をかけて、セル特定。
範囲指定で「xldown」で次の空白まで下行セルを選択出来るから、その一つ上(入力があるセルまで)を指定するのに「row-1」で調整。
この範囲指定をrangeオブジェクトに格納しておいて、せーので消去するか、都度消去して行ズレするので、最初の「裏」があった行から再度検索するかは好みで。
ご健闘を祈ります。
    • good
    • 0
この回答へのお礼

有難う、虫のいい話ですみません。基礎を勉強しなくっちゃ!

お礼日時:2018/12/22 12:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!