空でないセルの周囲に境界線を自動的に追加する


7

セルが空でないときにセルの境界線が自動的に適用されるようにしています。これには条件付き書式を使用できると思いましたが、それはオプションではないようです。

回答:


3

これは、setBorderメソッドを使用するスクリプト(「ツール」>「スクリプトエディター」)で可能です。ここに小さなデモスクリプトがあります

function onEdit() {
  var cell = SpreadsheetApp.getActiveRange();
  if (cell.getValue() !== "") {
    cell.setBorder(true, true, true, true, true, true);
  }
  else {
    cell.setBorder(false, false, false, false, false, false);
  }
}

これはすべての編集で実行され、空でない場合はアクティブなセル/範囲に境界線を付け、それ以外の場合は削除します。

ただし、上記のロジックは単純すぎます。編集によってセルが空白になっているが、隣接するセルが空白でない場合は、一部の境界線を保持する必要があります。これは、すべての境界線を削除し、空白でないセルの周りに再描画することでこれに対処するバージョンです。

function onEdit() {
  var range = SpreadsheetApp.getActiveSheet().getDataRange();
  range.setBorder(false, false, false, false, false, false);
  var values = range.getValues();
  for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
      if (values[i][j] !== "") {
        range.getCell(i + 1, j + 1).setBorder(true, true, true, true, true, true);
      }
    }
  }
}

しかし、すべての境界線が絶え間なく点滅することは、煩わしく、ゆっくりと煩わしいものです。このペイントジョブは、メニューから手動で呼び出すことをお勧めします。これが私のスクリプトの最終バージョンです。スプレッドシートが開かれるたびに、メニュー項目「カスタム>空でないセルの境界線」が追加されます。

function onOpen() {
 var menu = [{name: "Borders for nonempty cells", functionName: "borders"}];
 SpreadsheetApp.getActiveSpreadsheet().addMenu("Custom", menu);
}

function borders() {
  var range = SpreadsheetApp.getActiveSheet().getDataRange();
  range.setBorder(false, false, false, false, false, false);
  var values = range.getValues();
  for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
      if (values[i][j] !== "") {
        range.getCell(i + 1, j + 1).setBorder(true, true, true, true, true, true);
      }
    }
  }
}

0

MS Excelで条件付き書式を使用して、その本をGoogleシートにインポートするだけで、それを行うことができました。

フォーマットの条件に触れない限り、境界線の条件付きフォーマットを維持します。このような場合、条件付き書式は境界線に対して機能しなくなります。

Googleが修正すべき実装です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.