有没有办法在两列中突出显示值的重复组合,而不管顺序如何?

Is there a way to highlight duplicate combinations of values in two columns, regardless of the order?

我有一个 UFC 数据库,我正在寻找重赛。因此,我需要找到重复的名称组合;出现不止一次的组合。但是,由于首战的胜者可能会输掉复赛,所以无论出现的顺序如何,我都需要找到重复的。

这是我的数据库的结构: database example。 斗士1胜斗士2负

这是一个 link 到数据库(从 kaggle 得到的):https://docs.google.com/spreadsheets/d/19ISNhYFdGzgLZz1x4h2v_Q5Pq0cofw2rkUtwk3xPXGQ/edit?usp=sharing

请随意使用它。

关于如何解决这个问题有什么想法吗?

这是我理想中想要的结果示例:

image example

只是对重复项的简单突出显示。

为了给你更准确的帮助,如果你能举例说明你想要的结果会很有帮助。如前所述,如果有很多重复项并且你用不同的颜色标记每个组,它可能会在视觉上造成混淆。

无论如何,我已经用 Apps Script and Spreadsheet Service 编写了几个函数,您可能会发现它们对您的项目有用。

代码 1

使用这些功能,您将能够获取您之前定义的两个战士参加的所有战斗:

function main() {
  var name1 = 'Conor McGregor'
  var name2 = 'Nate Diaz'
  var result = findDuplicates(name1, name2)
  console.log(result)
}

function findDuplicates(name1, name2) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Ark1')
  var lastRow = sheet.getLastRow()
  var lastCol = sheet.getLastColumn()
  var range = sheet.getRange(1, 1, lastRow, lastCol).getValues()
  var result = []
  for (var i = 0; i < range.length; i++) {
    if (range[i].includes(name1) && range[i].includes(name2)) {
      result.push(range[i])
    }
  }
  return result
}

代码 2

使用此功能,您可以在第三列中添加每对战士的相同编号。这样,很容易将“添加数字”更改为“给单元格涂上颜色”。

function findPairs() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Ark2')
  var lastRow = sheet.getLastRow()
  var lastCol = sheet.getLastColumn()
  var range = sheet.getRange(1, 1, lastRow, lastCol).getValues()
  var indexToSkip = []
  var k = 0
  for (var i = 0; i < range.length; i++) {
    if (!indexToSkip.includes(i)) {
      var match = range[i]
      indexToSkip.push(i)
      sheet.getRange(i + 1, 3).setValue(k)

      for (var j = i + 1; j < range.length; j++) {
        if (range[j].includes(match[0]) && range[j].includes(match[1])) {
          indexToSkip.push(j)
          sheet.getRange(j + 1, 3).setValue(k)
        }
      }
      k = k+1
    }
  }
}

参考文献: