<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto cercando di trovare un modo per rimuovere righe che hanno celle identiche in alcune colonne ma non in altre.
Ad esempio, desidero trovare le righe in cui i valori per le colonne PartNo, SerialNum e Site sono identici ma non Customer and Value. Quindi voglio cancellare una di queste righe. Nel
In questo caso, verrei lasciato con le righe 1,3 e 4-vedere di seguito.
Grazie
| Parte n | Numero di serie | Posto | Cliente | Valore |
|---|
| 1 | 2 | 3 | un | 1.5 |
| 1 | 2 | 3 | B | 2 |
| 3 | 4 | 5 | c | 3 |
| 2 | 3 | 4 | d | 5 |
| 2 | 3 | 4 | e | 6 |
Se si desidera eseguire lo scripting, il codice seguente mostra un esempio che conserva solo la prima istanza di una riga duplicata. Sfrutta il fatto che la tabella riassuntiva è collegata alla tabella dei dettagli.
// Dati di esempio
dt1 = Aperto ( "$ SAMPLE_DATA / Big Class.jmp" ) ;
// Quali colonne vengono utilizzate per definire i duplicati?
keyCols = { "Età" , "Sesso" } ;
// Crea una tabella di riepilogo invisibile, collegata, dt2
dt2 = dt1 << Sommario ( Gruppo ( Eval ( keyCols )) , Invisibile ) ;
// Passa sopra le righe di dt2 ...
rows2Keep = [] ;
per ( r = 1 , r <= nRows ( dt2 ) , r ++,
// ... seleziona ogni riga a turno
dt2 << SelectRows ({ r }) ;
// Trova le righe corrispondenti in dt1
duplicateRows = dt1 << GetSelectedRows ;
// Mantieni solo il primo
rows2Keep = VConcat ( rows2Keep , duplicateRows [ 1 ]) ;
// Rimuovi la selezione corrente
dt2 << ClearSelect ;
) ;
Vicino ( dt2 , NOSAVE ) ;
// Elimina le righe in dt1 che sono duplicati
rows2Delete = ( 1 :: nRow ( dt1 )) `;
rows2Delete [ rows2Keep ] = [] ;
dt1 << DeleteRows ( rows2Delete ) ;
Ciao,
Puoi utilizzare Join per unire la tabella a se stessa, facendo corrispondere le colonne Numero di parte, Numero di serie e Sito e rilascia multipli. Ecco come appare la finestra di dialogo Join per questo caso.
Spero che sia d'aiuto!