Fazer os COUNTIFS contarem valores duplicados apenas uma vez

2

Eu tenho todos esses dados em testes:

controller  start   end start ts    end ts
1           1:13    1:15    1:00    1:30
1           2:08    2:25    2:00    2:30
4           4:02    4:16    4:00    4:30    
4           4:17    5:35    4:00    6:00
2           4:03    5:39    4:00    6:00

Embora cada teste inicie e termine em um horário específico, o agendador dos testes reserva um intervalo de tempo de meia hora inteiro, por isso, saúdo os horários com FLOOR e CEILING.

Cada teste usa um controlador específico e, durante a execução, nenhum outro teste pode usar esse controlador.

A partir desses dados, quero calcular o número máximo de controladores simultâneos em uso para um período de tempo específico. Para fazer isso, imaginei que poderia calcular o número de controladores em uso quando um determinado teste é iniciado, já que é a única vez em que o número de controladores em uso aumentará.

Então, minha fórmula para isso foi: (usando a sintaxe de dados de tabela muito legal de 2010)

=COUNTIFS([start timeslot],"<="&[@[start timeslot]],[end timeslot],">"&[@[start timeslot]])

No entanto, como o arredondamento do período de atividade introduz a sobreposição entre os testes que realmente não se sobrepõem, os contagens contarão os testes no mesmo controlador quantas vezes eles ocorrerem.

Eu preciso fazer com que o COUNTIFS conte valores duplicados apenas uma vez quando eles ocorrerem nos intervalos correspondentes.

Aqui está um arquivo do Excel com alguns dados de amostra e minhas fórmulas:

http://dl.dropbox.com/u/123900/sumproducttest.xlsx

Mais informações:

Na verdade, eu construí uma fórmula de matriz que calcula os números que eu quero:

{=SUM(--([start timeslot]<=[@[start timeslot]])*--([end timeslot]>[@[start timeslot]])*IFERROR(1/COUNTIFS([controller],[controller],[start timeslot],"<="&[@[start timeslot]],[end timeslot],">"&[@[start timeslot]]),0))}

Os CONTENTES dentro dessa fórmula de matriz geram uma matriz ponderada de quantas vezes um controlador específico ocorre dentro do conjunto de testes que estão sendo executados quando o teste atual é iniciado. Assim, a função soma contará dois testes que usam o controlador como 1/2, resultando na contagem desse controlador apenas uma vez.

No entanto, meu conjunto de dados reais tem mais de 3000 linhas e minha fórmula de matriz reúne o Excel de baixa qualidade. (Mesmo a minha função de relatórios incorretos do COUNTIFS leva ~ 30 segundos no meu laptop dual-core antigo, então a fórmula de matriz é de 1%, calculando a cada minuto mais ou menos; _;)

    
por blendmaster 20.07.2011 / 20:19

1 resposta

1

From this data I want to calculate the max number of concurrent controllers in use for a specific time period.

Bem, se você quiser fazer isso no Excel, por que não usar uma tabela dinâmica? Eles foram designados para resumo de dados como este:

(Por favor note o countif na coluna da direita)

PS. Você pode selecionar qualquer agrupamento de dados desejado (iniciar, terminar, iniciar ts, terminar ts, .....)

    
por 13.02.2013 / 19:47