Pesquisa de data complicada

0

Eu encontrei isso , que é bem próximo, mas eu não sei VB, então estou tentando fazer isso com uma fórmula de baunilha.

A primeira planilha tem uma série de tabelas de taxa de desemprego: 1 por estado dos EUA. Cada tabela apresenta dados com ano como rótulo da linha, mês como rótulo da coluna e taxa de desemprego em cada célula. Este é o formato padrão do site do BLS. Eu adicionei uma coluna para cada tabela correspondente à abreviação do estado.

A segunda tabela tem um grande número de incidentes, cada incidente é uma linha. Colunas são vários dados sobre o incidente, incluindo a abreviação do estado e a data. Eu quero fazer um vlookup (ou o que for mais apropriado / eficiente) que puxa o desemprego de estado correspondente para a data apropriada para cada incidente (150k + no total) da primeira planilha.

Acredito que seria necessário reorganizar as tabelas na primeira planilha, de modo que cada combinação mês / ano seja uma linha ou use uma combinação de "correspondência" e "se" e algo semelhante. Um pouco preguiçoso, mas faz anos desde que mexi com muito o Excel, então pensei em começar aqui. Eu realmente aprecio a entrada de qualquer um.

Editar:

Estou tentando aninhar várias pesquisas, que não podem ser a maneira inteligente de fazer isso (fórmula na segunda planilha baseada em incidentes).

Pesquisa mais interna / primeira: use o estado na planilha de incidentes: localize todos os anos aplicáveis na primeira planilha que se aplicam apenas a este estado (estou retornando um intervalo de linhas, depois de pesquisar por linha ??? o estado é uma coluna, como é year. month é uma linha (cabeçalho da primeira coluna).

Pesquisa de meio / segundo: usar ano na planilha de incidentes: localizar dentro do intervalo de anos retornado acima (um subconjunto de linhas), linha exata, contendo mês Jan-Dez (lembre-se de que meses são colunas, ou seja, rótulos de colunas) par de Estado-ano apropriado.

Consulta externa: use mês na planilha de incidentes: encontre dentro do intervalo de meses retornado da segunda consulta, mês exato (nesse ponto, idealmente, seria a taxa de desemprego exata).

Editado em: apenas tentando deixar o mais claro possível:

Folha de trabalho 1) Taxas de desemprego:

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

Planilha 2) Incidentes:

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      ?????

=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),*****)

Tentando fornecer notas aqui para tornar o acima mais claro:

b2 = month in incident worksheet (#2 in my original post)
c2 = year in incident worksheet 
av2=state abbreviation in incident worksheet

Portanto, esta é uma questão entre muitas. Conceitualmente, neste momento eu queria ter a última busca de função hlookup por mês entre a linha de ano / estado apropriada, e retornar a célula exata que eu queria. Mas, tornou-se tão complicado que não sei como referenciar o último valor retornado.

Obrigado por qualquer ajuda! Deixe-me saber se posso fornecer mais clareza.

    
por user3392615 11.05.2014 / 08:17

1 resposta

5

Como todas as taxas são números, você pode usar SUMIFS para obter as pesquisas com várias condições. A única coisa que restaria seria obter o mês correto, e você pode obter isso usando INDEX e 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)

Avaliando o mais interno para o mais externo:

  • TEXT(B2,"mmm") : fornece o mês em texto da data em B2. Digamos que o mês seja janeiro. Jan será o resultado aqui.

  • MATCH("Jan",'Unemp. Rates'!$C$1:$N$1,0) : fornece o número em que "Jan" month foi encontrado. Se foi Jan , você recebe 1 , pois é a primeira célula.

  • INDEX('Unemp. Rates'!C:N, 0, 1) : retorna a primeira coluna de C:N que é C:C . 0 significa todas as linhas e 1 é o que foi obtido anteriormente. Se fosse Feb , haveria 2 e a coluna teria sido D:D .

  • SUMIFS(C:C, 'Unemp. Rates'!A:A, AV2, 'Unemp. Rates'!B:B, B2) : retorna a soma dos valores da coluna C, desde que os valores na coluna A correspondam ao valor AV2 (estado), os valores na coluna B correspondam ao valor B2 (ano).

Não espero que você tenha mais de uma linha com o mesmo estado e no mesmo ano, portanto não há 'SUM' ocorrendo.

    
por 11.05.2014 / 10:38