Сортировка столбцов 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

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