Exceldate格式问题 – string

我有以下格式的date格式在string格式的Excel中:

Apr 1, 2016 12:37:06 PM Apr 2, 2016 12:00:00 AM Apr 1, 2016 9:50:22 AM Apr 1, 2016 12:09:38 PM Apr 1, 2016 6:53:03 PM Apr 1, 2016 1:02:10 PM 

我曾尝试将其从一般转换为date,但Excel仍然不会将其识别为date格式。 需要您的build议,我可以尝试更多的解决这个问题。

多谢!

几个选项适合你:

选项1

文本到Excel中build立的列function

文本到列

select所有初学者的date。 他们需要在一列。 在数据function区上,select文本到列。 上图中淡绿色的背景。

在随后popup的窗口中select固定宽度。 然后select下一步。

固定宽度

调整列,让你得到一个列或一列中的date与另一列中的时间。 然后selectNEXT。

列调整

在底部预览窗口中select第一列。 然后向上selectDate单选button,然后从下拉菜单中selectMDY格式。 当准备点击完成button

格式栏

选项2

公式

从string中删除文本,并使用一些丑陋的长公式重builddate。 所以我们要这样做,所以你可以看到这个丑陋的东西是如何制造的。 当我们完成的时候,我们会把较小的公式复制成一个很难看,很难看的公式。

令人讨厌的事情之一是你有一个月的缩写。 在某处,您需要build立一个表格,并将所有缩写放在一列中,并将相应的月份编号放在右侧。 可能还有其他方法可以做到这一点,但这是我现在要做的。

 (AA) | (AB) Jan | 1 Feb | 2 Mar | 3 Apr | 4 May | 5 Jun | 6 Jul | 7 Aug | 8 Sep | 9 Oct | 10 Nov | 11 Dec | 12 

所以我们可以从最大(年)到最小(秒)或从左到右工作。 让我们从左边开始解决这个问题。

首先,我们需要把这个月抽出来。 幸好它在左边,我们知道它只有3个字符长。 所以我们可以直接findexcel公式,然后用硬编码。另一种方法是find空间。 所以find月份的第一个公式是

 =Left(A1,3) 

既然我们需要知道那个月份的数字,我们可以用一个VLOOKUP函数来进行转换(INDEX / MATCH是另一种select)。 现在让我们把它放在F列中。

 =VLOOKUP(Left(A1,3),$AA$1:$AB$12,2,0) 

这应该返回数字3为我们。 您将不得不调整AA1:AB12以适合您放置桌子的位置。

接下来我们要拉一天。 我们知道第一个逗号左边的一个或两个字符。 我们将使用FIND来确定它在哪里,因为它没有固定的位置。

 =FIND(",",A1) 

所以我们知道date会在左边开始1或2个字符。 没有伤害,因为这将是一个空间或一个数字。 所以,现在让我们使用MID公式中的知识,并将以下内容放在G列中:

 =--MID(A1,FIND(",",A1)-2,2) 

– 将文本更改为一个数字(在这种情况下,实际上并不需要)。 所以下一个是有点棘手,但仍然可行。 我们需要find年。 你不知道吗,它是一个固定的4个字符长,并开始后,相同的第一次昏迷。 因此,让我们重复我们以前的公式,但稍微调整一下,现在把H列为:

 =--MID(A1,FIND(",",A1)+2,4) 

那么现在我们有我们的月份,date和年份作为数字,我们可以使用DATE公式来build立我们的date,

 =DATE(H1,F1,G1) 

现在,如果你准备好开始一个丑陋的大事,我们可以用我们以前的每个方程代入我们的date方程,所有这些都在一个单元格中完成。 那个大公式将会看起来如下:

 =DATE(MID($A1,FIND(",",$A1)+2,4),VLOOKUP(LEFT($A1,3),$AA$1:$AB$12,2,0),MID($A1,FIND(",",$A1)-2,2)) 

现在当我在一个单元格中说全部的时候,我应该补充说明,你确实需要那些月份列表的帮助信息,尽pipe也有一些解决办法。 所以照顾date过程。 现在做的时间非常非常相似。

我们有两个选项第一个选项可能不适合你,因为datevalue公式不适合你。

选项A – TimeValue

你创build时间的好处是,从开始到结束,时间长度为10或11个字符,如果我们全部11个时间,只有10个时间,我们再次只是抓住一个空间。 所以让我们抓住正确的时间,并把这个公式放在K列:

 =TIMEVALUE(RIGHT($A1,11)) 

现在,如果这个选项对你不起作用,那么我们按照我们为该date做的那样分解它。

选项B – 剥离时间

因此,让我们看看模式,看看我们可以找出什么…首先“:”看起来像一个伟大的标识符,所以让我们find与date相同的方式。 让我们在N列中构build我们的时间公式:

 =FIND(":",A1) 

让我们直接进入MID公式来拉小时

 =MID($A1,FIND(":",$A1)-2,2) 

