Automatisez la concaténation des tables de données en fonction du nomSalut,
Je souhaite concaténer des tables de données en fonction de leur nom.
Par exemple, j'ai 6 tables de données et leurs noms ressembleront à M1a M1b M2a M2b M3a M3b. Je souhaite donc regrouper tous les appareils M1, etc. Cependant, la partie M1 variera selon le nom, j'ai donc besoin du script pour pouvoir obtenir le nom, puis comparer une partie du nom.
Toute aide pour démarrer est très appréciée
Automatisation et scriptsOrganisation du contenuRe : Automatiser la concaténation des tables de données en fonction du nomLes tables sont-elles déjà ouvertes ? Sinon, sont-ils dans le même dossier et y a-t-il d'autres fichiers dans le dossier ?
<< Obtenir le nom peut être utilisé pour obtenir le nom de la table de données et Obtenir la liste des tables de données() une liste de tables de données ouvertes. Pour comparer les noms de tables de données, il existe de nombreuses options et celles à utiliser dépendent des noms de vos tables de données (Regex est une option).
Re : Automatiser la concaténation des tables de données en fonction du nomVoici un script qui devrait vous permettre de commencer à rédiger votre script final.Il crée des exemples de tables à utiliser pour l'exemple, puis les recherche et fait correspondre les 2 premiers caractères du nom et enfin les concatène.
Names Default To Here( 1 );
// create sample data tables
For( i = 1, i <= 6, i++,
New Table( "M" || Char( Mod( i, 3 ) + 1 ) || Char( i ), New Column( "D" ) );
Data Table( "M" || Char( Mod( i, 3 ) + 1 ) || Char( i ) ) << add rows( 1 );
Column( Data Table( "M" || Char( Mod( i, 3 ) + 1 ) || Char( i ) ), 1 )[1] = i;
);
// Find all data tables that match Mx
concatTableList = {};
shortNameList = {};
For( i = 1, i <= N Table(), i++,
If( Starts With( Data Table( i ) << get name, "M" ),
Insert Into( concatTableList, Data Table( i ) << get name );
Insert Into( shortNameList, Substr( Data Table( i ) << get name, 1, 2 ) );
)
);
// Find the unique key values
theKeys = Associative Array( shortNameList ) << get keys;
// Create the concatenated tables
For Each( {key}, theKeys,
catList = {};
For Each( {tableName}, concatTableList,
If( Starts With( tableName, key ),
Insert Into( catList, tableName )
)
);
If( N Items( catList ) > 1,
dt = New Table( key );
For Each( {cat}, catList, dt << concatenate( Data Table( cat ), append to first table ) );
);
);Re : Automatiser la concaténation des tables de données en fonction du nomVous pouvez également envisager d'utiliser l'importation de fichiers multiples. Combinez toutes les tables en une seule table, puis séparez-les en sous-ensembles à l'aide de la colonne source (créez une nouvelle colonne basée sur la colonne source pour les groupes que vous souhaitez avoir) ou exécutez MFI plusieurs fois à l'aide de caractères génériques * (faites correspondre zéro ou plusieurs caractères), ? (correspond à exactement un caractère) et ; (séparez les différents modèles de noms de fichiers) pour obtenir tous les groupes uniques avec une seule exécution de MFI

Re : Automatiser la concaténation des tables de données en fonction du nomJe ne pense pas que cela puisse fonctionner car ils proviennent tous du même classeur Excel. J'ouvre ce classeur et chaque feuille devient un nouveau tableau de données. Existe-t-il un moyen pour que cela fonctionne ?
Re : Automatiser la concaténation des tables de données en fonction du nomS'il ne s'agit que d'un seul fichier Excel, vous pouvez utiliser l'assistant d'importation Excel.

Activez « Concaténer les feuilles de calcul et essayer de faire correspondre les colonnes » et « Créer une colonne avec le nom de la feuille de calcul lors de la concaténation ». Une fois que vous avez des données dans la table JMP, créez une colonne de regroupement et créez des sous-ensembles selon vos besoins.
Re : Automatiser la concaténation des tables de données en fonction du nomMerci