Доброе утро сообществу.
Я работаю над Google Таблицами. Я использую скрипт приложений. Вы можете найти мой файл по следующей ссылке.
У меня есть один лист с именем «журнал», где у меня есть данные моего журнала.
Журнал | ||||
---|---|---|---|---|
Анне | 2022 | |||
Моис | 3 | |||
Дата | Компте | Детали операций | Дебет | Кредит |
06 марта | 6 | Грувер | 24,00 | |
06 марта | 512 | банк | 24,00 | |
номер фактуры | ||||
12 марта | 7 | Концерт автобусных балладиумов | 135,00 | |
12 марта | 53 | Кэссе | 135,00 | |
номер клиента | ||||
28 марта | 6 | Грувер | 24,00 | |
28 марта | 512 | банк | 24,00 | |
номер фактуры | ||||
Totaux репортер | 183,00 | 183,00 |
У меня также есть один лист под названием «большая книга», где я пытался сообщить данные листа «журнал» и отсортировать данные счетов (столбец B) по возрастанию. Но, строка 9 со счетом "7" не в конце и должна быть в конце.
Дебет | Кредит | |||
---|---|---|---|---|
06 марта | 512 | 24 | ||
28 марта | 512 | 24 | ||
12 марта | 53 | 135 | ||
12 марта | 7 | 135 | ||
06 марта | 6 | 24 | ||
28 марта | 6 | 24 | ||
репортер | 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 + ')')
}
Можете вы помочь мне?
Заранее спасибо.
Хорошо, Купер, я изучил несколько уроков по созданию таблиц и редактирую пост.
Я не думаю, что вы видите даты как объекты Date(), потому что они неполные. Если они являются реальным объектом даты, вы можете получить их с помощью getValues() или просто изменить форматирование.
Если вы хотите сортировать по датам, то я думаю, что это data = data.sort(function (a, b) { return b[1] - a[1]; });
должно быть data = data.sort(function (a, b) { return b[0] - a[0]; });
, но в настоящее время он просто сортируется по алфавиту, потому что он не видит первый столбец как настоящие объекты Date ()
Хорошо, я пытаюсь указать формат моего столбца с датами как объекты Date() и пробую ваш код.
Если вы хотите отсортировать столбец B по тексту, а не по значению, измените его следующим образом.
data = data.sort(function (a, b) {
return ('' + a[1]).localeCompare(b[1]);
})
Большое спасибо @MikeSteelson! Вы решили мою проблему.
Ваши изображения листа немного малы и трудно читаемы, и если бы вы могли опубликовать их в виде таблицы, мы могли бы скопировать и вставить и использовать их, чтобы помочь вам с вашим кодом.