確定申告の電子化を会社で進めています。
保険料控除証明書を電子取得できるようなので挑戦してみます。
マイナンバーカードは取得済みで、マイナポータルも確定申告のときに登録済みです。
どうにかして証明書をマイナポータルで受け取る方法があるのだと思いますので、手順を調べながらやってみます。
参考資料:生命保険料控除証明書の電子発行について | 日本生命保険相互会社 (nissay.co.jp)
①e-私書箱の導入
マイナポータルのアプリを起動します。
スクロールをしてログインをするとできることの中から「もっとつながる」を選びます。
次の画面で「e-私書箱」につながるを選択します。
※以後マイナンバーカードの確認が何度かあります。
手続きは完了していませんというメッセージが表示されます。
手順書の一番下にリンクがあったため見逃していました。(日本生命の場合)
日々記録されたCSVファイルをクエリで集計し、ピボットテーブルで分析しています。
使用中にピボットテーブルの変な癖のようなものがあることに気づきましたので、記録を残しておきます。
【状況】
従業員に割り当てたIDの数値に対し、集計したデータを時系列でまとめてグラフ化していました。
氏名の表示にはVLOOKUPを使い、IDを検索条件とし、従業員の一覧テーブルを参照範囲としていました。そのため、VLOOKUPはピボットテーブルとは無関係に動作するものと考えていましたが、普段とは違う「#N/A」エラーが出てしまいます。
ただし、このエラーは特定のID番号でのみ発生し、全ての番号で発生するわけではありません。
※同じシート内でピボットテーブルを参照せずVLOOKUPを使用するとエラーは発生しません。
【エラーメッセージ】
ピボットテーブルではIDをフィルタとして扱っています。そのためIDの番号の従業員のデータのみを使って集計・分析が行われます。
存在しないIDを入力すると以下の確認ダイアログが出ます。それと同じようなことが存在するIDでもまれに発生します。その時、VLOOKUPでもエラーが出るように思われます。
上記、IDの項目なのに名前と表示されています。ピボットテーブルに名前欄はなく、VLOOKUPで参照するのみです。
※一度上記ダイアログが出てOKしてしまうと、常に数式のエラーが出るようになります。回避するにはデータを保存しないようにします。
【原因】
エラーセルの検証機能を使って確認したところ、ID欄をセル番号で参照した後、文字列として数字を扱っているようでした。
式:=VLOOKUP(B6,テーブル,3,FALSE)
テーブルの書式はクエリで数値として設定されています。
IDの欄の書式はID毎に異なっています。書式の左揃え、中央揃え、右揃えをしてみると、全てのIDにその書式が設定されるのではなく、IDを変更すると書式も変わります。
これは、入力されたIDを数値とするか文字列とするかもそれぞれことなる可能性があります。(※今回はID欄に標準や数値の書式を設定してみましたがエラーの原因とは無関係に振る舞っていました)
【対策】
そもそも、同じ入力欄(セル)で入力した数字によって書式が勝手に変わるということ自体が異常な気もしますが、まずは現在起こっているエラーへの対処として次の数式を入れてみました。
式:=VLOOKUP(VALUE(B6),テーブル,3,FALSE)
VALUE関数で文字列を数値として扱わせます。これによってエラーは解消されました。
かなりイレギュラーなエラーなのかもしれません。
検索するとピボットとVLOOKUPが一緒に検索されているケースは多々あるようですが、このような状況についての回答は見当たりませんでしたので、記録として残しておきたいと思います。
【発生した状況】
職場で5人ほどで共有しているメールアドレスがあり、IMAPで設定されていました。
一人が誤ってメールを全て削除し、ゴミ箱からも抹消してしまいました。
メールを共有している一台のPCから前日までのメールを復旧することができたので、その手順を記録しておきます。
【IMAPのメールの特徴】
・メールボックス(メールサーバ)とメールアプリが同期
受信フォルダの内容はフォルダ構成も含めて同じになリます。
・メールアカウントを複数のデバイスで共有
パソコンやスマホで同じ設定をしておくと、サーバを通じて各デバイスのメールボックスも同期される。
アカウントを複数人で共有することも同じです。
【状況確認】
・出社していた人のPCでは、メールが全て消えている
メールを消してしまった後、他の人のPCでOutlookを起動してメールを確認したところ、メールが同期して消えていることに気づいたため私に連絡が入りました。
・休みの人のPCには、メールが昨日の状態で残っている
PCをネットから切断し、Outlookを開いてメールが残っていることを確認しました。
※メールの同期をしていないPCがなければ、復旧はできません。
・復旧の可能性
メールが残っているPCを1台確保して、復旧作業を考えます。削除したメール(空になったゴミ箱)は元に戻りません。
①メールのバックアップが可能なら出力したい。
②残っているメールが消えないようにしたい。
③メールを共有していた人に復旧したメールを共有したい。
【試したこと:失敗】
・メールのエクスポート
ネットを遮断した状態で、メールのエクスポートをしてみました。出力したファイルを開いてみても受信フォルダにメールがありません。
メールの同期エラーというログが残っていました。恐らくメールをエクスポートするときにメールボックスから新たにメールを取ろうとして失敗(ネットから切断しているため)したのだと思います。
・メールの同期を停止する
共有アカウントのメールの送受信(同期)を停止して、新たに同期するアカウントを登録することで、停止したアカウントを今後も利用できるかもしれないと考えたのですが、メールの同期をオフにするような設定はなさそうでした。
IMAPアカウントの設定で、メールサーバやパスワードを消したり間違ったものに変更し、メールの同期を失敗させようとしました。一見、設定を変更できたように見えましたが、Outlookを再起動すると設定が元に戻っていました。
※先にデータの複製が終わっていたので助かりました。変更できたと思ってネットに接続したので、メールは同期して消えてしまいました。
【試したこと:成功】
・メールの保存先にあるファイルの複製(バックアップの作成)
PC内にはメールのデータが.ost形式(オフライン Outlook データ ファイル)で保存されています。ファイルを開いてメールを読むことはできませんが、複製しておけば復旧作業で事故が起きたときに元に戻せるはずです。
ファイルをコピーするときはOutlookを閉じてから操作してください。
メニュー:ファイル>アカウント設定>アカウント設定
上記画面が開いたら、メールが対応するアカウント名と保存先が表示されます。
目的のアカウントを選んで、「ファイルの場所を開く」をクリックするとフォルダが開きますので、対象ファイルを複製します。
・メールの保存
メールの内容を表示して、1つ1つ名前を付けて保存することができます。
まとめてドラッグして保存することもできます。
※ファイル名にメールの見出しが付きます。メールを受信した時間が記録されないため、いつのメールかわかりません。
・メールを別の保存先に複製(推奨)
メールの保存ファイル(データファイル)を新規に作成し、残っていたメールを複製しました。
フォルダのまま複製はできないので、保存先にフォルダを作成し、受信フォルダ、送信済み(Sent)、ゴミ箱(Trash)に残っているメールを全てコピーして、保存先にペーストしました。
※複製したメールのデータファイルは無事にエクスポートすることができました。
アカウント設定の画面で「追加」をすると新しい保存先が登録されます。
メールの画面に戻るとフォルダウィンドウに追加したファイル名が表示されています。
コピー元のメールを新しい保存先に貼り付けすると、メールがコピーされました。
メールの複写ができたらデータをエクスポートします。(.pst形式/アーカイブ Outlook データ ファイル)
(保存先のファイルもpst形式なので、それをコピーしても構いません)
エクスポートしたデータを開くときは上図の「Outlookデータファイルを開く」からファイルを選択することで、フォルダウィンドウに追加されます。(ファイルをダブルクリックしても開くことはできません)
【今後の課題など】
・エクスポートしたファイルを、共有しているPCに複製して、Outlookで開いて閲覧できるようにしました。
読み込んだファイルは同期しないことを周知しておきます。
・メールの設定でPOP3を検討します。共有の運用に関わるのでIMAPとの違いを理解する必要があります。
・メールボックスに上限があるため、メールのバックアップ手段を考えておく必要があります。
Excelで式をテキスト化する場合、「=」を「'=」に置き換える。
Excelのシートで選択範囲に数値をランダムに入力してくれるマクロ
Sub 乱数入力()
Dim row, col, x, y As Integer
Dim num, num_min, num_max, num_step As Integer
'行数
row = Selection.Rows.Count
'列数
col = Selection.Columns.Count
'最小値
num_min = 100
'最大値
num_max = 5000
'ステップ
num_step = 50
If row * col > 2 Then
For y = 1 To row
For x = 1 To col
num = Math.Round((Math.Rnd * (num_max - num_min) + num_min) / num_step) * num_step
Selection.Cells(y, x).Value = num
Next
Next
Else
MsgBox "選択範囲は3つ以上のセルを選択してください。"
End If
End Sub
Excelでクエリを作成
【問題発生①】
Synologyを使って社内のデータを共有しているのですが、データの同期にタイムラグがあるため複数の部署で1つのExcelファイルを更新すると上書き保存で不具合がでることが分かりました。
誰かがファイルを開いて内容を編集していても、気づかずに開いて保存することができてしまうため、自分で編集したファイルが後から保存された人のデータで上書きされてしまいます。
これはSynologyによる同期に10分近いタイムラグがあることも状況を悪くしています。
※Dropboxだとファイルの競合を知らせてくれます。
以前使っていたファイルサーバーでは、Excelのファイルを開くときに編集中であることを知らせてくれて、後から開いた人には閲覧専用モードで開くということがありました。
【対策案】
Excelのシートの構成は、各部署の入力シートとそれらを集計するシートが1つのファイルになっていました。
部署同士の競合を防ぐため、入力用シートを部署ごとに別ファイルにして、集計用のページを1つ作ることにしました。
その集計の対応にクエリを初めて使ってみることになりました。
※以下は4つの支店がある会社のサンプルデータを使って内容を解説しています。
【クエリの作成】
入力用シートをテーブル化して、クエリ(Power Query)の機能で集計ページに読み込んで、一つのテーブルとしてまとめます。
なぜ計算式(関数)でやらなかったのかというと、入力用シートに入力されるデータの件数が分からないため、計算式を使うことができないからです。
※クエリというのはAccessで使われているデータベースの機能でもあります。データ受け渡しのルールという感じでしょうか。
①入力用シートの表をテーブル化
各支店のシートを個別のファイルに切り分けて保存します。
各入力用シートの表をテーブル化します。
クエリで参照するためテーブルの名前は重要です。
②集計用ファイルにテーブルを読込
メニュー:データ>データの取得>ファイルから>ブックから
テーブルの入ったブックを指定すると、テーブル名が表示されますので、①で設定したテーブルを選択し、「データを変換」すると、テーブルが新しいシートに作成され、クエリが作成されます。
集計に必要なテーブルを順次読み込んで、集計に必要なクエリを作成します。
【支店のクエリの詳細】
let
ソース = Excel.Workbook(File.Contents("C:\Users\user\ドキュメント\売上集計.xlsm"), null, true),
売上東京_Table = ソース{[Item="売上東京",Kind="Table"]}[Data],
変更された型 = Table.TransformColumnTypes(売上東京_Table,{{"支店", type text}, {"取引先", type text}, {"1月", Int64.Type}, {"2月", Int64.Type}, {"3月", Int64.Type}, {"4月", Int64.Type}, {"5月", Int64.Type}, {"6月", Int64.Type}, {"7月", Int64.Type}, {"8月", Int64.Type}, {"9月", Int64.Type}, {"10月", Int64.Type}, {"11月", Int64.Type}, {"12月", Int64.Type}, {"合計", Int64.Type}})
in
変更された型
上記の例では、東京支店の売上を売上集計から読み込んでいます。
クエリの詳細は、メニュー>クエリ>編集>詳細エディター、で見ることができます。
①ソースはファイルのパスを絶対指定しています。
②ソース(ファイル)からテーブルを指定してデータフィールドを読み込みます。
③読み込んだ後、表示するためにデータを加工することができます。
※今回は4つの支店があるため、4つのシートを4つの対応するクエリで読み込みます。
この時点でクエリで読み込んだテーブルを表示するシートが4つ作成されます。
【クエリの結合】
全社の集計をする方法として、各支店のテーブルとは別に集計テーブルを作ることも考えられますが、今回はクエリから1つのテーブルにまとめてみたいと思います。
1つのテーブルにまとめた後、ピボットテーブル(Power Pivot)で抽出・分析することができるからです。
複数のテーブルを読み込んで、複数のクエリが作成されたら、それらを1つに束ねます。
メニュー:データ>データの取得>クエリの結合>追加
3つ以上のテーブルを選択して追加すると、新しいテーブルが新しいシートに作成されます。
複数のテーブル(クエリ)を束ねる新しいクエリが追加されます。
※結合するクエリができあがったら、各支店のシートは削除してもかまいません。各支店のクエリは必要ですので、消さないでください。
【集計用クエリの詳細】
let
ソース = Table.Combine({売上東京, 売上大阪, 売上札幌, 売上博多})
in
ソース
【問題発生②】
ここまで作業してクエリに大きな欠点があることに気づきました。
1つは読み込むファイルを絶対パスで指定しなければならない点です。そのため、読込元のファイルの保存先を変更するとクエリの読込設定を変更しなければいけません。
クエリを作成した時点のパス名は「C:\Users\user\ドキュメント\売上集計.xlsm」となっています。
この問題は、Synologyの同期ではさらに問題が重なります。
ファイルを共有フォルダに移動し、ファイルパスも次のように変更したとします。「C:\Users\user\共有フォルダ\売上集計.xlsm」
データを共有フォルダに同期した後、別のPCで集計ファイルを開いてもクエリが正しく動作をしません。
実際のWindowsのパス名は、「user」の部分に利用者のアカウント名が入ります。そのため、利用者の異なるPCでは、Synologyが同期をすると共有フォルダまでのパス名が異なることになります。
絶対指定のパス名ではこのように混乱が生じます。
※クエリは一度読み込んだあと、パスが不正でも読み込んだデータはそのまま保持されます。
クエリは自動更新しないため、手動で更新します。(マクロで自動更新することは可能)
【クエリの読込ファイルを相対パスで指定する】
ファイルパスを絶対指定から相対指定に変更することで、諸々の問題をクリアしようと思って、以下のサイトを参考に修正をしました。
データの取得を相対パスに変えてみた話【PowerQuery】|とある会計士のひとりごと。 (sakatakablog.com)
ファイルパスをシート内で取得しておきます。
「=LEFT(CELL("filename",$A$1),FIND("[",CELL("filename",$A$1))-1)」
その後、クエリにファイルパスを読み込ませます。
注意点:
取得したパス名がURL形式になる場合、クエリの読込エラーが発生します。
OneDriveの設定を変更すると直るらしいという情報があったので対処したのですが、設定内容を忘れてしまいました。
(OneDriveでバックアップの対象になっていないフォルダ内では問題なく動作します)
【修正後のクエリの詳細】
let
filepath = Excel.CurrentWorkbook(){[Name="ファイルパス"]}[Content]{0}[パス名],
ソース = Excel.Workbook(File.Contents(filepath & "売上集計.xlsm"), null, true),
売上東京_Table = ソース{[Item="売上東京",Kind="Table"]}[Data],
変更された型 = Table.TransformColumnTypes(売上東京_Table,{{"支店", type text}, {"取引先", type text}, {"1月", Int64.Type}, {"2月", Int64.Type}, {"3月", Int64.Type}, {"4月", Int64.Type}, {"5月", Int64.Type}, {"6月", Int64.Type}, {"7月", Int64.Type}, {"8月", Int64.Type}, {"9月", Int64.Type}, {"10月", Int64.Type}, {"11月", Int64.Type}, {"12月", Int64.Type}, {"合計", Int64.Type}})
in
変更された型
①ソースを読み込む前にファイルパスを変数filepathに入れています。
②ソースでファイルパスを指定する部分でパス名(変数filepath)とファイル名を合わせています。
以下、変更なし
クエリの編集画面で、クエリの動作をステップごとに確認できます。
読み込みなどでエラーがあった場合、どの段階で発生しているか分かります。
iPhoneでマイナンバーカードから電子署名を読み取れるようになったので確定申告をやってみました。
対応するiPhoneの機種は7以降になります。
事前にマイナンバーカードと専用のアプリを用意しておきます。
【マイナンバーカード】
事前に電子署名の入ったマイナンバーカードを用意します。
手元に届くまで数週間から一月ほど掛かります。
署名用暗証番号(6〜16桁)と利用者証明用暗証番号(4桁)が必要です。
【使用するアプリ】
関連するアプリは以下の2つです。
また確定申告書の作成はブラウザで行いますので、Safariを使用します。
①マイナポータル
マイナンバーカードをe-Taxに連携させるのに使用
②e-Taxアプリ
作成した申告書を送信、確認に使用
マイナンバーカードとアプリの準備ができたら国税庁のHPで情報を確認し、アプリ上で準備をします。
【確定申告の準備】
国税庁(e-Tax)のホームページ内に「スマートフォン」や「iPhone」での確定申告について情報がありますので、一読をお勧めします。
申告書の作成前にマイナポータルを使ってe-Taxと連携しておきます。
①「マイナポータル」アプリを起動
②「スマホでログイン」を選択
→利用者証明用電子証明書のパスワードを入力
→マイナンバーカードを読み取ってログイン
③ログインできたら画面をスクロールして、「もっとつながる」を選択
④「つながっていないウェブサイト」に「国税電子申告:納税システム(e-Tax)」の項目があるので、画面の右(画面の外にスクロール必要)にある「つなぐ」をクリックする。
→「つながっているウェブサイト」に登録される。
【確定申告書を作成】
①Safariで国税庁(e-Tax)のホームページにアクセスします。
②「国税庁 確定申告書等作成コーナー」の「作成開始」をタップ
③「e-Tax(マイナンバーカード方式)」を選択
→次へ
→「マイナポータルへ」をタップ
④マイナポータルで利用者登録
→マイナンバーを読み取って名前や住所を登録
→e-Taxに戻る(Safariに切り替える)
この登録作業は2度目から表示されません。
⑤申告書の作成
ここから申告書に関する質問や登録内容の確認が始まります。
申告書の作成の最後に還付金の表示や還付口座の入力があります。
⑫申告書の送信
→「e-Taxアプリ」に移行します。
→送信が終わったら確認画面で「移遷コードをコピー」をタップします。
⑬Safariへ戻って「移遷コード」をペーストして送信します。
確定申告書(PDFファイル)はダウンロードすることができます。
確定申告書のデータ(拡張子.data)をiCloudに保存することもできます。
自分の申請書作成の後に親の申告書も同様に作成しようとしましたが、途中からうまく動いてくれませんでした。
マイナポータルでのe-Tax連携がいまくいかないようで、連携できてないという表示欄に連携ができている状態(連携を解除するボタンが表示されている)で表示されるという奇妙な状態でした。
マイナポータルを使ってマイナンバーカードの読み取り操作が何度もあります。
また、Safariに自動的に戻らないこともあり、次に何をすべきか分からないところもあります。
まだまだワンストップと言うにはややこしい状態でした。
プリンタを持っていないので、コンビニのマルチコピー機を使ってプリントすることにしてみました。
①USBメモリを使ってみる
文書はWordからPDFに保存をして、手持ちのUSBメモリ(FAT32)に入れました。
PDFファイルは3ページあります。機器によって対応するバージョンが明記されていますので、確認すると「1.3」となっていました。
近所のスーパー(ヨーカドー系列)にあるマルチコピー機を使ってみました。
最初に文書印刷を選び、10円を入れてから、USBメモリを挿しこみます。液晶パネルには、隠しファイルも含めてリストが表示されました。
目的の文書を選択して、印刷を待っているとエラーの表示で印刷ができません。
データを選ぶ前に、1枚の印刷料金しか表示されないくらいなので、複数ページのデータに対応しないのではないかと思われます。
次に、セブンイレブンに行ってみました。
文書印刷を選んで、記憶媒体を選んでからUSBメモリを挿します。
しかし、いつまで経っても次の画面に移行しません。アクセスランプはずっと点滅していました。
USBメモリのフォーマットが対応しなかったのかもしれないので、問い合わせをしておきました。
ゼロックスより対応するフォーマットについて以下の返答をいただきました。
お問い合わせの件ですが、 マルチコピー機で対応しているUSBメモリのファイルシステムは、 FAT16、FAT32、NTFSの3種類となります。 また、マルチコピー機にてUSBメモリーをご利用になるには、 いくつかの制限がございます。 ・パスワードの設定があればご使用できません。 ・通信機能など複合タイプはご使用できません。 ・USBポートを介したハードディスクは使用できません。 (一般にUSBキャッシュメモリーと呼ばれるものはご使用できます) ・USB内にドライブレター(ドライブ割り当て)等の設定があると ご利用できない場合があります。 ・USBメモリーのコンテンツにアクセスするために別途ユーティリ ティソフトが必要なUSBメモリーは動作保証外となっております。 上記制限をクリアしているUSBメモリーであれば、ご利用いただけるかと存じます。 |
②ネットプリント
インターネット経由でデータをマルチコピー機で印刷することができます。
自宅のMacを使って、セブンイレブンのネットプリントのWebサイトに登録しました。
PDFファイルをネットプリントのサイトに送ります。
試しにDropbox経由でiPhoneを使って転送もしてみました。
プリント待ちのリストに送信したファイルが表示されると、予約番号が発行されてページ数と料金も表示されます。
1ページ、20円でした。USBメモリで持っていくより2倍の料金となっています。
セブンイレブンに行ってマルチコピー機に予約番号を打ち込むと料金が表示されて、印刷することができました。
これで無事に印刷物が手に入りました。
それにしても、余計な手間をかけて料金が増えるのでは納得がいかないので、USBメモリでもちゃんと印刷できることを確認しておきたいと思います。
③SDカード
microSDをSDカードのアダプタに付けてセブンイレブンに持って行きました。
文書印刷を選択し、SDカードを挿すとファイルが表示され、目的のPDFファイルを選んだところちゃんとページ数が表示されました。
問題なく1ページ10円で印刷ができました。
古いバージョンのExcelでは上の図表の様に新元号を簡単に表示することができません。
Excelがアップデートによって新元号に対応した場合は、書式設定だけで令和を表示することができますが、古いExcelの場合は計算式で対応します。
計算式を作る場合、令和になった2019年5月1日のシリアル値を元にして、それ以降の日付の年数を西暦から令和の年数に変換します。
段階を踏んで計算式の内容を確認してみましょう。
上の図表で、日付を入力すると、短い日付形式か長い日付形式で表示されるのが標準だと思います。
シリアル値は本来表示されることはありませんが、令和の判定に使用するため表示させています。
和暦の表示は3つのパターンを表示しています。これらは書式設定を使用しています。
和暦(元年)については最後に説明します。
3つの計算式は令和に対応していないExcelを想定しています。
- 計算式(1):=IF(シリアル値<43586,YEAR(シリアル値),YEAR(シリアル値)-2018
日付のシリアル値から年号に必要な数値を算出しています。これが計算式の基本になっています。
シリアル値は日付を入力したセルを示しています。一つの計算式の中で同じシリアル値を指定します。
シリアル値(日付形式でも可)がC3のセルにある場合、計算式は「=IF(C3<43586,YEAR(C3),YEAR(C3)-2018」となります。
- 計算式(2):=IF(シリアル値<43586,YEAR(シリアル値),"令和"&YEAR(シリアル値)-2018)&"年"
数値に文字を組み合わせて表示しています。
- 計算式(3):=IF(シリアル値<43586,YEAR(シリアル値),"令和"&YEAR(シリアル値)-2018)&"年"&MONTH(シリアル値)&"月"&DAY(シリアル値)&"日"
年、月、日を表示します。
図表の8/26の列には、関数を使って今日の日付を表示しています。
- 日付関数:=today()
シリアル値を全て「today()」に置き換えることで計算式(1)〜(3)でも今日の日付から自動的に表示を更新することができます。
最後に、令和に対応したExcelですが、令和1年を令和元年と表示するには、書式設定のユーザー定義が必要です。
そのユーザー定義の記述方法です。
- 和暦(元年):[<43586]ggge"年"m"月"d"日";[<43831]"令和元年"m"月"d"日";ggge"年"m"月"d"日"
ユーザー定義の書式に上記の記述をします。2019年5月1日〜12月31日の間を令和元年と表示します。ここでもシリアル値を使用しています。