見出し画像

人事データベースから、必要な項目だけピックアップする【クエリ関数を動的に】【Googleスプレッドシート】【労務システム】

まずは動画でどうぞ

給与ソフトのデータベースなど、の100列以上あるデータを取り扱うときの利用用途を想定しています。

100列のうち、
入社データを扱う時は「A」「B」「X」が必要
移動データとしては、「C」「M」「N」が必要
などと場合によって必要列の数も列番号も異なるケースです。

クエリ関数では対応できない

特定の列を表示する関数としては、クエリ関数のセレクト句が一般的かと思います。

=QUERY(範囲 , " select A , B ") 
という表現です。

しかしながらこのケースだと、パターンが20個あれば、20の事前設定をしないといけません。上の例でしたら
=QUERY(範囲 , " select A , B , X ") 
=QUERY(範囲 , " select C , M , N ")
というふうな式ですね。

利用方法と説明

構成は「DB」シートと「表示」シートです。

「DBシート」で設定をします。

人事ソフトから落としてきたデータを、張り付ける場所と
項目名とそれに応じて表示する項目の設定です

「表示シート」の関数

「A1」データの入力規制でDB項目を選択できるようにしました。関数ではありません。

「B1」=match(A1,DB!A1:A7,0)

画面上、2と表示されています。「人事異動」の場合、「DB」の2行目となるように、match関数を使っています。

「B2」=filter(indirect("DB!B"&B1&":M"&B1),indirect("DB!B"&B1&":M"&B1)<>"")

「B1」に表示された行数で、空白ではないセルを表示させています。

「B3」=filter(DB!B9:M31,indirect("DB!B"&B1&":M"&B1)<>"")

データ範囲から、「2行目」が空白ではない列を表示させます。
「2」が「3」になったら連動するように、indirect関数を使っています。

「B2」「B3」は連動していません。
「B3」だけでも良かったですが、〇ではなくコメントなど記載して抽出するときに、その表示があったほうが使いやすそうだったので「B2」を追加していました。

人事ソフトは項目数が多くて大変ですね!
実際のスプレッドシートです。

https://docs.google.com/spreadsheets/d/1-hDGz3i0OKkbhNTJuTsA91QgXXZ0_SxPhjKnWnVI1m4/edit#gid=0

どんな記事ならサポートしてみようと思えるか、ご要望ありましたら教えてくださいね。