Excel - 星座和日期

Excel - 星座和日期

我有一个 Excel 失败,其中我使用了多个工作表;操作是在 Workers (Töötajad) 工作表中进行的。在此工作表中,有一个主表,名称相同(我可以更改名称,但这并不重要)。我向您展示了此表(它是爱沙尼亚语 - 您不必担心语言问题,因为我可能会在不使用 Google 翻译的情况下翻译所有内容):

我的桌子的一部分

现在你应该注意“Tähtkuju”(星座),那里写着“Veevalaja”(水瓶座)。正如你所见,我试图根据每个人的生日(Sünnikuupäev)给每个人分配星座。

还有工作表“Lisa”、“附录”,其中有将星座与日期相关联的表格:

[星座和日期2

在左侧栏中,您可以找到按升序排列的星座,从摩羯座开始。在另一栏中,您可以看到与这些星座相关的日期。

问题:我有人的日期,所以我必须将这些日期与星座联系起来,这样每个人都会根据自己的占星术来定义自己。我的尝试很糟糕,但我花了一两个小时:

=@IFS(OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!Needing,3,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!Needing,4,2)),INDEX('Excel_Ivanov (1).xlsx'!Needing,3,1), ... )

我在这里放了部分公式,因为您可以看到我的逻辑:我参考附录工作表,从那里将星座和日期带到我的工作空间“工人”,我将在那里使用这些数据。好的,现在我必须比较日期并给每个人星座。不幸的是,公式只返回一个星座,即水瓶座;如果您将 OR 替换为 AND,则会得到 #VALUE 或 #SPILL 错误。隐含的日期符号 @ 修复了 #SPILL 但没有修复 #VALUE,这意味着我误解了一些东西。现在我为您提供完整的公式 - 但在这样做之前,我告诉您我从第一行转到与附录中的表格相关的法律。我可以将该表复制到我的工作空间,但这并不重要。

=@IFS(OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!Needing,3,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!Needing,4,2)),INDEX('Excel_Ivanov (1).xlsx'!Needing,3,1), OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!Needing,4,2),@Sünnikuupäev <= INDEX( 'Excel_Ivanov (1).xlsx'!Needing,5,2)),INDEX('Excel_Ivanov (1).xlsx'!Needing,4,1), OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!需要,5,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!需要,6,2)),INDEX('Excel_Ivanov (1).xlsx'!需要,5,1),OR(@Sünnikuupäev>= INDEX('Excel_Ivanov (1).xlsx'!需要,6,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!需要,7,2)),INDEX('Excel_Ivanov (1).xlsx'!需要,6,1),OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!需要,7,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!需要,8,2)), INDEX('Excel_Ivanov (1).xlsx'!需要,7,1),OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!需要,8,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!需要,9,2)), INDEX('Excel_Ivanov (1).xlsx'!需要,8,1), OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!需要,9,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!需要,10,2)), INDEX('Excel_Ivanov (1).xlsx'!需要,9,1), OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!Needing,10,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!Needing,11,2)), INDEX('Excel_Ivanov (1).xlsx'!Needing,9,1), OR(@Sünnikuupäev>= INDEX('Excel_Ivanov (1).xlsx'!Needing,11,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!Needing,11,2)), INDEX('Excel_Ivanov (1).xlsx'!Needing,10,1), OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!Needing,11,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!Needing,12,2)), INDEX('Excel_Ivanov (1).xlsx'!Needing,12,1), OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!Needing,12,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!Needing,13,2)), INDEX('Excel_Ivanov (1).xlsx'!Needing,13,1), OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!Needing,13,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!Needing,14,2)), INDEX('Excel_Ivanov (1).xlsx'!Needing,14,1),OR(@Sünnikuupäev >= INDEX('Excel_Ivanov (1).xlsx'!Needing,14,2),@Sünnikuupäev <= INDEX('Excel_Ivanov (1).xlsx'!Needing,15,2)), INDEX('Excel_Ivanov (1).xlsx'!Needing,15,1))

还是我误解了什么? 有什么线索吗?

答案1

说实话,我不太懂Excel当我开始玩的时候,Reddy 的答案还没有发布(在LibreOffice Calc,无法承受微软Office:D)。

我认为是日期的年份部分导致了比较结果出乎意料。我选择使用 VLOOKUP 和按年份计算的方法来确定符号。查找表基于 365 天的年份。对于在 2 月 29 日之后的闰年出生的人,年份的日期会通过减 1 来更正。由于您不太可能处理 1900 年或 2100 年的生日,因此在计算中省略了闰年的 100/400 规则。

在此处输入图片描述

  • 专栏广告包含查找表,其中根据每个星座的开始日期计算出年份。
  • F 栏包含示例生日。
  • G 栏包含我原来的、难以阅读的、单细胞公式来计算叹息。(如下所示。)
  • H 列是一个多次使用的中间值:F 列中生日的真实年份。
  • J 列包含使用 H 列的值查找符号的公式。

我原来的单细胞查找公式是:

=VLOOKUP(IF(MOD(YEAR(F14),4),F14-DATEVALUE("1/1/" & YEAR(F14)),DATEVALUE(MONTH(F14) & "/" & DAY(F14) & "/" & (YEAR(F14)-1) )-DATEVALUE("1/1/" & (YEAR(F14)-1))),$A$2:$D$14,3)

答案2

尝试调整以下公式。它检查 E11 上的日期是否大于查找表上的日期$B$1:$B$13。如果不是,则返回结果。如果日期不可用(12 月 24 日至 31 日),则返回最后一行(13)。该INDEX函数返回与行(日期)相关的星座

=INDEX($A$1:$A$13,IFNA(MATCH(FALSE,E11>=$B$1:$B$13,0)-1,13))

在此处输入图片描述

答案3

如果你稍微修改一下表格,你就可以得到任何生日的标志,(不仅限于 2020 年)通过使用VLOOKUP()D1通过F13

在此处输入图片描述

输入任意日期A1以及B1进入:

=VLOOKUP(DATE(2020,MONTH(A1),DAY(A1)),D:F,3)

在此处输入图片描述

相关内容