【问题标题】:Compare columns and rows for duplicates比较重复的列和行
【发布时间】:2020-06-09 19:24:42
【问题描述】:

泳池预订:

我正在尝试创建一个用于池预订的工作表。 A 列指示时间和单圈车道。即 5:15 AM 1 用于单圈车道。 E 列是日期。时间和单圈车道可以安排多天,但时间/单圈车道不能在同一天安排两次。如果一行中的 A 和 E 列与另一行中的 A 和 E 匹配,我想突出显示一行红色。在示例中,第 3 行和第 6 行都应突出显示为红色。

【问题讨论】:

  • 为什么不将车道号放在自己的列中?您将这两条信息混合在同一列中的方式使得使用它们变得更加困难并且使读者感到困惑。我强烈建议将车道放在单独的列中。另外,你会接受Apps Script 解决这个问题吗?
  • 绝对是把车道放在第二列的好建议。老实说,这对我来说是非常新的,所以我不确定如何使用 Apps 脚本。
  • 我认为仅使用公式很难做到这一点,Apps Script 将是这里的方法

标签: arrays google-sheets duplicates conditional-statements match


【解决方案1】:

所以现在你有三列,你想检查这些列中是否有任何重复。

类似这样的:

我做了这个简单的脚本:

function myFunction() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange("A1:C8");
  const values = range.getValues();
  
  for(let i = 0; i <  values.length; i++){
    let row = values[i];
    for(let j=0; j < values.length; j++){
      // Check if there are any row (excluding the current one) with the same values
      if(j != i && JSON.stringify(row) === JSON.stringify(values[j])){
        sheet.getRange(i+1, 1, 1, row.length).setBackground("red");
      }
    } 
  }
}

基本上,我会获取range 变量中的所有行,并检查其中的每一行以查看是否有重复的行。我认为代码本身是非常自我解释的,我认为唯一值得一提的是比较数组。在 javascript 中比较数组将是一个参考比较,请在this question 中阅读更多信息。

执行代码后的最终结果是:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 2015-06-26
    相关资源
    最近更新 更多