Ordering the name of excel files from short to longer length

1 回表示 (過去 30 日間)
Adi Purwandana
Adi Purwandana 2023 年 9 月 12 日
コメント済み: Adi Purwandana 2023 年 9 月 12 日
Hello everyone,
I have a script which split an excel file into several excel files using this code:
data = readtable('dataset.xlsx');
stations = unique(data.Station);
for i=1:numel(stations)
x = data(data.Station==stations(i), :);
writetable(x,"Sta_"+num2str(stations(i))+".xlsx");
end
FYI, each file created using such code has different lengths. For example:
Sta_1 --> 8 rows;
Sta_2 --> 3 rows;
Sta_3 --> 6 rows.
My question is... is it possible to order from the shorter length to longer length when using writable function?
So, I want the file names is ordered based on the length of the file, i.e.,
Sta_1 --> file with 3 rows;
Sta_2 --> file with 6 rows;
Sta_3 --> file with 8 rows.
Thanks

採用された回答

kei hin
kei hin 2023 年 9 月 12 日
編集済み: kei hin 2023 年 9 月 12 日
Check the length inside the for loop and store the sorted result in variables, then use the writetable outside the for loop.
  3 件のコメント
kei hin
kei hin 2023 年 9 月 12 日
code like this. It may not be exactly what you need.
data = readtable('dataset.xlsx');
stations = unique(data.Station);
tmp = {};
for i=1:numel(stations)
x = data(data.Station==stations(i), :);
if isempty(x)
continue; %empty skip
end
tmp{end+1,1} = x;
[row,col] = size(x);
tmp{end,2} = row; % length, for sort
end
result = sortrows(tmp,2); % sort by length
for i=1:length(result)
writetable(result{i,1},"Sta_"+num2str(stations(i))+".xlsx");
end
Adi Purwandana
Adi Purwandana 2023 年 9 月 12 日
It perfectly works! Thank you very much @kei hin!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSpreadsheets についてさらに検索

製品


リリース

R2022a

Translated by