web-dev-qa-db-ja.com

1つのシートの行をインポートしたシートの行に揃えます

従業員名のスプレッドシートがあります。 = IMPORTRANGE()を使用して、インポートされた各従業員名の横にある行の費用を追跡する別のスプレッドシートに名前をインポートしています。

問題は、誰かが最初のスプレッドシートに別の名前を追加してアルファベット順に並べ替えると、2番目のスプレッドシート(​​= IMPORTRANGE()を使用してインポート)の名前の順序が最初のスプレッドシートの変更を反映して変更されることです。

残念ながら、2番目のスプレッドシートの名前に関連付けられている行のデータも同様に移動しません。これらは静的なままなので、Johnの名前はTedのデータに関連付けられます。

名前が行を変更すると、関連する行のすべてのデータが名前とともに移動するように、2番目のスプレッドシートの行にある他のデータを名前に「添付」できるようにしたいと思います。

これは可能ですか?

3
GabeBrady

importrangeは行を並べ替えません。データのみをインポートします。

根本的な原因はデータ構造の不良です。2番目のスプレッドシート(​​費用あり)には、その費用が誰であるかに関する情報は含まれていません。これは許容できるデータ管理ではありません。各テーブルには識別子として使用できる列が必要です。 (理想的には、従業員の名前ではなく、従業員の数値ID。できれば列Aに配置してください)。識別列がある場合は、arrayformula(vlookup(...))の組み合わせを使用して、各個人のデータを検索できます。例:

=arrayformula(VLOOKUP(A2:A20, importrange("key", "Sheet1!A1:B30"), 2, false))

この式は別のスプレッドシートの列Bをインポートしますが、識別列Aが現在のシートの列Aにあるものと一致するようにデータを配置します。これは、2つのテーブル間の堅牢なリンクです。


現在のアプローチを維持したい場合、できることは従業員ごとに「追加日」列を追加し、常にその列でソートすることに同意します*。その後、新しい従業員は常に下部に表示されます。

(*)つまり、誰かがシートを忘れてアルファベット順に並べ替えるまで、費用は間違った人に請求されます。

1
user79865