Excel Week列按升序sorting
我有一个星期范围数据作为下面,其中有星期和结束date的开始date,以mm / dd / yy -mm / dd / yy格式,我尝试对列进行sorting,但没有按要求sorting,请帮我。
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
请在本周栏旁边使用此公式。 假设您的date值以A2
开始,请在A2
中input此公式=DATEVALUE(LEFT(A2,8))
,并按列B
最小值sorting为最大值。 你的开始date应该现在正确sorting。
Excel将您的星期范围数据作为string(文本)读取。 这意味着sorting时,它会读取第一个字符,然后根据它进行sorting。 这就是为什么你的数据是从1到10sorting(相应的月份,因为你的date是年/月/日 )
将其与date存储为数字的适当date列进行比较。 然后,Excel将按照从第一个到最后一个的日历进行sorting,反之亦然。
你需要做的是使用一些string操作( date
和left
和mid
弹簧的组合)来分隔开始和结束date。 然后对结果date进行sorting。
编辑使用=DATE(2000+MID(A2,7,2),LEFT(A2,2),MID(A2,4,2))
创build一个每周开始date的新列(假设您的数据标题为在A1中,第一个时间间隔从A2开始)。
Date
function允许您创build一个date,提供年,月和日。 你使用Mid
和Left
来提供这三个。
Mid
根据给定的起始位置和所需的长度查找stringMid
特定字符。
Left
会给你一个string的最左边的字符。
请使用下面的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作为Developer Evangelist工作
- 如何在Aspose中按行和列字段值sorting数据透视表?
- 如何在电子表格范围(Aspose Cells)中添加边框?
- 为什么边框没有被应用到我的顶行(Aspose Cells)?
- Aspose cell exception:om.ctc.wstx.sr.ValidatingStreamReader不能转换为com.ctc.wstx.sr.ValidatingStreamReader
- Asp.net WebApi Aspose.Cells – 导出和下载excel
- 如何将我的数据字段放在我的Excel数据透视表(Aspose单元格)
- 在aspose中select范围
- Aspose-Cells:工作表上的自动filter,多于26列
- C#Aspose.Cells使用格式将数据设置为Excel文件