Excelで介護支援記録管理システムを作ってみる~5日目
前回の投稿では、配列数式を使いテーブルの中から必要とする複数のレコードを、順序良く一気に抜き出す方法を紹介しました。
改めて、介護支援記録管理システムの中で使うことができた配列数式を、下の画像のとおり実際に示しておきます。
テーブルの「在籍」フィールドが"利用中"となっているレコードを抜き出す配列数式となりますが、指定範囲を列(フィールド)にしているため、今後テーブルにレコードがいくら追加されても問題はありません。これは構造化参照と呼ばれる方法で、データをテーブル化することで得られるメリットの一つです。但し、施設としての性格上、利用中の方が30名程度で今後も推移することを前提としています。
では本題に進みましょう。
Excelでは、一つまたは複数のテーブルを元に、含まれるフィールド等を加工編集して、都合の良い別のテーブルを作り出すことができます。これがパワークエリ(Power Query)と呼ばれる機能です。
Excel 2016から標準機能として組み込まれており、比較的新しい機能であるため、入社してExcelを使い始めた若い方なら知っている方も多いのではないかと思いますが、古い人間の私は、名前を聞いたことはあっても、全く使う機会を持たないまま過ごしてきてしまいました。
シート上でのデータの切り貼りに余りに慣れ過ぎたため、非効率だと思っていても、そのやり方を続けたほうが、ある意味楽だったり、達成感を得られるせいでそれを続けてしまったわけです。これは誰しも陥りやすい陥穽と言えるでしょう。
自分を例にして恐縮ですが、日本の生産性が低いと言われる理由の一つには、多分このようなことも背景にあるのだろうと思います。
話を戻しますと、5回ほど前の「Excelでブック間におけるテーブルのリンクをやってみる」という投稿で、他のExcelブックに保存されているテーブルを元データとし、これを新しいブックの中にリンクさせた形で取り込む操作を行いました。実はこれがパワークエリへの入り口段階でした。
Accessの操作では、外部からデータをリンクさせて取り込むことが非常に多いため、Excelでも同じような機能がないか探してみて、その存在に気づいたのでした。
このシリーズを始めたことで、ようやくExcelのパワークエリに遭遇したというところでしょうか。新しいことにチャレンジすると、新しい知見やテクノロジーに出会えるので楽しいものです。
さて、詳細は他に譲るとして、パワークエリは基本的に、「接続」「変換」「組合わせ」「読み込み」の4つのステップで行います。先の投稿では「接続」と「読み込み」のみを行ったことになります。
前回そして前々回では、関数を使ってテーブルから必要なデータのみを、きれいに抜き出す方法を試したのですが、曲がりなりにもこれで目的を果たすことはできました。
しかし、パワークエリを使うと、元のデータを維持しながら、データの構造に対する理解を踏まえた上で、幅広く様々な改変の作業をすることができるように思います。
作業の難度はその内容にもよりますが、今回の作業はそれほど難しくありません。極めて簡単な部類と思います。
改めて課題を整理すると、介護支援記録管理システムの基礎となる利用者情報を、データの入力規則を使って記録テーブルに効率良く入力できるようにしたいとき、利用者テーブルの中に含まれている利用を終了された方を除いたリストを別に作ることでした。
そこでまず、介護支援記録管理ブックの中の利用者データシートの中にある、外の利用者DBブックから取り込んだ利用者テーブルをそのまま使います。
テーブル内のどこかのセルをクリックした上で、メニューから、[データ]→[テーブルまたは範囲から]をクリックします。すると下の画面のように、利用者テーブルの「Power Query エディター」のウィンドウが開き、その中に利用者テーブルが表示されます。
早速このエディターを使い利用者テーブルをシステムで使いやすいよう加工していきます。
まずは、使う必要がない列(フィールド)、即ち「利用者氏名」「フリガナ」「在籍」以外の列を選択し削除してしまいます。
次に「在籍」フィールドにある情報が"利用中"とある方だけに絞り込むことにします。
下の左側の画像のとおり、「在籍」列の▼ボタンをクリックし、表示されたリストの中から「利用中」にのみチェックを入れOKとします。
利用者の在籍がすべて"利用中"になったことを確認できたら、エディターのメニューから[閉じて読み込む]をクリックします。
すると下の右側の画像のとおり、介護支援記録管理ブックの中に新たに利用者テーブル(1)というようなワークシートが作成され、その中にパワークエリで加工作成した利用者テーブルが表示されます。
Accessでクエリを作成する方法とはだいぶ雰囲気が違いますが、一応クエリにはなっています。
なおシート名は後で、"利用者リスト"など名前を変えておくことにします。
編集元となった利用者テーブルは元のシート上にあり、これには何も変更はありません。
また、外の利用者DBブックの中にあり、リンク元となっている利用者テーブルのほうで、在籍情報に変更が加えられた場合は、まずリンク先の利用者テーブルの更新を行った上で、パワークエリで加工を加えた利用者テーブルのほうも更新を行います。こうすることで、在籍情報の変更が反映されます。
職員の情報についても、職員テーブルの中から異動、退職された方を除いたリストを作成する必要があるため、こちらもパワークエリを使い、同様に加工したテーブルを作成します。
少し紆余曲折ありましたが、今後は、パワークエリで加工し作成したテーブルをデータの入力規則用に使うことにします。
関数によるレコード抜き取りの手法も無駄にはならず、別の目的で使えそうな気がします。
>次回の投稿に進む