とむとむのブログ

エクセルで業務の効率化、自動化に取り組んでいます。残業が少なくなってきたので、家の住み心地もレポートできそうです。

全体表示

[ リスト ]

あるシステムのデータを更新する場合に、そのシステムからCSVファイルとしてダウンロードし、そのファイルを修正してシステムに読み込ませる作業をしています。

Aシステム
↓DOWNLOAD
CSVファイルを修正
↓UPLOAD
Aシステム

今回は、空白のデータの箇所のみデータを入力して、システムに読み込ませることを想定しています。
データは1000件くらいの行数のボリュームで、手作業で行を削除する作業は一日がかりになってしまいますし
ミスが発生しても困ります。この作業をマクロで実行すると、数十秒で正確に作業を完了できます。

エクセルのフィルタ機能を使用してもできなくはないのですが、非表示になっている行や列があると
フィルタ機能を使用したときに、抽出されたデータが思い通りにコピーできません。

■使用するデータ
今回はC列のaddressが空白となっていますので、このデータだけ抽出して、そのデータを入力しシステムに読み込ませることを想定しています。
イメージ 1


■フィルタ機能とコピペを使用した場合
フィルタ機能でC列が空白の行を抽出します。
元のデータのB列が非表示となっている場合、A1セルからC5セルをコピし
別の場所に貼り付けると、非表示となっていたB列がコピーされません。
このままではシステムに読み込ませることができません。
イメージ 2


■目的の抽出データ
目的とするデータは以下のようなもので、マクロを実行すると、上記「■使用するデータ」の2、4、6行目が削除されて、C列が空白となっている行のみ抽出できます。フィルタのプルダウンのマークが見えますが、フィルタは使用していません。フィルタを使用していないことは、左端の行数が、1、2、3行と表示され、非表示となっている行がないことからわかると思います。

イメージ 3


このマクロは以下のようなコードで実現しました。

Sub 空白セルの行抽出()

    '①行数の最大値を取得
    Range("A1").Select
    erow = Range(Cells(65536, 1), Cells(65536, 1)).End(xlUp).Row
    
    '②2行目からデータの最後まで空白セルかチェック
    Row = 2
    Do While Row <= erow
        
        '③C列のセルが空白の場合の行全体を削除
        If Cells(Row, 3) <> "" Then
            Rows(Row & ":" & Row).Delete

            '④行を削除した分、変数Rowと最大行数erowの数をマイナス1
            Row = Row - 1
            erow = erow - 1
        End If

        '⑤次の行をチェックするため変数Rowをプラス1
        Row = Row + 1
    Loop
    
    Range("A1").Select
    MsgBox ("完了")

End Sub


「業務の効率化・自動化」書庫の記事一覧


.

Yahoo!からのお知らせ

とむとむ
とむとむ
男性 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

過去の記事一覧

スマートフォンで見る

モバイル版Yahoo!ブログにアクセス!

スマートフォン版Yahoo!ブログにアクセス!

よしもとブログランキング

もっと見る

[PR]お得情報

話題の新商品が今だけもらえる!
ジュレームアミノ シュープリーム
プレゼントキャンペーン
ふるさと納税サイト『さとふる』
実質2000円で特産品がお手元に
11/30までキャンペーン実施中!

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事