web-dev-qa-db-ja.com

1つの列がIMPORTRANGEを使用している場合、セルの位置を別のセルにロックする

あらゆる種類のレゴとそのコストのマスターリストがあるとします。 2列のみ。列Aはレゴタイプで、列Bはそのレゴのコストです。例:3x3 thin blockおよび1。またはsmall wheelおよび3。別のシートを作成したいので、それをcarと呼びましょう。これは、マスターリストから列AとBをインポートし、列Cを追加します。列Cには、 4つの車輪」。列Dは、各広告申込情報の費用であり、下部に合計があります。

IMPORTRANGEを使用すると、AとBをcarシートにプルできます。そのレゴ車に必要なすべての部品のC列に数字を追加し、D列は車のコストの合計を示します。ヘリコプターシートを作成するには、carシートから空のテンプレートを作成し、ヘリコプターを作成するC列に数値を入力します。

マスターリストに新しいレゴのピースを追加するまで、これはすべて正常に機能します。レゴプロジェクト(車とヘリコプター)のA列とB列は更新されますが、carheliシートのC(したがってD)列は間違っています。 A列とB列に項目を追加すると、すべてがシフトします。

私は何をしますか?

理想的には、各プロジェクトシートでこれを実現しています。これは実際のコードではなく、単なる考えです。マスターリストに新しいレゴを追加すると、テンプレート化されたプロジェクトシートは次のように応答します。

If (trigger that column A has updated)  {  
get.rowNum;  
//the row num where the part was added on master 
//sheet and on this sheet via importrange   

Insert.cell (column C, rowNum);  
//because the A and B column will already insert a  
//whole row in those columns. I don't want to insert   
//another whole row. But instead only insert a single  
//cell into column C on the same row number as where  
//the a and b updated.
}  

これにより、常にアルファベット順にすることができ、すべてのシートはカウント列を移動することなく新しいパーツを自動的に追加します。

デモへのリンクはこちら https://drive.google.com/folderview?id=0By-rLiXHjfqRc01QZmRISGprbm8&usp=sharing

3
allindal

この質問は、X-Y問題の例のように見えます( XY問題とは? を参照してください)。OPは、問題を解決する方法ではなく、解決策を実装する方法を尋ねているためです。

シナリオ
新しいパーツで更新されるパーツのリストを含むマスターシートを用意し、モデルシートを更新します。

  1. マスターシートで、モデルごとの各部品カウントの列を追加します
  2. モデル別のシートでは、IMPORTRANGEを使用してマスターシートからデータをインポートし、QUERYを使用して必要な列のみを表示します。

利点

  • 主な利点は、上記のアプローチにより、スプレッドシートをスクリプトなしで保持できることです。
  • このアプローチのもう1つの利点は、ほとんどのデータ入力を1か所で行えることです。
1
Rubén