2015-06-04 4 views
1

У меня есть таблица со следующим:Приблизительное совпадение в пределах суб-массива

Name Quota-Date Quota 
Ami  5/1/2010 75000 
Ami  1/1/2012 100000 
Ami  6/1/2014 150000 
John 8/1/2014 0 
John 4/1/2015 50000 
Rick 5/1/2011 100000 

(Даты показаны в американском формате: M/D/YYYY). «Дата квоты» является первым месяцем активной новой «квоты» рядом с ней. . Квота Ами является 75000 для каждого месяца в период с мая 2010 года по декабрь 2011 года

мне нужна формула для извлечения квоты данного лица и данного месяца: активную квоты человека в каждом месяце. Это необходимо формула для вычисления третьего столбца этой таблицы:

Name Month  Quota 
Ami  6/1/2010 75000 
Ami  12/1/2011 75000 
Ami  1/1/2012 100000 
Ami  7/1/2014 150000 
John 10/1/2014 0 
John 4/1/2015 50000 

Я предпочитаю не поддерживать первую таблицу отсортированный, но если он будет делать вещи значительно проще, я бы.

Какова была бы правильная формула для «Квоты» на втором столе?

ответ

1

Если новые данные в столбцах AC и исходные данные также столбцы AC в Лист1, затем введите эту формулу в B2:

=SUMIFS(Sheet1!C:C,Sheet1!A:A,A2,Sheet1!B:B,MAX(IF((Sheet1!A:A=A2)*(Sheet1!B:B<=B2),Sheet1!B:B,"")))

Эта формула работает хорошо, если у вас есть только номера в вашем 3 но будет сложнее заставить его работать над текстом.

0

спасибо, Máté Juhász! Я только что разработал другое решение для этого, а не как Формула Array, но мне нравится ваше решение лучше - более элегантно, я буду использовать его!

Мое решение для записи:

= INDEX (INDIRECT ("! Квота $ E $" & MATCH ([@ PM], PMQuotaTable [PM], 0) + ROW (PMQuotaTable [#headers]) & ": $ E $" & MATCH ([@ PM], PMQuotaTable [PM], 0) + ROW (PMQuotaTable [#Headers]) + COUNTIF (PMQuotaTable [PM], [@ PM]) - 1), MATCH ([@Month], INDIRECT ("Quota! $ D $" & MATCH ([@ PM], PMQuotaTable [PM], 0) + ROW (PMQuotaTable [#Headers]) & ": $ D $" & MATCH ([@ PM], PMQuotaTable [PM], 0) + ROW (PMQuotaTable [#Headers]) + COUNTIF (PMQuotaTable [PM], [@ PM]) - 1), 1))

Я запускаю re gular index/match с типом соответствия = 1, чтобы найти самую большую строку даты, но я динамически создаю целевой диапазон для охвата только строк текущего человека (PM). я отождествляю первую строку этого вечера с этой частью: MATCH ([@ PM], PMQuotaTable [PM], 0) + ROW (PMQuotaTable [#headers])

... и последняя строка для PM, добавив количество строк, которые он имеет в таблице, поэтому извлекается с помощью этого: MATCH ([@ PM], PMQuotaTable [PM], 0) + ROW (PMQuotaTable [#Headers]) + COUNTIF (PMQuotaTable [PM] , [@ PM]) - 1

Динамический диапазон затем строится с использованием INDIRECT. Таким образом, полный диапазон определяется с помощью этой части (для нужного столбца, который нужно получить в конечном итоге): INDIRECT («Quota! $ E $» & MATCH ([@ PM], PMQuotaTable [PM], 0) + ROW (PMQuotaTable [#Headers]) & ": $ E $" & MATCH ([@ PM], PMQuotaTable [PM], 0) + ROW (PMQuotaTable [#Headers]) + COUNTIF (PMQuotaTable [PM], [@ PM]) - 1)

Mor

Смежные вопросы