J'ai toutes ces données sur les tests:
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
Bien que chaque test commence et se termine à une heure précise, le planificateur pour les tests réserve une plage de temps entière d'une demi-heure. Par conséquent, j'indique les temps avec FLOOR et CEILING.
Chaque test utilise un contrôleur spécifique et pendant l'exécution, aucun autre test ne peut utiliser ce contrôleur.
À partir de ces données, je souhaite calculer le nombre maximal de contrôleurs simultanés utilisés pour une période donnée. Pour ce faire, j'ai pensé pouvoir calculer le nombre de contrôleurs utilisés lors du démarrage d'un test donné, car c'est le seul moment où le nombre de contrôleurs utilisés augmentera.
Donc, ma formule était la suivante: (en utilisant la très belle syntaxe de données de table de 2010)
=COUNTIFS([start timeslot],"<="&[@[start timeslot]],[end timeslot],">"&[@[start timeslot]])
Cependant, étant donné que l'arrondi de plages horaires introduit un chevauchement entre les tests qui ne se chevauchent pas réellement, les compteurs compteront les tests sur le même contrôleur autant de fois qu'ils se produiront.
J'ai besoin d'un moyen de faire en sorte que COUNTIFS compte les valeurs en double une seule fois quand elles se produisent dans les plages correspondantes.
Voici un fichier Excel avec des exemples de données et mes formules:
Plus d'informations:
J'ai en fait construit une formule matricielle qui calcule les nombres que je veux:
{=SUM(--([start timeslot]<=[@[start timeslot]])*--([end timeslot]>[@[start timeslot]])*IFERROR(1/COUNTIFS([controller],[controller],[start timeslot],"<="&[@[start timeslot]],[end timeslot],">"&[@[start timeslot]]),0))}
Les objets COUNTIF dans cette formule génèrent un tableau pondéré du nombre de fois qu'un contrôleur spécifique se produit dans l'ensemble de tests en cours d'exécution au démarrage du test en cours. Ainsi, la fonction sum comptera deux tests qui utilisent le contrôleur chacun comme 1/2, ce qui entraîne le comptage de ce contrôleur une seule fois au total.
Cependant, mon jeu de données réel compte plus de 3 000 lignes et ma formule matricielle apporte un mauvais Excel à genoux. (Même ma fonction de compte-rendu erronée COUNTIFS prend environ 30 secondes sur mon ancien ordinateur portable dual-core. La formule matricielle correspond à 1% en calculant toutes les minutes environ; _;)
la source
end ts
colonne lors du calcul de laend
colonne?Réponses:
Eh bien, si vous voulez le faire dans Excel, pourquoi ne pas utiliser un tableau croisé dynamique. Ils ont été conçus pour un résumé de données comme ceci:
(S'il vous plaît noter le compte dans la colonne extérieure droite)
PS Vous pouvez sélectionner n’importe quel groupe de données que vous souhaitez (début, fin, début, fin, .....)
la source