excel如何通过powerquery生成某一区间内所有日期

excel如何通过powerquery生成某一区间内所有日期,第1张

选中表格,点击上方菜单栏上的“数据”。

2

/5

在数据菜单下的获取和转换命令组区域点击“从表格”,在d出的创建表对话框中勾选 “表包含标题”,点击确定按钮,将日期加载到PowerQuery编辑器。

3

/5

在编辑器中的添加列菜单下点击“自定义列”。

4

/5

在d出的自定义列对话框中“新列名”下面输入列标题,在公式下面输入=Date.Day(),在可用列下面双击日期所在列的列标题将其引用到参数中,点击确定按钮,即可批量提取出日期中的“天”。

5

/5

提取完成后点击主页菜单下的“关闭并上载”,即可加载回Excel工作表中。

当我们将数据导入到PowerQuery时,首先需要将每个字段调整为正确的类型,对于日期字段,导入进来时很可能是文本格式,这时就需要先调整为标准的日期类型。

如果是正常的日期格式,比如下面这两种日期格式:

左边是我们常用的"年月日"格式,右边是美式的"月日年"格式,对于这两种文本格式,都可以点击字段名左边的格式符号直接调整为日期型:

打开APP查看高清大图

但是有时也会碰到没法直接调整的情况,以下面这种格式为例:

这是英国以及北欧常用的日月年格式的日期,我们如果按上面的方式直接转换,结果会变成这样的:

除了第二个日期,其他都报错了,对于第二个日期虽然没有报错,但结果也不正确,本来是2022年8月9日,但转换的结果是2021年9月8日,从这里可以看出,系统还是把这个日期当成"月日年"来转换了,当第一个日期超过12的时候,由于月份不可能超过12的,那么返回的结果就是错误。

碰到这种格式的日期,怎样才能转换为标准的日期类型呢?介绍三种方法。

1. 修改区域设置

点击字段左侧的类型图表,找到最下面的“使用区域设置”。

打开APP查看高清大图

然后在d出的窗口中将数据类型修改为"日期",区域选择为"英语(英国)":

打开APP查看高清大图

通过这样的设置以后,这一列的数据类型就调整为正常的日期型了。

2. 利用Date.FromText的Culture参数

对于这种转换还可以使用M函数Date.FromText,它的第2个参数不要省略,这种格式是英式日期,就可以使用英国的Culture代码"en-GB",添加自定义列:

Date.FromText([日期],"en-GB")

打开APP查看高清大图

这样也可以直接转换成正常的日期。

上面两个方法,需要事先知道这种格式的日期是哪个国家的标准、或者清楚该国家的Culture代码,而很多情况下,我们并不知道这些信息,那么还有下面第三种方法。

3. 利用Date.FromText的Format参数

这个方法同样是是使用Date.FromText添加自定义列,不过这里使用该函数的Format属性,写法如下:

Date.FromText([日期],[Format="d/M/yyyy"])

打开APP查看高清大图

这个方法,无论这个日期格式是哪个标准哪个国家,只要找出日期的规律,把这个日期格式构造出来,利用Format自动识别出其中的年月日信息。

这里要注意的是,需要用大写的M表示月份,不能是小写,因为小写的m表示的是分钟(minute)。

并且只要文本中有规律性的年月日信息,哪怕这个日期不是任何一个国家的标准,都可以利用这种方式来转换,比如下面这种格式的日期,用星号分割的日月年信息:

用上面的前两个方法,无论怎么转换都会报错,但是用第三种方法同样可以轻松转换:

Date.FromText([日期],[Format="d*M*yyyy"])

打开APP查看高清大图

分隔符是星号,就在Format中构造个以星号分割的日期格式,以便让Date.FromText识别到年月日信息。

再看一个例子,八位编码的日月年,同样用这种方式轻松转换:

打开APP查看高清大图

通过上面几种方式,就可以处理大多数文本格式的日期了,尤其要熟练使用更普适的第三种方式,对于常规方式无法转换的,都可以尝试用Date.FromText函数来处理。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11744610.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存