Création d'une nouvelle colonne basée sur le regroupement d'autres colonnesSalut tout le monde,
J'essaie de créer une nouvelle colonne "Status" qui renverra "Active" ou "Replaced" en fonction de la spécification suivante (partie jointe du tableau avec la colonne "Status" comme illustration du résultat attendu).
Chaque TOOL et Site peut remplacer différents Sub_Tool au fil du temps et exécute plusieurs unités avec son horodatage. Le Sub_Tool le plus récent pour l'outil et le site spécifiques doit recevoir Actif dans la colonne d'état et tous les Sub_Tool précédents qui ont été utilisés sur cet outil et ce site doivent recevoir Remplacé.
Comme dans l'exemple ci-joint, le même Sub_Tool peut se répéter au fil du temps, mais uniquement lors des dernières exécutions, il doit être marqué comme actif.
Le fichier réel a de nombreux outils et chaque outil a de nombreux sites, il faut donc un codage robuste.
Votre aide est très appréciée.
Re : Création d'une nouvelle colonne basée sur le regroupement d'autres colonnesMerci pour le fichier de test plus complet et pour vos tests de mon code initial.
Voici une nouvelle version du format
If( Row() > 1,
If( :TOOL != Lag( :TOOL ) | :SITE != Lag( :SITE ) | Row() == N Rows( Current Data Table() ),
TargetValue = :SUB_TOOL[Row() - 1];
:Active2[Row() - 1] = "Active";
For( i = Row() - 1, i >= 1, i--,
If( :SUB_TOOL[i] == TargetValue,
:Active2[i] = "Active",
Break()
)
);
)
);
If( Row() == N Rows( Current Data Table() ),
"Active",
"Replaced"
);
Vous devrez remplacer les références de colonne dans le code de "Active2" par le nom de colonne que vous donnez à la colonne.
Maintenant ma question pour vous est :
Comprenez-vous comment la formule fonctionne?
Si ce n'est pas le cas, vous devez étudier le code et poser des questions sur le code, afin de le comprendre et de pouvoir apporter les modifications nécessaires à l'avenir.
Re : Création d'une nouvelle colonne basée sur le regroupement d'autres colonnesMerci pour votre temps consacré à résoudre ce problème, le script suggéré donne les mauvaises intentions suivantes à la colonne créée Sub_Tool_Status :
1. La valeur de ligne la plus récente donne Remplacé (fichier joint ligne 91 marqué en jaune)
2. La ligne la plus récente est vide (fichier joint dernière ligne)
2. Lorsqu'il y a plusieurs remplacements, seule la dernière ligne avant le remplacement donne Remplacé et ne met pas à jour les lignes précédentes (fichier joint marqué de deux nuances vertes)
Re : Création d'une nouvelle colonne basée sur le regroupement d'autres colonnesVoici l'une des nombreuses façons qui peuvent probablement obtenir la nouvelle colonne calculée.Créez simplement une nouvelle colonne de caractères, collez la formule ci-dessous dans la nouvelle colonne et remplacez les références par "Active2" par le nom de la nouvelle colonne que vous avez créée.
If( Row() > 1,
If( :TOOL != Lag( :TOOL ) | :Site != Lag( :Site ) | Row() == N Rows( Current Data Table() ),
TargetValue = :Sub_Tool[Row() - 1];
:Active2[Row() - 1] = "Active";
For( i = Row() - 2, i >= 1, i--,
If( :Sub_Tool[i] == TargetValue,
:Active2[i] = "Active",
:Active2[i] = "Replaced";
Break();
)
);
)
);
If( Row() == N Rows( Current Data Table() ),
"Active",
"Replaced"
);
Re : Création d'une nouvelle colonne basée sur le regroupement d'autres colonnesSalut,
La table d'origine aura de nombreuses autres colonnes sur lesquelles je calculerai des statistiques avec le Sub_Tool. Par conséquent, non seulement la dernière ligne doit être marquée comme Acitve, mais l'ensemble du lot sur lequel le dernier Sub_Tool a été exécuté. Que oui, j'ai besoin de Découvrez ce que le dernier sous-outil a été utilisé pour l'outil et le site, puis marquez comme actives toutes les lignes jusqu'au moment où le sous-outil change.
Re : Création d'une nouvelle colonne basée sur le regroupement d'autres colonnesD'après ma lecture de votre définition, je peux trouver que la ligne 36 est considérée comme active, mais à part voir que les lignes 28 à 35 ont la valeur save SubTool, je ne comprends pas pourquoi ces lignes devraient être marquées comme actives.
Ou, est-ce que vous voulez faire, une simple question de savoir ce que le dernier sous-outil a été utilisé pour l'outil et le site, puis de marquer comme actives toutes les lignes jusqu'au moment où le sous-outil change ?????
je suis confus