我搜索并找到了一些答案,但没有一个符合我的格式。如何将 2017 年 7 月 22 日 13:51 GMT 转换为 2018 年 7 月 22 日?我只需要以 excel 可以理解的格式提取日期,这样我就可以按从旧到新的顺序对其进行排序。谢谢!
答案1
单元格中有字符串A1,此公式:
=DATEVALUE(TRIM(LEFT(A1,11)))
将给出日期部分。(如果日期是一位数字或两位数字则有效,月份必须为三位字符)如果您的数据包含完整的月份名称而不是缩写,我们可以通过查找第三个空格字符 来获取日期:
=DATEVALUE(TRIM(LEFT(A1,FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),3)))))
为了虚拟专用网络,尝试以下用户定义函数(UDF):
Public Function DateMaker(s As String) As Date
Dim arr
arr = Split(s, " ")
DateMaker = CDate(arr(0) & " " & arr(1) & " " & arr(2))
End Function
使用正确的格式:
用户定义函数 (UDF) 非常容易安装和使用:
- ALT-F11 打开 VBE 窗口
- ALT-I ALT-M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx
要删除 UDF:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
要从 Excel 使用 UDF:
=DateMaker(A1)
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关 UDF 的详细信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其工作!
答案2
好的,我设法做到了……非常手动 :)。我不使用 excel,所以请原谅我的方法。
首先,我选择了包含所有 236 行数据的行。数据类似于 2017 年 7 月 22 日 13:51 GMT。所以我转到“数据”选项卡,将文本转换为列。我选择日期为 DMY,但我认为这并不重要。然后我有 3 列日期,一列表示日,一列表示月,一列表示年。接下来我必须逐一查找和替换(因为我尝试的公式不起作用)将 Jan 替换为 1,将 Feb 替换为 2,等等。
最后,我得到了一个日期格式,几乎完成了。所以我只需要将它们 3 合并到一个单元格中,以“/”作为分隔符。所以我使用了 =E2&"/"&F2&"/"&G2,其中 E2 是日,F2 是月,G2 是年。之后,我只需将单元格拖到最后一个,就可以了。现在我可能必须将其格式化为日期,然后我就可以对其进行排序了。感谢你们所有的回答!这不是最快也不是最简单的方法,但它确实有效 :)