Как сделать восходящую сортировку данных для столбца B и сохранить связанные значения для дебета и кредита?

Доброе утро сообществу.

Я работаю над Google Таблицами. Я использую скрипт приложений. Вы можете найти мой файл по следующей ссылке.

  • [https://docs.google.com/spreadsheets/d/1ce5sppfkftIh0uDsODDmXb_9Cd-hfh5w_q3lIoIS5o8/edit?usp=sharing]

У меня есть один лист с именем «журнал», где у меня есть данные моего журнала.

Журнал
Анне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,00183,00

У меня также есть один лист под названием «большая книга», где я пытался сообщить данные листа «журнал» и отсортировать данные счетов (столбец B) по возрастанию. Но, строка 9 со счетом "7" не в конце и должна быть в конце.

ДебетКредит
06 марта51224
28 марта51224
12 марта53135
12 марта7135
06 марта624
28 марта624
репортер183183
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 + ')')
}

Можете вы помочь мне?

Заранее спасибо.

Ваши изображения листа немного малы и трудно читаемы, и если бы вы могли опубликовать их в виде таблицы, мы могли бы скопировать и вставить и использовать их, чтобы помочь вам с вашим кодом.

Cooper 09.04.2022 20:43

Хорошо, Купер, я изучил несколько уроков по созданию таблиц и редактирую пост.

Lucas Bordure 09.04.2022 21:10

Я не думаю, что вы видите даты как объекты Date(), потому что они неполные. Если они являются реальным объектом даты, вы можете получить их с помощью getValues() или просто изменить форматирование.

Cooper 09.04.2022 21:14

Если вы хотите сортировать по датам, то я думаю, что это data = data.sort(function (a, b) { return b[1] - a[1]; }); должно быть data = data.sort(function (a, b) { return b[0] - a[0]; });, но в настоящее время он просто сортируется по алфавиту, потому что он не видит первый столбец как настоящие объекты Date ()

Cooper 09.04.2022 21:23

Хорошо, я пытаюсь указать формат моего столбца с датами как объекты Date() и пробую ваш код.

Lucas Bordure 09.04.2022 21:58
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
5
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите отсортировать столбец B по тексту, а не по значению, измените его следующим образом.

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

Большое спасибо @MikeSteelson! Вы решили мою проблему.

Lucas Bordure 10.04.2022 11:13

Другие вопросы по теме