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 函数,并返回我想要的确切单元格。但是,它变得如此复杂,我不知道如何引用最后一个返回值。
感谢您的任何帮助!如果我能提供更清晰的信息,请告诉我。
由于所有比率都是数字,因此您可以使用SUMIFS
多种条件进行查找。唯一剩下的就是获得正确的月份,您可以使用INDEX
and获得它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:N
是C:C
。0
表示所有行,并且1
是先前获得的行。如果是的话Feb
,就会有2
,专栏也会有D:D
。
SUMIFS(C:C, 'Unemp. Rates'!A:A, AV2, 'Unemp. Rates'!B:B, B2)
:返回 C 列中值的总和,前提是 A 列中的值与 AV2 值(州)匹配,B 列中的值与 B2 值(年)匹配。
我不希望您有多个相同状态和相同年份的行,因此实际上没有发生“SUM”。