而在O栏中,我们也会用几分钟的时间做同样的调整

 =MID($A1,FIND(":",$A1)+1,2) 

而且由于我们知道分钟在单位数分钟内保持领先的零,所以我们也确切地知道秒钟将要开始的位置。 让我们把这个公式放在P列中:

 =MID($A1,FIND(":",$A1)+4,2) 

所以你可能想知道如何处理上午/下午让我们抓住这一点,并把它放在Q栏

 =RIGHT($A1,2) 

所以,现在我们掌握了所有这些信息,我们要做什么来构build时间。 首先,首先你需要知道Excel像24小时钟。 但是它确实可以节省一天的小数。 所以中午12点实际上是存放了0.5天或半天。 另一个重要的事情要知道,官方支持Excel的时间范围是00:00至23:59。 没有24:00。 现在已经说过,24小时以内,VBA崩溃,除非你专门处理它在一些特殊的代码。 然而,你可以在excel公式中以24小时的速度提供服务,并且有时候可以逃脱。 用课时足够好让我们在列R中构build这个最终公式:

 =TIME(N1+IF(AND(Q1="PM",N1<>"12"),12,IF(AND(Q1="AM",N1="12"),-12,0)),O1,P1) 

你会注意到有一个中频公式在那里处理AM上午以及12小时的特殊情况。 12是引号,因为N1是一个string,我没有把它转换成一个数字。

现在由于我们的公式所以这一切都在一个单元格的丑陋。

 =TIME(MID($A1,FIND(":",$A1)-2,2)+IF(AND(RIGHT($A1,2)="PM",MID($A1,FIND(":",$A1)-2,2)<>"12"),12,IF(AND(RIGHT($A1,2)="AM",MID($A1,FIND(":",$A1)-2,2)="12"),-12,0)),MID($A1,FIND(":",$A1)+1,2),MID($A1,FIND(":",$A1)+4,2)) 

是的,这是很容易阅读! 我问你是否需要一列或两列。 那么你有完整的date在其上的公式和时间的完整公式。 所以,如果你们需要他们在一起,这是一个有趣的信息。 由于时间存储为十进制date,这意味着小数点右边的所有内容都是时间。 这也意味着左边(或整数部分)的所有内容都是天。 所以要把date时间放在一列中,你只需要把这两个公式加在一起……或者我把它称为一个真正的丑陋的等式……或者至less是属于这个范畴的许多等式中的一个:

 =DATE(MID($A1,FIND(",",$A1)+2,4),VLOOKUP(LEFT($A1,3),$AA$1:$AB$12,2,0),MID($A1,FIND(",",$A1)-2,2))+TIMEVALUE(RIGHT($A1,11)) or if time value did not work for you =DATE(MID($A1,FIND(",",$A1)+2,4),VLOOKUP(LEFT($A1,3),$AA$1:$AB$12,2,0),MID($A1,FIND(",",$A1)-2,2))+TIME(MID($A1,FIND(":",$A1)-2,2)+IF(AND(RIGHT($A1,2)="PM",MID($A1,FIND(":",$A1)-2,2)<>"12"),12,IF(AND(RIGHT($A1,2)="AM",MID($A1,FIND(":",$A1)-2,2)="12"),-12,0)),MID($A1,FIND(":",$A1)+1,2),MID($A1,FIND(":",$A1)+4,2)) 

现在这只是一个解决scheme,如何使用公式来分解它。 还有其他的select或路线我可以在几个步骤,但它应该为你工作,不pipe你的系统设置是什么。 这是我的系统上的结果的屏幕截图。 注意我隐藏了未使用的空列以使图像变窄。 列T具有自定义格式

 mmm, d, yyyy h:mm:ss AM/PM 

适用于它。

完成品

选项3

VBA

我相信有人会在某个时候提供。 看看它发生之前,我可以到那个阶段! 我不知道为什么8)

尝试=DATEVALUE("date string")

希望这可以帮助


下面是它的工作原理

在这里输入图像说明


如果仍然没有工作,那么它必须与Windowsdate时间设置。

从控制面板打开区域和语言设置。 将长date格式更改为“MMMM dd,yyyy”。 因为这是您的datestring格式化的格式。 您必须这样做才能使Excel中的DATEVALUE()工作。 现在回到你的公式,看看是否有效。

之后,复制粘贴公式作为值。 然后,您可以再次更改为您的首选长date格式(或放弃)。

在这里输入图像说明

至于VBA解决scheme,您可以打开VBA编辑器,添加一个新模块并粘贴下面的代码:

 Function STRTODATE(ByVal dcell As Range) Dim datecon As Date datecon = dcell STRTODATE = datecon End Function 

那么你可以使用STRTODATE作为公式。 只有真正有用,如果它是一个closures。 如果这是你经常在不同的文件上做的事情,那么把这些代码粘贴到每个工作簿上都会很麻烦。