1

从不是今天或现在的特定日期倒计时到日期时,是否可以让 Excel 返回日期?例如:End_date 是 04/22/14,我拥有的数据是“2 周前”、“3 天前”、“4 个月前”等。所以我希望“3 天前”的单元格显示日期(04/19/14)

我找到了从今天开始倒计时的信息:=DATEVALUE("22-April-2014")-TODAY()&"还剩几天"

但这会显示剩余时间,我需要将 TODAY 替换为代表“2 周前”4 月 22 日的值,并且返回为 dat

这可能是不可能的:/

4

2 回答 2

1

除了我上面的评论,由于您的帖子没有提到您将有类似1 month beforeor的文字2 years before,我将假设它们不存在。如果是,那么我们将不得不稍微调整公式。

假设您的数据看起来像这样(忽略红色的单元格。我仍在试验它)

在此处输入图像描述

只需在单元格中添加此公式B2并将其拉下

=(LEFT(A2,SEARCH(" ",A2,1)))*(VLOOKUP(TRIM(MID(A2,SEARCH(" ",A2,1),SEARCH(" ",A2,SEARCH(" ",A2,1)+1)-SEARCH(" ",A2,1))),F:G,2,0))

然后C2把它拉下来

=DATEVALUE("22-April-2014")-B2

还可以在列中添加一个小表进行查找,F:J如下图所示

在此处输入图像描述

解释

Left/Search/Mid用来提取数字部分和之后的文本,Day/week/Days/weeks/fortnight/fortnights/Months/Years/Month/Year然后使用 Vlookup 在几天内找到等价物。

因此,如果我将其分解=(LEFT(A2,SEARCH(" ",A2,1)))*(VLOOKUP(TRIM(MID(A2,SEARCH(" ",A2,1),SEARCH(" ",A2,SEARCH(" ",A2,1)+1)-SEARCH(" ",A2,1))),F:G,2,0))为第一个单元格,我会得到

(LEFT(A2,SEARCH(" ",A2,1)))= 3 和 (VLOOKUP(TRIM(MID(A2,SEARCH(" ",A2,1),SEARCH(" ",A2,SEARCH(" ",A2,1)+1)-SEARCH(" ",A2,1))),F:G,2,0))= 7

因此 = 3*7 =21

(VLOOKUP(TRIM(MID(A2,SEARCH(" ",A2,1),SEARCH(" ",A2,SEARCH(" ",A2,1)+1)-SEARCH(" ",A2,1))),F:G,2,0))可以进一步分解

TRIM(MID(A2,SEARCH(" ",A2,1),SEARCH(" ",A2,SEARCH(" ",A2,1)+1)-SEARCH(" ",A2,1)))会给你Weeks,一旦我们知道我们会做一个简单的查找。

挑战

就像我提到的,如果你有几个月和几天,那么它们可以有多个值。见表。

于 2013-11-12T07:02:01.080 回答
0

如果文本包含days,weeks,months and years,则此解决方案会有所帮助。

在 cloumnC添加公式==MID(A1,FIND(" ", A1)+1,3)并将其向下拖动。
在列中B添加公式=IF((C1="day"),($B$1-LEFT(A5,1)),IF(C1="wee",($B$1-(LEFT(A5,1)*7)),IF(C1="mon",EDATE($B$1,-LEFT(A5,1)),IF(C1="yea",EDATE($B$1,(-LEFT(A5,1)*12)))))并将其向下拖动。

如果EDATE()函数不可用,则返回 #NAME? 错误意味着安装和加载 Analysis ToolPak 加载项。

访问此处加载 Excel 分析工具包。

下面是解决方案的快照。

在此处输入图像描述

于 2013-11-12T10:08:42.137 回答