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

エクセルVBAについて質問です。以下のようなマクロを作ってください。
?A列のセルには連続で任意の文字列があります。B列のセルには○△×か空白。
?B列の中で○か△でない行全てを削除します。ただしA列が空白になった所で終了。
以下のページに図を作っておきました。参考にしてください。
http://hatena88.web.fc2.com/newpage1.shtml
この動作を行うマクロを作ってください。

●質問者: taroemon
●カテゴリ:コンピュータ
✍キーワード:?B VBA エクセル セル マクロ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● zuguimo
●50ポイント

http://hatena88.web.fc2.com/newpage1.shtml

で、図が読めませんでした。

一応動作の確認はしましたが、マクロはあまり経験がないのでエラーがでることを考慮して使ってください。

ちなみにA列に空白以降データがあると使えません。

Sub 削除()

'

' 削除 Macro

'

'データ数の計算

Range("A1").Select

データ数 = Application.WorksheetFunction.CountA(Range("A:A"))

'オートフィルター

Selection.AutoFilter

Selection.AutoFilter Field:=2, Criteria1:="<>○", Operator:=xlAnd, _

Criteria2:="<>△"

'データの削除

Rows("1:" & データ数).Select

Selection.Delete Shift:=xlUp

Range("A1").Select

'1行目の処理

If Range("b1").Value <> "○" Then

If Range("b1").Value <> "△" Then

Range("1:1").Delete Shift:=xlUp

End If

End If

End Sub

◎質問者からの返答

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

またたくさん同じような質問をしますので、よかったら練習代わりにしてください。


2 ● captim
●50ポイント

列を消す都合上、処理をシンプルにしたかったので

後ろから処理させています。(速度的には問題ないです。)

yは最終行です。

URLはダミー:http://q.hatena.ne.jp/

----------

以下スクリプト

----------

Sub Macro1()

y = 65536

For i = 1 To y

ch1 = Cells(y - i + 1, 1).Value

If ch1 = y - i + 1 Then

ch2 = Cells(y - i + 1, 2).Value

If ch2 = "○" Then

ElseIf ch2 = "△" Then

Else

Rows(y - i + 1).Select

Selection.Delete Shift:=xlUp

End If

End If

Next

End Sub

◎質問者からの返答

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

処理できれば大丈夫です。


3 ● きゃづみぃ
●50ポイント

以下のでどうでしょうか?

Sub Macro1()

'

' Macro1 Macro

'

' Keyboard Shortcut: Ctrl+q

'

b = 1

For a = 1 To 65536

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

b = b + 1

Next a

For a = b To 1 Step -1

If Not (Range("A" & a) = "○" Or Range("A" & a) = "△") Then

Rows(a & ":" & a).Select

Selection.Delete Shift:=xlUp

End If

Next a

End Sub


http://web.sfc.keio.ac.jp/~tsaito/ITWS/Lec01.html

◎質問者からの返答

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

とても助かります。

関連質問


●質問をもっと探す●



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