Сортировка столбцов Excel по возрастанию в порядке возрастания
У меня есть недельный диапазон данных, который содержит дату начала недели и дату окончания в формате мм / дд / гг / мм-дд / гг, я пытаюсь отсортировать столбец, но он не сортируется должным образом, Помогите мне в этом, пожалуйста.
Week
01/02/17-01/08/17
01/02/17-01/08/17
01/02/17-01/08/17
02/01/16-02/07/16
02/01/16-02/07/16
02/13/17-02/19/17
02/13/17-02/19/17
03/07/16-03/13/16
03/07/16-03/13/16
03/20/17-03/26/17
03/20/17-03/26/17
05/02/16-05/08/16
05/02/16-05/08/16
08/08/16-08/14/16
08/08/16-08/14/16
09/05/16-09/11/16
09/05/16-09/11/16
10/31/16-11/06/16
10/31/16-11/06/16
3 ответа
Пожалуйста, используйте эту формулу рядом со столбцом недели. Предполагая, что ваши значения даты начинаются в A2
введите эту формулу =DATEVALUE(LEFT(A2,8))
в B2
и сортировать от наименьшего к наибольшему по столбцу B
, Ваши даты начала должны быть правильно отсортированы.
Excel читает данные о вашем недельном диапазоне в виде строки (текст). Это означает, что при сортировке он будет читать первый символ, а затем сортировать по нему. Вот почему ваши данные сортируются от 1 до 10 (соответствующие месяцы, так как ваши даты в мм / дд / гг)
Сравните это с правильным столбцом даты, в котором даты хранятся в виде чисел. Затем Excel будет сортировать по календарю от первого до последнего или наоборот.
То, что вам нужно сделать, это разделить даты начала и окончания, используя некоторые строковые манипуляции (комбинация date
а также left
а также mid
приходит в голову). Затем сортируйте по полученным датам.
Редактировать Создать новый столбец с датой начала каждой недели, используя =DATE(2000+MID(A2,7,2),LEFT(A2,2),MID(A2,4,2))
(при условии, что ваш заголовок данных находится в A1 и что первый интервал начинается в ячейке A2).
Date
Функция позволяет создать дату, указав год, месяц и день. Вы предоставляете эти три с помощью Mid
а также Left
,
Mid
находит конкретные символы в строке на основе заданной начальной позиции и требуемой длины.
Left
даст вам самые левые символы строки.
Пожалуйста, используйте следующий пример кода Aspose.Cells, и он должен решить вашу проблему. Вы можете изменить код в соответствии с вашими потребностями.
Пожалуйста, проверьте скриншот примера вывода кода для справки. На скриншоте также показана формула, которая использовалась внутри кода.
C#
Workbook wb = new Workbook("AfterSorting.ods");
Cells cells = wb.Worksheets[0].Cells;
int maxRow = 19;
for (int i = 1; i <= maxRow; i++)
{
cells[i, 1].Formula = "=DATEVALUE(LEFT(A" + (i + 1) + ",8))";
}
wb.CalculateFormula();
DataSorter sorter = wb.DataSorter;
sorter.Key1 = 1;
sorter.Order1 = SortOrder.Descending;
sorter.Sort(cells, 1, 0, maxRow, 1);
wb.Save("ooo.xlsx");
Примечание: я работаю в качестве разработчика евангелиста в Aspose