弥生会計インポート用CSVをエクセル関数で作る(2)空欄の処理方法
前回は、
インポートファイルの勘定科目を入れました。
今回は、最初に補助科目を入れていきます。
例としては、次のような、
みずほ銀行の入出金を記録している「預金出納帳」から
インポート用シートを作っていきます。
勘定科目と補助科目は基本的には一緒だが・・
前回は、
E1セルの「借方勘定科目」、K1セルの「貸方勘定科目」に次のような式を入れました。
補助科目は、全て,勘定科目のすぐ右のセルに入っていますので、
単純に右にずらしたらうまくいきそうです。
でも、これではうまくいきません。
直したい点は2つあります。
参照先セルがずれてしまっている
F1セルの計算式を見てもらうと、
本来ならば、
- 借方金額(預金1シートのG18セル)が0より大きければ
- 預金の補助科目(預金1シートのI14セル)を入れる
- そうでない場合は、補助科目(預金1シートのE18セル)を入れる
という動きをしてほしいところです。
関数の形で書けば、
=IF(預金1!G18>0,預金1!I$14,預金1!E18)
となっていてほしいのです。
ところが、実際の式は、
=IF(預金1!H18>0,預金1!I$14,預金1!E18)
となってしまっています。
だからうまくいっていないわけです。
それを修正するために、絶対参照を使って、
E1セルの式を、
↓
E1セル: =IF(預金1!$G18>0, 預金1!H$14,預金1! D18)
と変更してしまいましょう。
K1セルも同様に、
↓
K1セル: =IF(預金1!$G18>0, 預金1!D18, 預金1!H$14)
に変更してしまいます。
その後、F列、L列にコピーをすることで、
参照先セルが正しく表示されることになります。
ただし、上記画像を見ると、
もう1点、問題点が残されていることがわかります。
補助科目が入力されていない場合「0」が表示されてしまう
エクセルの仕様で、
何も入力されていないセルを
計算式で参照しようしようとすると「0」が表示されてしまうのです。
このままCSV化してしまうと、
補助科目の部分には「0」が表示されてしまいます。
これだと、インポート時にエラーが出てしまいますので、
元のセルが空白のときは、補助科目欄も空白にしたいと思います。
こういう場合に、よく使うのが次の計算式です。
例えば、
「I14セル」から値を転記したいけれど、
空白のときは空白のままにしたい、という場合は、
次のような式を入れます。
日本語で書くと、
- I14セルが空欄のときは、空欄のまま出力(※""が空欄という意味です)
- I14セルが空欄でないときは、I14セルの値を出力
この修正を、F1セル、L1セルの式に加えてみようと思います。
とりあえず、今回は、
補助科目を入れる列(F列、L列)に入れる、次の計算式に対して修正を入れようと思います。
K1セル: =IF(預金1!$G18>0, 預金1!E18, 預金1!I$14)
このうち、修正を入れるのは、
- 預金1!I$14
- 預金1! E18
の2箇所です。
これらをそれぞれ、下記のように変更します。
なお、「預金1!」とか絶対参照が付いていれば、
それもif関数の1つめの引数に移します。
預金1! E18 → if(預金1!E18="", "", 預金1!E18)
と変更してやります。
これを踏まえると、
先ほどのE1セル、K1セルに入れるべき式は、次のようになります。
長ったらしいですが、仕方が無いです。
=IF(預金1!$G18>0, if(預金1!I$14="", "", 預金1!I$14), if(預金1!E18="", "", 預金1!E18))
K1セル:
=IF(預金1!$G18>0, if(預金1!E18="", "", 預金1!E18), if(預金1!I$14="", "", 預金1!I$14))
エクセルシートは、次のようになります。