見出し画像

会計パーソンのためのExcel~第2回~

皆さん、こんにちは。

お読みいただき、ありがとうございます。

第2回目は、第1回で取り込んだデータをもとに、実際のマスタやトランザクションデータの形にしていきますよ。


Power Query エディターの起動

方法はいくつかありますが、とりあえず2つ。

  • すでに取り込んだ履歴から

クエリと接続→ダブルクリック
  • 「データ」タブから

データ→データの取得→Power Query エディターの起動

得意先マスタ(M_得意先)

完成イメージ

完成イメージ

データを入れる箱を作る

今回は元々データがなく、新しくデータを格納するテーブルを作ります。
グレーのところで右クリック→新しいクエリ→その他のソース→空のクエリ

空のクエリ作成
クエリ1という名前の箱ができる

連番を作る

前回取り込んだ条件指定で、15件としていました。
得意先コードはC+数字4桁となっていますので、まずは15個の連番を作っていきましょう。

数式バーに以下の式を入れ、Enterを押してください。
すると、1~15までの連番(=リスト)が出来上がります。
※=を忘れずに!

= {1..15}
リスト作成

なお、上の例では"15"を直接入力しましたが、実際は条件指定した結果に応じて変更したいのです。そういうときは、最初に読み込んだクエリからデータを持ってくる、ということをやります。

条件指定した結果が入っているクエリ(以下の例では"_Condition_Customer")を選択し、
"15"の入っているセルを右クリック→新しいクエリとして追加
すると、15という数字だけを表示するようになり、以後、他のクエリでこの値を参照できるようになります。
つまり、最初に取り込む条件を変えれば、ここの数字も変わる、ということですね。

新しいクエリとして追加
テーブル表記だったものが1つの数字になる

さて、ここで先ほどの式"= {1..15}"を置き換えてみます。
結果は同じですね。

= {1..得意先数}
数式を他のクエリ参照に変更

さて、連番を作れましたが、リストは単にデータが一列に並んだだけのものですので、このあと、よく見るいわゆるテーブル形式に変換します。
リストがあるステップでは、リストツールというタブが選択できるようになるので、そこから「テーブルへの変換」を選択。
リストはうまく使うと色んな計算ができる(らしい?)のですが、難しいのでまた後日に。今回はそのままOK。

リストツール→テーブルへの変換→OK

すると、少し見た目が変わりました。これで変換は完了です。

テーブル変換後

さて、少し右に目をやると、「クエリの設定」のところで、「ソース」「テーブルに変換済み」というステップが表示されています。
このように、何か加工をするごとに、ステップが追加されていきます。
また、いらなくなったステップについては、ステップ名の左側の✕を押すと削除され、ひとつ前の状態(下の例では「ソース」)に簡単に戻れます。

また、「名前」というところで、今回作成するもの(M_得意先)がわかるような名前に変更しておきましょう。

クエリの設定

得意先コードを、新しい列で『"C"+4桁の数字』に変換する

さて、連番ができたところで、『"C"+4桁の数字』の列を追加します。
ただし、4桁に満たない場合は先頭をゼロで穴埋めします。
Excel関数での作業イメージは下記ですね

TEXT変換

列の追加は、色々メニューがありますが、今回は「例からの列」を使ってみます。

列の追加>例からの列>選択範囲から

右のほうに、「列1」という入力可能なテーブルが作成されるので、
たとえば1行目に、「C0001」と入力し、Enterもしくは余白をクリック

こうなってほしい、を入力してみる

そうすると、「あなたが入力したいのは下記ですか?」と言わんばかりに候補が出てきます( ゚Д゚)
例からの列、というのは、ユーザーが入力した答えをもとに、ルールを推測してくれるってことですね。

10番以降がおかしい


一見、合っていそうですが、10番以降はC0010にしたいので、ちょっと違いますね。したがって、間違っている部分をまたクリックして、あるべき結果を入力すると、今度は数字は4桁になりました。問題なければ、OKをクリックします。

すると、元の連番だったテーブルに、今回作りたい列が追加されました。
また、意識する必要は現時点ではありませんが、今回実施した作業の中身の実態(関数)が自動作成されます。この辺は追々。

数式

列の削除

リストはもういらないので、削除します。
やり方はいくつかありますが、わたしは下記で実施することが多いです。
※残したい列を選択>右クリック→他の列の削除

列の削除
削除後

ここで、不思議に思ったかたもいるかと思います。
今回、この列はリストをもとに作りました。Excelであれば、元の列を削除すると、#REFでエラーになってしまいます。
PowerQueryでは大丈夫です。結果が値貼付のような状態になります。
むしろ、不要な行列がたくさん残っている状態で加工を進めると、大量データでは効率が悪いので、削除推奨です。

得意先名称(アルファベット3文字)をランダムで作る

前提として、Excelでは65がA、90がZを意味します。
CHAR関数でこれらを引数とすると、対象のアルファベットが返ってきます。今回はこれを利用します。

列の追加>カスタム列を選択します。
すると、どういう値を表示させるのか数式の入力が求められますので、今回は下記を入力します。
「Number.」というのが独特ですが、Roundは四捨五入、RandomBetweenはその間で乱数を発生させる、という点は通常のExcelと同じです。

Number.Round(
    Number.RandomBetween(65,90)
)
数式を入力し、OK

乱数ですので、この画面と皆様の結果は当然異なります。
65~90の整数が表示されていれば成功です。
今回は3文字にしたいので、これを3回繰り返します。
以下のようなフォームになっていればOKです。

乱数が3列

次に、作った乱数の列それぞれからアルファベットへ置換します。
以下は[カスタム.1]の数字をもとに文字列に置換する例です。
他の2列は、[カスタム.1]を、[カスタム.2][カスタム.3]に読み替えます。

= Character.FromNumber([カスタム.1])

以下のようになっていれば成功です。
また、カスタム.1~カスタム.3は不要になったので削除します。

カスタム.1を選択

Shift押しながらカスタム.3をクリックで3列同時選択

Deleteキー もしくは 右クリック>列の削除

同じ行の列を結合する

カスタム.4~カスタム.6をShiftを押しながら選択し、列の追加>列のマージを選択します。
詳細画面で、区切り記号をカスタム「@」とし、OKを選択。
すると、区切り記号で選択した記号で列の文字列が連結されます。
以下は例ですので、どれでも良いです。
※画像の文字が違いますが、乱数が都度変化するためご了承ください。
※区切り記号で「なし」を選択すると、「完成イメージ」のように単純に結合されます。

最後に、カスタム.4~カスタム.6を削除し、列名を変更します。

ワークシートに結果をエクスポートする

ホーム>閉じて読み込む

データのインポートの画面で、「テーブル」を選択
どこに表示させるかは、「データを返す先を選択してください。」で選択

以上です!お疲れまでした。

補足

列のマージにおける列の選択順序

以下は、いずれも同じカスタム.4~カスタム.6を選択して「列のマージ」を実施しています。
一方は4→5→6(結合済み)、もう一方は5→6→4(結合済み.1)と選択して「列のマージ」をクリックしましたが、選択順序によって結果が異なるため注意。

最後に

実際、マスタを自分たちで作るなんてことはないと思いますが、実は利用頻度の高い機能をかなり使用しています。
上記がお役立ていただければ幸いです。

いいなと思ったら応援しよう!