xlsread 数値文字混合 別処理

19 ビュー (過去 30 日間)
Y.Suzuki
Y.Suzuki 2018 年 2 月 23 日
コメント済み: Jiro Doke 2018 年 2 月 23 日
数値と文字混合のエクセル表を読み込んで、要素が数値の処理1と、要素が文字であった場合の処理2を、行いたいです。D1=xlsread(filename)とした際、D1(i,m)の要素のデータ型の判別の方法と、処理2において、別のシートにそのまま(文字のまま)コピーするといった処理の方法を教えてください。

回答 (1 件)

Jiro Doke
Jiro Doke 2018 年 2 月 23 日
編集済み: Jiro Doke 2018 年 2 月 23 日
ドキュメンテーションをご覧になっていただくと分かりますが xlsread は自動的に数値と文字を分けて読み込めるので、こんな感じでできるかと思います。
[num,txt] = xlsread('abc.xlsx');
xlswrite('abc.xlsx',txt,'Sheet2')
num は数値データしか含まないので(数値以外は NaN として格納される)、もし要素ごとに数値かどうかチェックする場合は、
if ~isnan(num(i,m))
% 処理
end
txt は文字情報のみを含むので、そのまま xlswrite で別のシートに書き出せます。
  2 件のコメント
Y.Suzuki
Y.Suzuki 2018 年 2 月 23 日
jiro様、ありがとうございます。 質問が悪く、訂正させていただきます。 ●各要素のデータ型を知りたいです。要素は、未入力、数値、文字列があり、1要素づつデータ型を知りたいです。その理由は、①各データ型で処理内容が変わります。②同じデータ型であっても、何行目であるか、また何列目であるかで、さらに処理が変わります。isempty,isintegerを導入したり、セル配列て試してみたり、うまくいっていない状況です。
Jiro Doke
Jiro Doke 2018 年 2 月 23 日
お手数ですが、こちらで試せるサンプルのExcelファイル提供していただけますか?そのデータに対して具体的にどの要素をどう処理したい、などなるべく詳しく記述していただくと助かります。それに、試されたコードもここに追加して頂くと具体的にどこが問題かわかりやすいと思います。
データ型を確認するためには isa 関数が使えます。例えば、 data がセル配列の場合、i, j 要素が double かチェックするには
if isa(data{i,j},'double')
% 処理
end

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

Community Treasure Hunt

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

Start Hunting!