web-dev-qa-db-ja.com

Googleスプレッドシートの数式のラジオボタン

そこで、チェックボックス付きのラジオボタンチューザーテーブルを作成して、必要な行を選択できるようにしました。これにより、この行の値が結果セルに表示されます...

これが基本原則です。

このように、どのチェックボックスをクリックしても、そのセルの値は0(FALSE)ではなく1(TRUE)になり、SUMPRODUCT数式を使用すると、すべての行にブールチェックボックスが乗算されるため、チェックボックスがチェックされていない場合、プロダクションはゼロになり、チェックボックスがチェックされている場合、値は残ります。

B8のこの例では、次のようになります。

B8 = A2*B2 + A3*B3 + A4*B4 = 0*3 + 1*8 + 0*12 = 8

値が数値である限り、これはうまく機能します。

今、私は同じことをしようとしていますが、文字列値を使用しています..

このようなもの:

何か案が?

3
Yarden Cohen

解決:

  • IFを使用して、対応する列Bを取得します
  • 結果の配列を結合します

サンプル:

=ARRAYFORMULA(TEXTJOIN(",",1,IF(A2:A4,B2:B4,)))
4
TheMaster

チェックボックスとGoogleApps Scriptを使用しました。ここで、列A(1)と列B(2)にチェックボックスが含まれています。例えば:

Column A and Column B checkboxes

function onEdit(evt) {

    var range = evt.range;
    var val = range.getValue();
    var row = range.getRow();
    var col = range.getColumn();

    // -------------------------------------
    // --- Cannot be both add and delete ---
    // -------------------------------------
    if (col == 1) {
        if (val) {
            SpreadsheetApp.getActiveSheet().getRange(row,2).setValue('FALSE'); 
        }
    }
    else if (col == 2) {
        if (val) {
            SpreadsheetApp.getActiveSheet().getRange(row,1).setValue('FALSE'); 
        }
    }
}
1
Wai

コードを共有したいのですが。ラジオボックスの設定についてもonStart()を実行してください。

function onEdit(e) {

  // radio button
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var gsheetrange = gsheet.getDataRange().getValues();  
  var rowcount = gsheetrange.length; // find end of row

  for(var i = 0; i <= rowcount; i++) { // start from 0. 
      if (i==gedited){
      gsheet.getRange(gedited, 2).setValue("true"); 
   }
   else
   {
    gsheet.getRange(i, 2).setValue("false"); 
   }
  }
}
0
Alf Bae