複数データのExcelファイルへの書き込み

ワークスペース内にあるデータ(y1~y31)をエクセルのファイルに書き込みたいと考えています。以下のコードだとうまくデータが書き込まれないのですが何かアドバイス頂けると幸いです。
for i = 1:31
filename = 'testdata.xlsx';
dataname = sprintf('y%d',i);
sheet = i;
xlswrite(filename,dataname,sheet);
end

 Accepted Answer

mizuki
mizuki on 20 Oct 2016
Edited: mizuki on 20 Oct 2016

2 votes

for ループの中で
>> class(dataname)
を実行すると char (文字列)型であることがわかります。 そのため、XLSWRITE 関数を実行した際に文字列がそのまま書き込まれてしまいます。これを元の型で使用するには EVAL 関数を使用します。
y1 = rand(3,3);
y2 = zeros(5,5);
filename = 'testdata.xlsx';
for i = 1:2
dataname = ['y', int2str(i)]; %sprintf('y%d',i);
sheet = i;
xlswrite(filename, eval(dataname), sheet);
end
ただし、EVAL 関数を使用するとコードが見にくくなったり実行に時間がかかることもありますので、変数を複数に分けるのではなく構造体などで管理されるとよいかと思います。
MATLAB について基本操作の tips を知ることでご業務が効率よく進むかと思います。
MATLAB Onramp という2時間分の無料のオンライン学習サービスがあります。コードの工夫についても説明していますので、お時間のあるときにぜひ使ってみてください。 https://matlabacademy.mathworks.com/jp

2 Comments

Naoki Ishibashi
Naoki Ishibashi on 20 Oct 2016
できました、ありがとうございます
michio
michio on 21 Oct 2016
もしよろしければ回答の Accept もご協力お願い致します。

Sign in to comment.

More Answers (0)

Categories

Asked:

on 19 Oct 2016

Commented:

on 21 Oct 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!