![从这组格式不一致的日期中提取年份的最佳方法是什么?](https://linux22.com/image/1593408/%E4%BB%8E%E8%BF%99%E7%BB%84%E6%A0%BC%E5%BC%8F%E4%B8%8D%E4%B8%80%E8%87%B4%E7%9A%84%E6%97%A5%E6%9C%9F%E4%B8%AD%E6%8F%90%E5%8F%96%E5%B9%B4%E4%BB%BD%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我在 Excel 中有一个大型数据集,其中包含大量有关 Steam 游戏的信息。我希望能够提取每个游戏的发布日期,然后将其与我拥有的另一个数据集一起使用。不幸的是,发布日期的格式差异很大
例如
Nov 15 2016
,,,,,。Early 2017
Coming Soon
1/01/2017
Coming 2017
我希望能够从每个单元格中获取年份。2017
或者如果未检测到日期则返回 false。我该怎么办?我正在使用 office 365 excel。
答案1
借助 UDF(用户定义函数)和公式,您的问题可以得到解决:
怎么运行的:
- 右键点击在工作表标签& 从弹出菜单中单击查看代码。
复制粘贴本守则模块。
Function RetNum(Str As String) Dim xRegEx As Object Set xRegEx = CreateObject("vbscript.regexp") xRegEx.Global = True xRegEx.Pattern = "[^\d]+" RetNum = xRegEx.Replace(Str, "") Set xRegEx = Nothing End Function
在 VB 编辑器窗口中单击工具然后 参考并确保Microsoft 脚本运行时DLL 已包含在内。
- 返回工作表。
- 输入此公式并填写。
=IF(ISTEXT(A1),RetNum(A1),YEAR(A1))
根据需要调整单元格引用。
答案2
假设年份范围是从 1980 年到 2030 年,所有年份均为 4 个字符,测试文本位于 A1 中。使用 mid() + 递归 iferror() 和 find() 就可以了。
执行 :
=MID(A1,(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(FIND(1980,A1),FIND(1981,A1)),FIND(1982,A1)),FIND(1983,A1)),FIND(1984,A1)),FIND(1985,A1)),FIND(1986,A1)),FIND(1987,A1)),FIND(1988,A1)),FIND(1989,A1)),FIND(1990,A1)),FIND(1991,A1)),FIND(1992,A1)),FIND(1993,A1)),FIND(1994,A1)),FIND(1995,A1)),FIND(1996,A1)),FIND(1997,A1)),FIND(1998,A1)),FIND(1999,A1)),FIND(2000,A1)),FIND(2001,A1)),FIND(2002,A1)),FIND(2003,A1)),FIND(2004,A1)),FIND(2005,A1)),FIND(2006,A1)),FIND(2007,A1)),FIND(2008,A1)),FIND(2009,A1)),FIND(2010,A1)),FIND(2011,A1)),FIND(2012,A1)),FIND(2013,A1)),FIND(2014,A1)),FIND(2015,A1)),FIND(2016,A1)),FIND(2017,A1)),FIND(2018,A1)),FIND(2019,A1)),FIND(2020,A1)),FIND(2021,A1)),FIND(2022,A1)),FIND(2023,A1)),FIND(2024,A1)),FIND(2025,A1)),FIND(2026,A1)),FIND(2027,A1)),FIND(2028,A1)),FIND(2029,A1)),FIND(2030,A1))),4)
p/s:此公式生成一个字符串。numbervalue()
如有必要,您可以使用它将其转换为数字。
希望能帮助到你。