人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

お気持ちのみですが完成したら合計で150p差し上げます。
次の簡単なエクセルのマクロを作ってください。


1)B列に"○"かそれ以外の内容が連続して書いてある。
2)B列をアクティブセルの行から上から順番に参照していって、その行について○があったら保持、それ以外だったら列を削除。
3)終了条件=B列に空白セル発見。
4)動作を高速にするために描画を停止しておく。

よろしくお願いします

●質問者: ReoReo7
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:アクティブ エクセル セル マクロ 差し
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● きゃづみぃ
●1ポイント

Sub Macro2()

'

' Macro2 Macro

'

Dim a As Long

Dim b As Long

For a = 1 To 65536

If Range("B" & a) = "" Then Exit For

Next a


For b = a To 1 Step -1

If Range("B" & b) <> "○" Then Rows(b & ":" & b).Delete Shift:=xlUp

Next b

End Sub


2 ● きゃづみぃ
●75ポイント

Sub Macro2()

'

' Macro2 Macro

'

Dim a As Long

Dim b As Long

a = ActiveCell.Row

If a = 1 Then End

For b = a - 1 To 1 Step -1

If Range("B" & b) = "" Then Exit For

If Range("B" & b) <> "○" Then Rows(b & ":" & b).Delete Shift:=xlUp

Next b

End Sub

すみません、アクティブセルからでしたね。

◎質問者からの返答

ありがとうございます。


3 ● SALINGER
●10ポイント

マクロの1行目に

Application.ScreenUpdating = False

で描画は高速になります。

◎質問者からの返答

ありがとうございます。


4 ● Mook
●40ポイント

こういうことでしょうか。

Sub DeleteRows()
 Dim cRow As Long
 Dim eRow As Long
 
 '--- アクティブセルが空白だったら終了
 If IsEmpty(Cells(ActiveCell.Row, "B")) Then
 Exit Sub
 End If
 
 '--- 処理対象の最終行を設定
 cRow = ActiveCell.Row
 If IsEmpty(Cells(cRow + 1, "B")) Then
 eRow = cRow
 Else
 eRow = Range("B" & cRow).End(xlDown).Row
 End If
 
 
 '--- 削除処理を開始
 '--- 表示の更新を停止
 Application.ScreenUpdating = False
 Dim lineNum As Long
 For lineNum = eRow To cRow Step -1
 If Cells(lineNum, "B").Value <> "○" Then
 Rows(lineNum).Delete Shift:=xlUp
 End If
 Next
 '--- 表示の更新を有効
 Application.ScreenUpdating = True
End Sub
◎質問者からの返答

いつもありがとうございます。


5 ● kodomono-omocha
●10ポイント

B列選択

オートフィルタ

ソート(○を含まない)

全選択

行を削除

を記録すればよいのではないでしょうか?

◎質問者からの返答

ありがとうございます。言われてみればそういう方法もありますね。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