0

予定を記録するためのスプレッドシートを作成しました。このスプレッドシート内には動的なドロップダウンリストがあるので、リスト1の選択肢はリスト2のオプションを入力します。データの検証を相対的な方法、具体的には範囲からのリスト(スクリプトの有無にかかわらず)にコピーする方法Googleシート

セルC2:クライアント - クライアント1またはクライアント2(これは。例を用い、実際のリストが拡大する)

セルC2の場合=クライアント1、アドレスは、ドロップダウンは以下の通りである:

セルC3:アドレス - アドレス1またはアドレス2

セルC2 =クライアント2の場合、アドレスドロップダウンは次のようになります。

セルC3:アドレス - アドレス3またはアドレス4.

これは定数であり、列から列にコピーできるため、クライアントリストのデータ検証は簡単です。ただし、依存アドレスリストのデータ検証は、常に列Cを参照し、相対クライアントリストとの接続が失われるため、複数の列にまたがってコピーすることはできません。

セルの実際のデータの検証は、C3(アドレス一覧)は以下の通りです:

セル範囲= 'DIARY(V-2.1)' C3

基準= 'DIARY(V-2.1)'! !C53:C55

セルC53:C55には、セルC2のクライアントの選択に応じて関連するアドレスをソートするフィルタ式が設定されます。これにより、C3のアドレスリストが生成されます。

私はこれらの別々の予定ごとにフィルタ機能を使用しているので、列ごとにこれらの予定スロットが10セットあることに注意する価値はあるかもしれません。しかし、これは面倒ですカラムCからカラム(またはデータ検証のみ)をコピーし、そのカラムのフィルタ関数を基準にしたままにする必要があります。

例のスプレッドシートの下のリンクを参照してください。これはすべて意味があります。この例では、列Cを列Dにコピーし、アドレス一覧のデータ検証は10の予定スロットすべてを切り離しました。 (全て編集するための権限は無料です。)

https://docs.google.com/spreadsheets/d/1sOlQEzG1D29RaY86YeR1Da--c8t94J-ZAGjv52U4dsY/edit#gid=1950191921

注:これらの細胞は、リストをドロップダウンする必要があります - リストの範囲から - この特定のスプレッドシートの機能のために。

誰かがこれを手伝うことができれば、フォーラムを徹底的に洗い流して解決策を見つけることができないので、これは非常に高く評価されます。

https://www.youtube.com/watch?v=ZiYnuZ8MwgM&feature=youtu.be

+0

私たちは本当にでも、私は自分で見つけることができたことはありませんブログの記事に私を指して、いくつかの助けや指導を必要とする、あなた –

+0

私は理解のためにあなたの仕事をするためにここにはありません。何かが評価されています私は怠惰な笑を意味するものではありません –

+0

[このヘルプページ](https://stackoverflow.com/help/on-topic)で見ることができるように、「* **上記のカテゴリのいずれかに該当する場合でも、**お勧めする**、または本、ツール、ソフトウェアライブラリ、**チュートリアルまたはその他のオフサイトリソース**を見つけるための質問は、 * " –

答えて

0

Googleシートは、現在データ検証の参照を充填/コピーための組み込みソリューションを持っているかいない:私はこの使用してJavaスクリプトを達成するために思われる(ちなみに私の頭の上にある)このビデオを見ました数式は比較的です。しかし、すでにGoogle Docs forum postに素晴らしいスクリプトを書いている人もいます。答えとしてリンクだけを避けるために、ここでスクリプトと指示をコピーします。 Google DocsフォーラムのAD:AMへの寄付。

そのスクリプトを使用する方法

  1. は、データ検証ルールをコピーする間でセルの範囲を選択し、比較的
  2. 検証+カスタムメニューから、適切なオプション(すべてを選択します相対参照、左上のセルの検証が範囲の残りの部分にコピーされる
  3. 列絶対、または行を絶対)

Link to original solution's example Google Sheets with script already included - 自分のコピーを保存してから使用することができます。

または最初から再作成するには、ここにスクリプトがあります。

function onOpen() 
{ 
    SpreadsheetApp.getActiveSpreadsheet().addMenu 
    (
    "Validation+", 
    [ 
     {name: "Copy validation (all relative references)", functionName: "copyValidation"}, 
     {name: "Copy validation (relative rows, absolute columns)", functionName: "copyValidationColumnsAbsolute"}, 
     {name: "Copy validation (absolute rows, relative columns)", functionName: "copyValidationRowsAbsolute"} 
    ] 
); 
} 

function copyValidation(rowsAbsolute, columnsAbsolute) 
{ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var r = ss.getActiveRange(); 
    var dv = r.getDataValidations(); 
    var dvt = dv[0][0].getCriteriaType(); 
    if (dvt != SpreadsheetApp.DataValidationCriteria.VALUE_IN_RANGE) return; 
    var dvv = dv[0][0].getCriteriaValues(); 
    Logger.log(dvv); 
    for (var i = 0; i < dv.length; i++) 
    { 
    for (var j = i ? 0 : 1; j < dv[0].length; j++) 
    { 

     dv[i][j] = dv[0][0].copy().withCriteria(dvt, [dvv[0].offset(rowsAbsolute ? 0 : i, columnsAbsolute ? 0 : j), dvv[1]]).build(); 
    } 
    } 
    r.setDataValidations(dv); 
} 

function copyValidationRowsAbsolute() 
{ 
    copyValidation(true, false); 
} 

function copyValidationColumnsAbsolute() 
{ 
    copyValidation(false, true); 
} 
+0

スクリプトを編集せずに驚くほど効果的に動作します。あなたの時間と労力は非常に高く評価されています。他の多くの人に役立つでしょう –

+0

それはあなたのために働いてうれしい - 喜んで助ける! – moriah

関連する問題