D'abord, vous pouvez extraire tout à partir d'Excel dans un réseau de cellules en utilisant
[~,~,raw] = xlsread('MyExcelFilename.xlsx')
Ensuite, vous pouvez écrire une fonction simple qui renvoie un numéro de la chaîne en fonction de « B », « M » et ainsi de suite. Voici un exemple:
function mynumber = myfunc(mystring)
% get the numeric part
my_cell = regexp(mystring,'[0-9.]+','match');
mynumber = str2double(my_cell{1});
% get ending characters
my_cell = regexp(mystring,'[A-z]+','match');
mychars = my_cell{1};
% multiply the number based on char
switch mychars
case 'B'
mynumber = mynumber*1e9;
case 'M'
mynumber = mynumber*1e6;
otherwise
end
end
Bien sûr, il existe d'autres méthodes pour diviser la chaîne numérique du reste, utilisez ce que vous voulez. Pour plus d'informations, voir la documentation regexp
. Enfin utiliser cellfun
pour convertir réseau de cellules à un tableau numérique:
my_array = cellfun(@myfunc,raw);
Merci Andrei .. Je voulais savoir est-il une fonction intégrée pour le formatage, il semble qu'il n'y a pas un tel F .... – MDBX
votre code fonctionne bien pour un tableau de cellules (notre brut importé) seulement si toutes les cellules ont des caractères (M ou B) et si nous avons un raw = {'50M', '2.22M', 20 '5.258B', 50, 10} où il y a des éléments sans char ? merci – MDBX
Vous pouvez faire une vérification isempty: 'if isempty (my_cell) mychars = ''; sinon mychars = my_cell {1}; end' L'interrupteur ira dans la condition contraire et ne fait rien avec le numéro. – Andrei