Excelで介護支援記録管理システムを作ってみる~6日目
前回の投稿ではパワークエリを使って、別ブックからリンクで取り込んだ利用者と職員のテーブルを加工し、現在利用中の利用者、現在在籍中の職員のみに絞り込んだテーブルを作りました。これで、記録テーブルに入力するさい、データの入力規則が的確に使えるところまで進めることができました。
では、実際にそれを行ってみることにします。
まずは記録テーブルの利用者名にデータの入力規則を設定します。
利用者名の列のデータ部分をドラッグで範囲指定し、上のタブメニューのデータをクリックし、データの入力規則を選んでクリックすると下の画像のとおりデータの入力規則の設定ウィンドウが表示されます。
入力値の種類は「リスト」を選び、その上で下にある「元の値」を設定することになりますが、通常は参照する範囲を絶対参照により設定します。
下の画像のとおり、パワークエリで作成した利用者リストと名付けたテーブルで、利用者氏名の列を上からドラックし範囲指定をするわけです。
しかしここで問題となるのは、この施設は定員30名を想定しており、現時点で入院中の方がいるために利用者数が実際は29名にとどまっていることです。また、利用を終了される方がさらに出ることも考えられます。
仕方がないので、テーブルの範囲を超えて30名分の範囲を設定することにしようと思いましたが、何か間が抜けている感じがしました。
そこで、テーブルの構造化参照は使えないものかと思い立ちました。
テーブル内の現在利用中の方が増えても減っても、入力規則のリストにはその影響を出させないためです。
なお、構造化参照とは"テーブル名[列名]"という書式によって、テーブル中の特定の列などを参照する方法です。
これにより、どのような範囲のデータを対象にしているか、わかりやすく判断できるほか、同一ブック内ではテーブル名が「名前の管理」で登録されているため、他のシート上にあるテーブルを参照する場合でも、シート名を記載せずに参照できるようになります。
喜び勇んで「元の値」に『=利用者リスト[利用者氏名]』と入れて設定しようとしましたが、下の画像のとおりエラーとなりうまくいきません。
どうやら『=』で設定する場合は数式でなければならないようです。
そこで何とかならないものかとWeb検索してみたところ、方法がありました。INDIRECT関数を使うと構造化参照ができるのです。
上の画像のとおり『=INDIRECT("利用者リスト[利用者氏名]")』として「元の値」設定することができました。
INDIRECT関数の使い道としては目からウロコです。
下の画像のとおり、入力規則の設定後、利用者名のフィールドに入力しようとする際、リストが正しく表示されていることが確認できます。
なお、元となる利用者リストのテーブルは50音順に並べておきましょう。
同様に実施内容についても、入力規則に実施内容テーブルを使うため『=INDIRECT("実施内容テーブル[実施内容]")』と設定します。
担当者は、パワークエリで職員テーブルから作成した職員リストというテーブルを使いますが、この場合は職員の氏名ではなく姓だけの表示名を使うので、『=INDIRECT("職員リスト[表示名]")』で設定します。
以上により記録データシート上の記録テーブルに介護支援記録を入力する際、他のテーブル中の必要な情報を整理された形で簡単に参照できるようになりました。
こうして記録管理システムのメインとなる記録テーブルが完成しましたので、次はこのテーブルから必要な情報を抜き出し、印刷など出力を行う部分を作成する段階に進むことにします。
>次回の投稿を読む