如何对 B 列的数据进行升序排序并保留借方和贷方的关联值?

How to make an ascendant sort of the data for the column B and keep the associated values for the debit and credit?

大家早上好。

我正在处理 Google 表格。我正在使用 Apps 脚本。你可以在下面link.

找到我的文件

我有一个 sheet 名为“journal”,其中包含我的日记数据。

Journal
Année 2022
Mois 3
Date Compte Détail des opérations Débit Crédit
06-mars 6 Groover 24,00
06-mars 512 Banque 24,00
facture fournisseur n°
12-mars 7 Bus balladium concert 135,00
12-mars 53 Caisse 135,00
versement client n°
28-mars 6 Groover 24,00
28-mars 512 Banque 24,00
facture fournisseur n°
Totaux à reporter 183,00 183,00

我还有一个 sheet 名为“grand livre”,我试图在其中报告 sheet“期刊”的数据并将帐户数据(B 列)排序为上升方法。 但是,帐户“7”的第 9 行不在末尾,应该在末尾。

Débit Crédit
06-mars 512 24
28-mars 512 24
12-mars 53 135
12-mars 7 135
06-mars 6 24
28-mars 6 24
à reporter 183 183
function monGrandLivre() {
  var journal = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('journal')
  var data = journal.getDataRange().getDisplayValues().filter(r => (!isNaN(Date.parse(r[0]))))
  data = data.sort(function (a, b) {
    return b[1] - a[1];
  });
  var result = []
  result.push(['', '', '', 'Débit', 'Crédit'])
  data.forEach(function (donnees, ligne) {
    result.push([donnees[0], donnees[1], '', donnees[3], donnees[4]])
    if (ligne != (data.length - 1)) {
      if (data[ligne + 1][1] != data[ligne][1]) {
        result.push(['', '', '', '', ''])
        result.push(['', '', '', '', ''])
      }
    }
  })
  var grandLivre = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('grand livre')
  grandLivre.clearContents()
  grandLivre.getRange(1, 1, result.length, result[0].length).setValues(result)
  grandLivre.getRange(result.length + 1, 3).setValue('à reporter')
  grandLivre.getRange(result.length + 1, 4).setFormula('=sum(D2:D' + result.length + ')')
  grandLivre.getRange(result.length + 1, 5).setFormula('=sum(E2:E' + result.length + ')')
}

你能帮帮我吗?

提前致谢。

如果您想按文本而不是按值对 B 列进行排序,请更改如下

  data = data.sort(function (a, b) {
    return ('' + a[1]).localeCompare(b[1]);
  })