从不是今天或现在的特定日期倒计时到日期时,是否可以让 Excel 返回日期?例如:End_date 是 04/22/14,我拥有的数据是“2 周前”、“3 天前”、“4 个月前”等。所以我希望“3 天前”的单元格显示日期(04/19/14)
我找到了从今天开始倒计时的信息:=DATEVALUE("22-April-2014")-TODAY()&"还剩几天"
但这会显示剩余时间,我需要将 TODAY 替换为代表“2 周前”4 月 22 日的值,并且返回为 dat
这可能是不可能的:/
从不是今天或现在的特定日期倒计时到日期时,是否可以让 Excel 返回日期?例如:End_date 是 04/22/14,我拥有的数据是“2 周前”、“3 天前”、“4 个月前”等。所以我希望“3 天前”的单元格显示日期(04/19/14)
我找到了从今天开始倒计时的信息:=DATEVALUE("22-April-2014")-TODAY()&"还剩几天"
但这会显示剩余时间,我需要将 TODAY 替换为代表“2 周前”4 月 22 日的值,并且返回为 dat
这可能是不可能的:/
除了我上面的评论,由于您的帖子没有提到您将有类似1 month before
or的文字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
,一旦我们知道我们会做一个简单的查找。
挑战
就像我提到的,如果你有几个月和几天,那么它们可以有多个值。见表。
如果文本包含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 分析工具包。
下面是解决方案的快照。