データ処理をするときに「いらないなー」という余計なデータもあります。ただ、データ数が多ければ、処理にかかる手間もそれなりです。
その処理をマクロでやることもできます。
いらないデータは最初になくす
今回の事例はこのような仕訳データです。
会計ソフトからCSVファイルでダウンロードできるのですが、年(年度)が違うとファイルが別になりますし、ときにはイケてない仕様も…。
合計列があったり、日付や数字が文字列になっている場合もあります。集計することを考えたら文字列にするというのは想定外ですが、仕方ありません。
ただ、最低限、データがあればなんとかできます。
日付を文字列から数字データに変換したり、いらない行を削除するなど。
それをどうやってやるか。
オートフィルターで検索して行削除するという方法もありますが、今回のお話はこれをマクロでやる方法です。
あ、ファイルをまとめる方法はこちらに。
Excelマクロ超入門 会計データを1つのシートにまとめるマクロ | GO for IT 〜 税理士 植村 豪 OFFICIAL BLOG
複数の会計データ(CSVファイル)を1つのシートにまとめる方法(バッチファイル編) | GO for IT 〜 税理士 植村 豪 OFFICIAL BLOG
複数のCSV(会計データ)やExcelファイルを1つにまとめる(結合する)方法 Excelの「取得と変換」 | GO for IT 〜 税理士 植村 豪 OFFICIAL BLOG
データのくせを見抜く
いらないデータを消すために、データのくせを見つけましょう。
月ごとに集計があるとか、
た、タイトル行がある場合も…。
空欄、タイトルや集計行があれば、データとしてのまとまりを欠くことになります。もしデータを1行でもあけると、そこまでで1つのデータとして扱われますから。
今回の場合は、
・A列が空欄になっている
・A列に「仕訳日記帳」の文字列がある
・A列に「日付」の文字列がある
どれかに該当する行があれば、削除します。
そうすることで、まとまった1つのデータとして利用することができます。
いらない行を複数条件で削除するマクロ
実際にマクロを書いてみました。
今回書いてみたマクロは、こちらです。
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 |
Sub rows_index() Dim LastRow ' 最終行Index Dim i ' 変数 ' 最終行の確認 LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row ' 最下行から4行目まで逆順でループ For i = LastRow To 4 Step -1 ' A列のi行目が数値でない場合はその行を削除 If (Range("A" & i) = "仕訳日記帳" Or Range("A" & i) = "日付") _ Or Range("A" & i) = "" Then Range("A" & i).EntireRow.Delete End If Next End Sub |
A列にあるデータの数をカウントして、最下行から順番にデータをチェック、もしA列のセルに「仕訳日記帳」「日付」の文字列がある、もしくはA列のセルが空欄だったら行削除をするという処理を繰り返します。
やり方はいろいろあるでしょうけど、前述したデータのくせをもとに書いてみました。
で、マクロで行削除するときに注意したいのは、Excelがどう反応するかです。
どういうことか。
実は一番下のデータからチェックするのには理由があります。
Excelで行削除をすると、どういう反応をするか。
たとえば3行目を削除すれば、4行目のデータが上にずれて3行目に表示されます。
そうすると、仮に4行目が空欄だったとしても、削除して3行目のデータに変わってしまっているため、チェックもれになる可能性があります。
なので、本来なら「For i = LastRow To 4 Step」として繰り返し処理を上からやるところ、「For i = LastRow To 4 Step -1」として、あえて下から繰り返し処理をするやり方にしています。
下からチェックすれば、該当データがあったときに削除をしても、それより下のデータはすでにチェック済ですから影響はないということです。
ということで、残念ながらイケてないデータがあったとしても、くせをみつけて削除すればデータとして利用できます。どうやって?を考えるのはいい勉強になります。
データさえあればなんとかなります。
これが紙だと…。
ということで、データ整理の1つのやり方として参考にしていただければ。
【編集後記】
昨日は午後から個別コンサルティング2コマ。途中トラブルあり苦戦しましたけどなんとか。夕食は宅配ピザでした。久々だったからか、おいしかったからか子どもたちには好評でした。また食べたいと。
【昨日の1日1新】
※「1日1新」→詳細はコチラ
Amazon 72mmレンズフィルター