Excelシートに結​果を出力する際に末尾​のデータではなく列ベ​クトルの方に追加して​いく場合

15 views (last 30 days)
加藤 駿介
加藤 駿介 on 23 Jan 2022
Moved: Atsushi Ueno on 17 Aug 2022
MATLABで計算した結果をexcelシートに出力をしています。
Excelの末尾にデータを追加するコードに関してはwritetable(result,filename,'Writemode','append')といったようにすると末尾にデータが追加されていくことを確認しました。result2.xlsxに記載しています。
しかし、私はこの末尾にデータが追加されることではなく行ベクトルに追加していく方法が知りたいです。
ご教示いただけないでしょうか。
  2 Comments
Atsushi Ueno
Atsushi Ueno on 25 Jan 2022
Moved: Atsushi Ueno on 17 Aug 2022
>末尾​のデータではなく列ベ​クトルの方に追加して​いく場合
一旦ファイルを読み込んで、メモリ上でテーブル列を追加してから(追記ではなく新規に)ファイルに書き込む方法
OldTable = readtable('result2.xlsx'); % 既存テーブルの読み込み
NewTable = randi(30,[30 1]); % ダミーデータ
AddedTable = [OldTable table(NewTable)]; % 既存テーブルに列を追加
writetable(AddedTable,'result2.xlsx'); % 追加したテーブルの書き込み
  • メリット:table型データを書き込む為、不正な形式の表になるおそれが無い
  • デメリット:一度ファイルから読み込み、再度ファイルに書き込む必要がある
readtable('result2.xlsx') % 再度読み込んで確認してみる
ans = 30×3 table
Var1 Var2 NewTable ____ _______ ________ 1 1.04 22 2 0.99979 8 3 1.04 29 4 1.04 5 5 1.04 11 6 1.0027 23 7 1.0032 30 8 0.96049 23 9 1.04 4 10 1.04 28 11 1.0596 12 12 1.04 24 13 1.04 20 14 1.04 7 15 1.0393 26 1 1.04 9
Atsushi Ueno
Atsushi Ueno on 25 Jan 2022
Moved: Atsushi Ueno on 17 Aug 2022
>末尾​のデータではなく列ベ​クトルの方に追加して​いく場合
ファイルに追記する方法
NewTable = randi(30,[30 1]); % ダミーデータ
writetable(table(NewTable),'result2.xlsx','Sheet',1,'Range','D5'); % 正しくは'C1'への追記が必要
  • メリット:既存ファイルに直接追記できる
  • デメリット:追記箇所(シートやセル番号)を誤ると予期せぬ上書きや表の形が壊れるおそれがある
readtable('result2.xlsx') % 読み込んで確認してみる(わざと予期しない位置'D5'に追記してみた場合)
ans = 31×4 table
Var1 Var2 Var3 Var4 ____ _______ ____ ____ 4 1.04 NaN NaN 5 1.04 NaN 9 6 1.0027 NaN 12 7 1.0032 NaN 24 8 0.96049 NaN 20 9 1.04 NaN 8 10 1.04 NaN 16 11 1.0596 NaN 11 12 1.04 NaN 13 13 1.04 NaN 9 14 1.04 NaN 20 15 1.0393 NaN 5 1 1.04 NaN 1 2 0.99979 NaN 19 3 1.04 NaN 7 4 1.04 NaN 3

Sign in to comment.

Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!