仮想通貨の集計のすすめ【第12回】~Coincheck整理編①~

Coincheck取引データ編①と②でダウンロードしました。

結果、何も修正を加えていない場合、このような状態になっていると思います。

これだと、集計しづらいので、データの組み換えや情報を追加して、整理していきます。
Excelの勉強の時間ですね。

まずは、取引所:約定履歴から。
my-complete-orders-2017-08-07.csvというような名称でダウンロードされています。
これを開くと、A~G列に値が入っています。

完全に好みですが、Dateの値を日付と日時(日付+時間)に変換します。
なぜ日付と日時に分けるかというと、日付については、仮想通貨同士の売買に関しても課税となった場合に、日付で、その日のレートを参照するときに使用します。現行税制では課税される可能性が高いので、あとで集計できるように日付のみのデータを抽出しています。
続いて、日時ですが、これは、並び替えをする時に利用します。他の取引データ、例えば、販売所でBTCを購入した場合の日付については、日時にプラスして「UTC」という値になっています。対して取引所の約定履歴には、日時にプラスして「+0900」という文字列が入っているため、気分的に嫌というだけです(並び替えをする時に多分影響がないと思うので、気分ですね)。

では、どうやって日付を抽出するか。ここからはExcelの勉強です。

Left関数を使います。
Left関数は、指定したセルの値を左から〇〇文字、取り出すことができる関数です。
Left(A2,10)でA2のセルの値10文字を取り出すと、2017-06-07(10文字)です。
同じように、Left(A2,19)でA2のセルの値19文字を取り出すと、2017-06-07 09:05:23(空白も入れて19文字)という形になります。

例えば、日付が2017-6-7というように月や日の前に0が入っていないようなパターンの場合には、FIND関数を併用すると便利です。
FIND関数は、指定したセルの値の中に検索したい文字列が〇文字目にあるかを調べる関数です。
FIND(” “,A2,1)とした場合、A2で検索した「空白」が一番初めに登場するのは、11文字目になります。
(一番後ろの1は、検索を開始する位置を指定することができます。今回は左から1文字目から検索するので1となります。)

FIND関数で取得した文字数をLEFT関数と併用する事により、月や日の前に0が表示されていないパターンにも対応することができます。
併用するとこんな感じです。
LEFT(A2,FIND(” “,A2,1)-1)
FIND関数では、左から数えて空白を含めた文字数11という値が返されます。
空白よりも前の文字をLEFT関数で抽出したいので、11-1=10という値になるようにFIND関数の後ろに-1を付けてあげます。

次に、販売所などと合わせられる様に、組み替えを行います。

私は、複式簿記大好きなので、大きく分けて、market1とmarket2という形を設けています。
market1がBTCの売却であれば、market2は、日本円の購入というようになります。
なぜ、このような形なのかというと、仮想通貨同士の売買だった時には、仮想通貨それぞれの数量を把握しなければ、残高数量が一致しません。もちろん、日本円の残高も合わせることが可能です。
market1で集計、market2で集計とそれぞれ分けて集計可能な状態にしていると後々、楽だと思います。ここ結構重要です。
どんな方法でも良いですが、単式で集計しようとするとかなり苦労することになると思います。
単式というのは、組み替えをしていない一番初めの状態をここでは指します。

日付は、-から/に更に変換しています。-の状態だと、見た目は日付なのですが、日付と認識してくれないので、DATEVALUE関数を使って、日付の値になるようにします。日時も同様です(+TIMEVALUE関数を使用)。

問題は赤枠で囲ってある部分です。この部分に関しては、次回、説明します。
とりあえず、日本円の時は単価1円表示しています。

他の販売所の取引データや仮想通貨の送受信履歴もA列からO列に組み替えをしてしまえば、集計が容易になります。

参考にExcel置いておきます(フルVerじゃない)。
02CCOders