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

Excelのマクロに関して質問致します。

各ファイルのシートのサンプルイメージはこちら。
http://pub.idisk-just.com/fview/Q222eBLbJYUapI4Tt4KndsBhjuPA1pnmyzkHN9F-81EfmyprhtI6pKyXtBNtO66C/44OX44Os44K844Oz44OG44O844K344On44OzMQ.jpg

???前提???
【1】シート内容ですが、1行目と2行目は項目として使われています。
3行目からX行目(ファイルにより異なる)はデータが投入されています。

サンプルイメージではA列とB列しかないように見えますが、
実際にはA列からEH列まであります。

【2】このようなExcelのファイルが200以上あります。

???組みたいマクロ???
B列の3行目以降に「要2008」と入っていたら、その行はまるまる残し、
それ以外の行は全て削除(クリアではない)したい。
200以上のファイルを個別に手作業で実施するのは大変なため、
マクロを組みたい。
(全部のファイルを連結して1回で処理する、というような方法は除外
してください。個別に200回以上繰り返します)

うまい記述内容が思いつかなく、質問致します。

宜しくお願いします。

●質問者: yoshifuku
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:Excel うまい イメージ クリア データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● nyankochan
●35ポイント

個別のファイルで200回繰り返すと言うことであれば・・・

Sub Macro1()

i = 1

x = Cells(i, 2)

Do While Cells(i, 1) <> ""

If x = "" Then

Cells(i, 1).Select

Selection.EntireRow.Delete

i = 1

End If

i = i + 1

x = Cells(i, 2)

Loop

Range("A1").Activate

End Sub


な感じでどうでしょうか。

行の削除を行った際に iの数値が行ズレを起こすので

1行目から再確認にいかせています。

ただ、縦に1000行とかある場合は時間がかかったりしますので、

一気に空行のチェックをさせて、空行の同時選択をしてのデリートアクションを

させたほうが良いような気もします。

ということでそっち系のも・・・・


Sub Macro2()

i = 1

x = Cells(i, 2)

Do While Cells(i, 1) <> ""

If x = "" Then

If y <> "" Then

y = y + ","

End If

y = y + "A" & i

End If

i = i + 1

x = Cells(i, 2)

Loop

Range(y).Select

Selection.EntireRow.Delete

Range("A1").Select

End Sub


お好きな方をお使いください。

◎質問者からの返答

オープン遅くなりました。やってみます!ありがとうございます!


2 ● beatgoeson
●35ポイント

下記のようなVBAでいかがでしょうか。

変数 strFolderPath の値はご自身の環境に合わせて変更してください。

2,3のファイルで試してから実行してください。

実行前にファイルのバックアップはとっておいてください。

これにより間違って保存されても保障しかねますので。

A列にはないか値が入ってるという前提です。もしA列が空の行があるとその前で処理が終わってしまうので、A列が空の場合は、適宜下記のVBAを修正してください。

--------------------------------

Sub UpdateFiles()


Dim strFolderPath As String

Dim strFindFile As String

Dim strTargetFile As String

Dim strBookName As String

Dim lrow As Long

strFolderPath = "C:\temp\test\"

strFindFile = "*.xls"

strTargetFile = Dir(strFolderPath & strFindFile)

Do While strTargetFile <> ""

Workbooks.Open (strFolderPath & strTargetFile)

strBookName = ActiveWorkbook.Name

lrow = 3

Do While ActiveSheet.Cells(lrow, 1) <> ""

If ActiveSheet.Cells(lrow, 2) <> "要2008" Then

Rows(lrow).Select

Selection.Delete Shift:=xlUp

Else

lrow = lrow + 1

End If

Loop

Workbooks(strBookName).Close True

strTargetFile = Dir

Loop

End Sub

◎質問者からの返答

ありがとうございます!やってみます!

関連質問


●質問をもっと探す●



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