我在这里看了几个建议,并没有找到适合我的东西。如果可能的话,我宁愿不使用数组公式。但是,如果这是唯一的方法,我会尝试使用它。
我正在研究Excel 2013中的各种考勤工作簿。该工作簿包含计算表,列表表和一年中每个月的表。 “列表”表有一个名称列表和月份列表。我已经包含了一个示例工作簿的链接,以演示如何设置工作表以及我正在使用的基本功能,名称,列表等。
我的示例工作簿: https://app.box.com/s/mgvums1vmnmnec7e7d0p4vi5daoyo5nv
当查找特定行/范围中的最后一个非空单元格时,我在每个特定月份表单上使用以下LOOKUP时收到正确的结果:(我在几个网站上挖掘后发现)= LOOKUP (2,1 /(C5:AG5<>"&#34),C $ 4:AG $ 4) - 对于2月份,C5:AG5范围内的最后一个条目是AA5,即第25个。
当我在任何非月份表中使用以下查找时,我也会收到正确的结果:= LOOKUP(2,1 /(2月!C5:AG5<>""),2月! C $ 4:AG $ 4)
话虽如此,我遇到的两个具体问题如下:
我尝试过简单,只需使用&#34;月&#34;我选择了。我尝试了以下几种不同的改动: = LOOKUP(2,1 /(月&安培;&#34; C5:AG5&LT;&GT;&#34;&#34;&#34),月和安培;&#34; C $ 4:!AG $ 4#34 ;) 我得到的最接近的是上面的查找,最终会变成你在下面看到的内容(在计算步骤中查看)。它当然会返回一个#VALUE!错误。 = LOOKUP(2,1 /&#34;二月C5:AG5&LT;&GT;&#34;&#34;&#34;,月和安培;&#34; C $ 4:!AG $ 4#34)< / p>
我也尝试了这个数组公式,它给了我4的结果。哪个,不是正确的结果。而且,我不知道结果实际来自哪里。 = MAX((INDIRECT(F4&安培;&#34;&#34;&安培;&#34; C5:!AG5&#34;)&LT;&GT;&#34;&#34;)*(ROW(INDIRECT(F4&安培;&#34;&#34;&安培;&#34; C $ 4:!AG $ 4#34;))))
我相当肯定我需要使用VLOOKUP。我似乎无法打破我想要的一般概念和制定它的正确方法之间的障碍。
任何帮助将不胜感激。我此刻感到非常迷茫。如果您需要我的更多信息,请告诉我。
谢谢, Kurewe
答案 0 :(得分:2)
关键是使用INDIRECT
与您已有的完全相同的LOOKUP
公式,并使用MATCH
公式确定所选名称的行号。
放置以下公式:
=MATCH(F3,NameList,0)+4
(在NameList中查找所选名称的项目编号)=F4&"!C4:AG4"
(构建所选月份日期行的地址)=F4&"!C"&G3&":AG"&G3
(构建用于所选名称和月份的地址)=INDEX(MonthList,ROW()-ROW(E$8))
复制到E20 (使用MonthList查找此行的月份名称)=E9&"!C4:AG4"
复制到G20 (构建E9中该月份日期行的地址)=E9&"!C"&G$3&":AG"&G$3
复制到H20 (构建用于所选名称的地址和E9中的月份)=IFERROR(LOOKUP(2,1/(INDIRECT(H9)<>""),INDIRECT(G9)),"(n/a)")
复制到F20 (使用G9&amp; H9中的地址找到&#34; X&#34;的最后一天)=LOOKUP(2,1/ISNUMBER(F9:F20),ROW(F9:F20)-ROW(F8))
(找到带有&#34的第一个单元格的索引;(n / a)&#34;在其中)=LOOKUP(2,1/(INDIRECT(H3)<>""),INDIRECT(H2))
(找到最后一天的&#34; X&#34;其中包含H2和H3中的地址)=INDEX(MonthList,G4)&"-"&INDEX(F9:F20,G4)
(构建一年内出勤最后一天的日期)