【问题标题】:Is it possible to have Excel return a date when counting down to a date from a specific date that is NOT today or now?从不是今天或现在的特定日期倒计时到日期时,是否可以让 Excel 返回日期?
【发布时间】:2013-11-12 04:37:34
【问题描述】:

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

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

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

这可能是不可能的:/

【问题讨论】:

  • “2 周前”:只需减去 14。以此类推。
  • 嗨,我想你问的很简单,但我不明白你想要达到什么目的?你能进一步解释一下吗?正如 momobo 评论的那样,您只需在日期值上加/减一个整数即可显示之前或之后的天数。
  • 你想要的我已经差不多实现了。我只是在为1 month before2 years before 等选项而苦苦挣扎。你会在这些文本中有月份和年份吗?如果没有,那就很简单了

标签: excel date excel-formula


【解决方案1】:

除我上面的​​评论外,由于您的帖子没有提到您将拥有1 month before2 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,一旦我们知道我们会做一个简单的查找。

挑战

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

【讨论】:

  • 嗨,Sid,你能解释一下1 month before 的值是2825/03/2014。我认为应该是22/03/2014。我正在尝试但在考虑这个月时感到震惊(2 月 28 日、2 月 29 日的飞跃、4 月 30 日、9 月、11 月 ..、1 月 31 日、12 月 ..)。
  • 正如我在上面的帖子中提到的月/年计算(红色)仅用于显示目的。我将在 OP 的澄清后对其进行处理。现在它只是从 vlookup 表的第一列中获取值,即28
【解决方案2】:

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

在列C添加公式==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?错误意味着安装和加载分析工具库插件。

访问 HERE 以加载 Excel 分析工具包。

以下是解决方案的快照。

【讨论】:

  • 如果 A2 说 33 days101 days,您的 =MID(A2,3,3) 公式将失败
  • 不错的 sid,我没想到。我现在更新了我的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多