cellの最後の値の座標を求めたい
3 views (last 30 days)
Show older comments
rangeでデータの範囲を指定したいのですが、データによって得たデータのサイズが異なり、cellの位置が変わるためうまくできません。解決法があるのであれば教えていただきたいです。よろしくおねがいします。
[file,path] = uigetfile('*.csv');
% ファイル名と拡張子を分割する
[~,name,ext] = fileparts(file);
% ファイルを選択して、切り抜く場所を選んでP1とおく。
C = readcell([path,file],'Range','B42:[データの最後のcellを入れたい]');
%csvとしてフォルダに書き出す
writecell(C,[name ' ttt' ext]);
Accepted Answer
Atsushi Ueno
on 22 Oct 2022
>データのサイズが異なり、cellの位置が変わるためうまくできません。解決法があるのであれば教えていただきたいです。
読み取り終了位置がファイルの最後の場合、終了行および終了列を指定しなくても自動検出機能を使う事が出来ます。
(読み取り終了位置がファイルの最後ではない場合は、必要最小限のデータを一旦読み取って、何らかの認識方法で不要部分を削除する必要があります。)
readcell関数の「Range の指定方法」を「四角形の範囲'B42:最後のcell'」から「開始セル'B42'」に替えれば解決します。
>インポート関数は、インポートを開始セルで開始し、最後の空の行またはフッター範囲で終了することで、データの範囲を自動的に検出します。(readcellー入力引数ーRange — 読み取るデータの部分ー開始セルの説明より抜粋)
分かり易い様にサイズの小さいサンプルデータを準備しました。B42セルから読み取るとD44まで、即ち3行3列のデータが読み込まれるはずです

%[file,path] = uigetfile('*.csv');
path = [pwd '/'];
file = 'Book2.csv'; % 分かり易い様にサイズの小さいサンプルデータを準備
% ファイル名と拡張子を分割する
[~,name,ext] = fileparts(file);
% ファイルを選択して、切り抜く場所を選んでP1とおく。
C = readcell([path,file],'Range','B42');
size(C) % 期待通り、最後のセルを指定しなくても自動検出によって読み込めた
%csvとしてフォルダに書き出す
writecell(C, [name ' ttt' ext]);
ls -la
More Answers (0)
See Also
Categories
Find more on テキスト ファイル in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!