データを加工するときには、元のデータを調理してはいけません。
調理するためのしくみをつくるのがおすすめです。
あるデータを加工するには?
必要なデータをつくりたいという場合に、ネットや別のソフトにあるデータを使えそう。
でも、そのままじゃ使えないということはあるでしょう。
たとえば、
- ネットにあるデータを会計ソフトにインポートするためのデータに加工したい
- ソフトのインポート形式に合わせればインポートして利用でき、イチから入力しなくても済む
といったケースです。
その場合、もとのデータを利用して、加工すれば再利用ができるわけです。
わたしはそれをExcelでやっています。
このとき注意したいのは、元のデータは触らないということ。
ネットやソフトからダウンロードしたCSVファイルなどをデータをExcelのシートにペタっと貼り付けたら終わりです。このデータはそれ以降は触りません。
あとの調理は別のシートでやります。
データと調理は分ける
なぜ、このようにするかというと、ダウンロードしたデータを触ってしまうと、次に同じことをやるときに、またそのデータを加工しないといけなくなるからです。
違うデータであっても、何度やっても同じようにできるしくみをつくるためには、生データは触らないということです。
この事例は、給与ソフトの源泉徴収票のCSVデータをeLTAX用のインポートデータに変換したいというものです。実際に先月に使いました。
別のシート「eLTAX」で、eLTAXへのインポート用のデータを数式を利用してつくります。
このeLTAXデータが140列近くあり、こんなにいらんかなと…。
そのうちの必須項目だけを設定するにも時間がかかったのですが、それでも1回しくみをつくればあとは繰り返しです。
役所の場合は、数字も全角を求められることが多いです。
たとえば、住所を見ると、文字属性は全角。
ということは、住所の番地も全角でないとエラーになってしまうということです。
ただ、シート「data」にある半角数字のデータをもとに、
シート「eLTAX」側で、JIS関数を使えば、このように数字も全角表示にすることができます。
同様に。eLTAXへのインポートデータでは、139列目に社員の住所の市町村コード(6桁)が必要になります。
シート「eLTAX」では、このように表示させる必要があります。
これも元データはまったく触らずにしくみを考えます。
まず、市町村コードのデータをネットからダウンロードし、別のシート「市町村コード」に貼り付けます。リストとして使います。
社員の住所は先程の元データの中にあるのですが、欲しいのは「静岡市」の部分だけ。
そこでいったん、eLTAXシートのインポートデータの枠外、無関係のセルに(ここではEO列)市町村だけを抽出して表示させておき、
この市町村名をキーに、XLOOKUP関数を使います。「=XLOOKUP(EO3,市町村コード!C:C,市町村コード!A:A)」とすれば、セルEO3にある「静岡市」から、
シート「市町村コード」にある「静岡市」を探して、同じ行にある市町村コード(221007)を抽出し、
このように表示させることができます。
こういうしくみをつくっておけば、同じことをやるにもその後は元のデータをペタっと貼るだけで済みます。
マクロを使うと、自動でインポート用のCSVファイルをつくることもできます。
そこは手でやってもいいでしょうけどね。
しくみをつくると腕を磨ける
しごとをするときにしくみをつくっておくと、便利です。
有料のソフトを使わずとも、Excelで関数を使ってしくみをつくることはできます。
市販のソフトでできない、種類の違うソフト同士をつなぐことができるのもExcelなら自由設計です。
つくるうちにExcelの腕も磨けます。
入力が多いなら、それだけ時間もかかりミスの可能性も増えます。
入力を減らすしくみを考えてみましょう。しくみをつくるのにもミスはありえますが、つくれば人よりミスしませんので。
今回のようにじぶんさえ必要ならつくることができるのも魅力です。
【編集後記】
昨日は法人の決算や法人の月次、セミナー準備などを。
【昨日の1日1新】
※「1日1新」→詳細はコチラ
月うさぎのパン