<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai essayé de trouver un moyen de supprimer les lignes qui ont des cellules identiques dans certaines colonnes mais pas dans d'autres.
Par exemple, je souhaite rechercher des lignes dans lesquelles les valeurs des colonnes PartNo, SerialNum et Site sont identiques, mais pas Client et Valeur. Ensuite, je veux supprimer une de ces lignes. Dans
Dans ce cas, je resterais avec les rangées 1,3 et 4 - voir ci-dessous.
Merci
| Numéro de la pièce | Numéro de série | Site | Client | Valeur |
|---|
| 1 | 2 | 3 | une | 1,5 |
| 1 | 2 | 3 | b | 2 |
| 3 | 4 | 5 | c | 3 |
| 2 | 3 | 4 | ré | 5 |
| 2 | 3 | 4 | e | 6 |
Si vous souhaitez le faire via un script, le code suivant montre un exemple qui conserve uniquement la première instance d'une ligne en double. Il exploite le fait que la table de synthèse est liée à la table de détail.
// Exemple de données
dt1 = Ouvrir ( "$ SAMPLE_DATA / Big Class.jmp" ) ;
// Quelles colonnes sont utilisées pour définir les doublons?
keyCols = { "Âge" , "Sexe" } ;
// Crée un tableau récapitulatif lié et invisible, dt2
dt2 = dt1 << Résumé ( Groupe ( Eval ( keyCols )) , Invisible ) ;
// Boucle sur les lignes de dt2 ...
rows2Keep = [] ;
pour ( r = 1 , r <= NRows ( dt2 ) , r ++,
// ... sélectionne chaque rangée
dt2 << SelectRows ({ r }) ;
// Trouver les lignes correspondantes dans dt1
duplicateRows = dt1 << GetSelectedRows ;
// Ne garde que le premier
rows2Keep = VConcat ( rows2Keep , duplicateRows [ 1 ]) ;
// Supprimer la sélection en cours
dt2 << ClearSelect ;
) ;
Fermer ( dt2 , NoSave ) ;
// Supprimer les lignes en double dans dt1
rows2Delete = ( 1 :: NRow ( dt1 )) `;
rows2Delete [ rows2Keep ] = [] ;
dt1 << DeleteRows ( rows2Delete ) ;
Bonjour,
Vous pouvez utiliser Join pour joindre la table à elle-même, en faisant correspondre les colonnes Numéro de pièce, Numéro de série et Site, et en supprimant des multiples. Voici à quoi ressemblerait la boîte de dialogue Joindre dans ce cas.
J'espère que cela pourra aider!