如何对 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.
找到我的文件
- [https://docs.google.com/spreadsheets/d/1ce5sppfkftIh0uDsODDmXb_9Cd-hfh5w_q3lIoIS5o8/edit?usp=sharing]
我有一个 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]);
})
大家早上好。
我正在处理 Google 表格。我正在使用 Apps 脚本。你可以在下面link.
找到我的文件- [https://docs.google.com/spreadsheets/d/1ce5sppfkftIh0uDsODDmXb_9Cd-hfh5w_q3lIoIS5o8/edit?usp=sharing]
我有一个 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]);
})