Excel 中的 Munging 时间序列
Munging Time Series in Excel
我想按日期从最新到最早对数据进行排序。我的问题是我拥有的数据具有 mm-dd-yyyy
文本格式的日期。我可以使用 python 中的 Pandas
轻松清理它,但不知道 excel 中可用的工具。即使我尝试手动更改格式,它也不会删除连字符。
我认为,由于格式不佳,当我对数据进行排序时,它首先对月份进行排序,然后最终将年份组合在一起,而不是按时间顺序排列数据。
这个基本的东西一定很容易解决,但我还没有找到可以使用的工具。
提前致谢!
使用
解决
Selection.TextToColumns Destination:=Range("A5"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="-", FieldInfo:=Array(Array(1, 3), Array(2, 1), Array(3, 1)), _
TrailingMinusNumbers:=True
通过将连字符标识为分隔符并将每个日期段分成其自己的单元格来消除连字符。
非常抱歉使用 \selection\,我知道人们讨厌它。
您可以解析日期并按以下方式排序:
from datetime import datetime
l=["2012-10-09","2011-12-12","2012-10-08","2010-03-03"]
dates=[]
for v in l :
dates.append(datetime.strptime(v, "%Y-%m-%d" ))
dates.sort()
啊所以你想完全在 Excel 中完成它,使用 vba 和日期解析为 mm dd 和 yyyy 中的每一个创建一个新列,这样你的日期实际上存储在 Excel 以其自己的内部格式,因此如果 2011-12-12 在单元格 A1 中 =DAY(A1) 将只在新列中为您提供日期部分,但我记得我认为 Excel 足够聪明没有那个就对日期进行排序(因为它实际上在内部将日期作为序列号),但是你去那里当然还有月份和年份功能......检查日期下的功能列表......
当您将日期格式更改为 mm/dd/yyyy 时,是否所有单元格都拒绝更改格式?或者只是其中的一部分?单击拒绝更改的单元格之一并查看公式栏。如果您看到类似 '01-01-2015
的内容,则 '
就是这里的罪魁祸首。这告诉 excel 将此单元格视为纯文本。如果它在单元格 A1 中,请尝试在另一个单元格中 =DATEVALUE(A1)
将其转换为日期而不是字符串,并且您应该能够根据需要格式化该单元格。
几天前我 运行 遇到了类似的问题。 Excel 不接受我将单元格格式化为日期的命令。我找不到当时使用的确切站点,但此人遇到了相同的问题。他顺便提到了两种方法,其中一种对我有用,还有第三种是那里接受的答案:
http://www.computing.net/answers/office/excel-will-not-change-a-cell-format-/8764.html
总结一下:
- 编辑(当您的单元格突出显示时按 F2 键)其中一个包含日期的单元格,并确保其中有日期
没有空格或不可见字符
- 如果这不起作用,则设置下一列以乘以您的
日期列乘 1,然后尝试将下一列转换为日期
格式。
一个令人沮丧的解决方案,我同意。
如果所有其他方法都失败了,您可以尝试 VBA 中的 CDate() 函数,因为您用 VBA 标记了这个问题,但这不是必需的。
您不需要任何代码即可将看起来像日期的文本更改为实际日期。
Select 日期列,然后单击数据 > 文本到列 > 下一步 > 下一步
在此对话框中select数据类型为日期,如果文本显示为month/day/year顺序,则选择MDY的顺序。然后点击完成。所有单元格现在都将包含真实日期,并且可以按时间顺序排序。
我想按日期从最新到最早对数据进行排序。我的问题是我拥有的数据具有 mm-dd-yyyy
文本格式的日期。我可以使用 python 中的 Pandas
轻松清理它,但不知道 excel 中可用的工具。即使我尝试手动更改格式,它也不会删除连字符。
我认为,由于格式不佳,当我对数据进行排序时,它首先对月份进行排序,然后最终将年份组合在一起,而不是按时间顺序排列数据。
这个基本的东西一定很容易解决,但我还没有找到可以使用的工具。
提前致谢!
使用
解决Selection.TextToColumns Destination:=Range("A5"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="-", FieldInfo:=Array(Array(1, 3), Array(2, 1), Array(3, 1)), _
TrailingMinusNumbers:=True
通过将连字符标识为分隔符并将每个日期段分成其自己的单元格来消除连字符。
非常抱歉使用 \selection\,我知道人们讨厌它。
您可以解析日期并按以下方式排序:
from datetime import datetime
l=["2012-10-09","2011-12-12","2012-10-08","2010-03-03"]
dates=[]
for v in l :
dates.append(datetime.strptime(v, "%Y-%m-%d" ))
dates.sort()
啊所以你想完全在 Excel 中完成它,使用 vba 和日期解析为 mm dd 和 yyyy 中的每一个创建一个新列,这样你的日期实际上存储在 Excel 以其自己的内部格式,因此如果 2011-12-12 在单元格 A1 中 =DAY(A1) 将只在新列中为您提供日期部分,但我记得我认为 Excel 足够聪明没有那个就对日期进行排序(因为它实际上在内部将日期作为序列号),但是你去那里当然还有月份和年份功能......检查日期下的功能列表......
当您将日期格式更改为 mm/dd/yyyy 时,是否所有单元格都拒绝更改格式?或者只是其中的一部分?单击拒绝更改的单元格之一并查看公式栏。如果您看到类似 '01-01-2015
的内容,则 '
就是这里的罪魁祸首。这告诉 excel 将此单元格视为纯文本。如果它在单元格 A1 中,请尝试在另一个单元格中 =DATEVALUE(A1)
将其转换为日期而不是字符串,并且您应该能够根据需要格式化该单元格。
几天前我 运行 遇到了类似的问题。 Excel 不接受我将单元格格式化为日期的命令。我找不到当时使用的确切站点,但此人遇到了相同的问题。他顺便提到了两种方法,其中一种对我有用,还有第三种是那里接受的答案:
http://www.computing.net/answers/office/excel-will-not-change-a-cell-format-/8764.html
总结一下:
- 编辑(当您的单元格突出显示时按 F2 键)其中一个包含日期的单元格,并确保其中有日期 没有空格或不可见字符
- 如果这不起作用,则设置下一列以乘以您的 日期列乘 1,然后尝试将下一列转换为日期 格式。
一个令人沮丧的解决方案,我同意。
如果所有其他方法都失败了,您可以尝试 VBA 中的 CDate() 函数,因为您用 VBA 标记了这个问题,但这不是必需的。
您不需要任何代码即可将看起来像日期的文本更改为实际日期。
Select 日期列,然后单击数据 > 文本到列 > 下一步 > 下一步
在此对话框中select数据类型为日期,如果文本显示为month/day/year顺序,则选择MDY的顺序。然后点击完成。所有单元格现在都将包含真实日期,并且可以按时间顺序排序。