复杂的日期查找

0 date vlookup microsoft-excel

我发现了this,它非常接近,但我不知道 VB,所以我试图用香草公式来做到这一点。

第一个工作表有一系列失业率表:每个美国州 1 个。每个表格都以年份为行标签,月份为列标签,每个单元格中的失业率为数据。这是 BLS 网站上的标准格式。我为与州缩写相对应的每个表添加了一列。

第二个表有大量事件,每个事件是一行。列是关于事件的各种数据,包括州缩写和日期。我想做一个 vlookup(或任何更合适/更有效的方法),从第一个工作表中提取每个事件(总共 150k+)的适当日期的相应州失业率。

我猜我需要重新组织第一个工作表中的表格,以便每个月/年组合都是一行,或者使用“匹配”和“如果”等的某种组合。有点懒,但我已经好几年没接触过 Excel,所以我想我会从这里开始。我真的很感谢任何人的投入。

编辑:

所以我试图嵌套多个查找,这不是做到这一点的智能方法(第二个基于事件的工作表中的公式)。

最内层/第一次查找:在事件工作表中使用状态:在第一个工作表中查找所有适用的年份,这些年份仅适用于该状态(我返回一系列行,在按行搜索后??状态是一列,年也是。月是一行(第一列标题)。

中间/第二次查找:在事件工作表中使用年份:在从上面(行的子集)返回的年份范围内查找,精确行,包含月份 Jan-Dec(记住月份是列,即列标签)用于适当的状态-年对。

最外层查找:在事件工作表中使用月份:在第二次查找返回的月份范围内查找准确的月份(此时,理想情况下这将是准确的失业率)。

编辑于:只是想尽可能清楚地说明:

工作表 1) 失业率:

State  Year   Jan   Feb  Mar  Apr  etc
AK     1991    3.5  4.3    5  6.1   x       
AK     1992    3.1  4.1    x    x   x
TX     1991      x    x    x    x   x
TX     1992      x    x    x    x   x
VA     1993      x    x    x    x   x 
VA     1994      x    x    x    x   x
Run Code Online (Sandbox Code Playgroud)

工作表 2) 事故:

Exact Calendar Date  Year  State    xxx   xxx     etc  (unemp rate)
xx/xx/xxxx           xxxx     xx      x     x     x      ?????
xx/xx/xxxx           xxxx     xx      x     x     x      ?????
Run Code Online (Sandbox Code Playgroud)

=hlookup(month(b2),vlookup(c2,(vlookup(av2,[in first worksheet with unemp. rates, all states, in alphabetical order and first column]A2:a1174,[years in worksheet 1 that apply to this state, range is all years, but nested lookup means it will only look at the ones with the correct state abbreviation, right?]b2:b1174),[in the unemp rate worksheet, for the 1 row year/state combination that is returned, search among all months]$c$1:$n$1),*****)

尝试在此处提供注释以使上述内容更清楚:

b2 = month in incident worksheet (#2 in my original post)
c2 = year in incident worksheet 
av2=state abbreviation in incident worksheet
Run Code Online (Sandbox Code Playgroud)

所以这是众多问题中的一个。从概念上讲,此时我希望在适当的年份/州行中按月搜索最后一个 hlookup 函数,并返回我想要的确切单元格。但是,它变得如此复杂,我不知道如何引用最后一个返回值。

感谢您的任何帮助!如果我能提供更清晰的信息,请告诉我。

Jer*_*rry 5

由于所有比率都是数字,因此您可以使用SUMIFS多种条件进行查找。唯一剩下的就是获得正确的月份,您可以使用INDEXand获得它MATCH

=SUMIFS(INDEX('Unemp. Rates'!C:N, 0, MATCH(TEXT(B2,"mmm"),'Unemp. Rates'!$C$1:$N$1,0)), 'Unemp. Rates'!A:A, AV2, 'Unemp. Rates'!B:B, B2)
Run Code Online (Sandbox Code Playgroud)

评估从最里面到最外面的:

  • TEXT(B2,"mmm"): 给出 B2 中日期文本中的月份。假设月份是一月。Jan将是这里的结果。

  • MATCH("Jan",'Unemp. Rates'!$C$1:$N$1,0): 给出"Jan"找到月份的数字。如果是Jan,你会得到,1因为它是第一个单元格。

  • INDEX('Unemp. Rates'!C:N, 0, 1):从返回的第一列C:NC:C0表示所有行,并且1是先前获得的行。如果是的话Feb,就会有2,专栏也会有D:D

  • SUMIFS(C:C, 'Unemp. Rates'!A:A, AV2, 'Unemp. Rates'!B:B, B2):返回 C 列中值的总和,前提是 A 列中的值与 AV2 值(州)匹配,B 列中的值与 B2 值(年)匹配。

我不希望您有多个相同状态相同年份的行,因此实际上没有发生“SUM”。