我有一个 Excel 失败,其中我使用了多个工作表;操作是在 Workers (Töötajad) 工作表中进行的。在此工作表中,有一个主表,名称相同(我可以更改名称,但这并不重要)。我向您展示了此表(它是爱沙尼亚语 - 您不必担心语言问题,因为我可能会在不使用 Google 翻译的情况下翻译所有内容):
现在你应该注意“Tähtkuju”(星座),那里写着“Veevalaja”(水瓶座)。正如你所见,我试图根据每个人的生日(Sünnikuupäev)给每个人分配星座。
还有工作表“Lisa”、“附录”,其中有将星座与日期相关联的表格:
[
在左侧栏中,您可以找到按升序排列的星座,从摩羯座开始。在另一栏中,您可以看到与这些星座相关的日期。
问题:我有人的日期,所以我必须将这些日期与星座联系起来,这样每个人都会根据自己的占星术来定义自己。我的尝试很糟糕,但我花了一两个小时:
=@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)