交替复制的单元格的条件格式

时间:2018-10-26 20:29:20

标签: google-sheets spreadsheet

我正在尝试获取一个条件格式公式,以突出显示列中重复单元格的组,但也要区分它们。

使用公式=COUNTIF($J:$J,J1)>1时,我得到:

123 (green)
123 (green)
345
567
765 (green)
765 (green)
812 (green)
812 (green)
876

但是我想要更多类似的东西:

123 (green)
123 (green)
345
567
765 (yellow)
765 (yellow)
812 (red) (or green again)
812 (red) (or green again)
876

我不一定需要为每个组使用不同的颜色(尽管那确实很好),但是在组之间至少要交替使用两种颜色,因此我不能轻易地在视觉上区分相邻的两个重复单元组。

对于最后一部分,我正在使用公式=isodd(match($J2,unique($J$2:$J)))(加上iseven来将其与另一种颜色一起使用),这个问题是它还突出显示了唯一的单元格(我不要)。

是否有一种方法可以将两个或另一个公式完全结合起来完成此任务?

2 个答案:

答案 0 :(得分:2)

添加此脚本,工作表将突出显示重复的行。 每次您编辑工作表时,它都会自动更新。

因此,您可以插入行,添加行或更改行,它仍将正确更新。

您可以查找如何安装脚本,但是它很容易。让我知道是否卡住了。

function onEdit() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
    var lastRow = sheet.getLastRow();

    var range = sheet.getRange(1,1,lastRow);

  sheet.getRange("A1:A").setBackground("white");
    var rowValues = range.getValues();

    var color1 = "#DBAB30";      // light yellow
    var color2= "#3DA843";      // light green
    var color = color1;

    if (lastRow < 2) return;    // do nothing if only 1 row.

    var dupCount=0;
    var row;
    for (row=1; row<=lastRow; row++)
    {
      if (row == lastRow){  // check if past the last row.
            applyBackground(row-1,dupCount);
      }
      else{
            if (rowValues[row][0] == rowValues[row-1][0])
            {
                 dupCount++;    
            }
            else
            {
                 applyBackground(row-1,dupCount);
                 dupCount=0;
            }
      } // end if not last row
    } // end loop

  function applyBackground(row,dupCount){
       if (dupCount > 0)
       {
           var colorRange = sheet.getRange(row-dupCount+1,1,dupCount+1);
           colorRange.setBackground(color);
           if (color == color1) {color = color2} else {color=color1};
       }  
  }

}

产生此输出:

enter image description here

我想你要的是什么?

答案 1 :(得分:1)

这不是您想要的,但是您可以从第2行开始应用此公式来识别奇数组:

kubectl

,偶数组也类似:

=and(or(A2=A1,A2=A3),isodd(sumproduct((A$1:A1<>A$2:A2)*(A$2:A2=A$3:A3))))

enter image description here

如果您尝试将其应用于第1行,则将获得#REF!错误。我想找出从第1行开始的重复值的唯一方法是将第三条规则应用于整个范围:

=and(or(A2=A1,A2=A3),iseven(sumproduct((A$1:A1<>A$2:A2)*(A$2:A2=A$3:A3))))

并修改原始公式为

=and(A$1=A$2,countif(A$1:A1,"<>"&A1)=0)

=and(or(A2=A1,A2=A3),isodd(sumproduct((A$1:A1<>A$2:A2)*(A$2:A2=A$3:A3))+(A$1=A$2)))

enter image description here