2014-12-28 1 views
0

동일한 형식의 여러 Excel 파일이있는 C 드라이브의 디렉토리가 있습니다. 나는 온라인으로 볼 수있는 다음 스크립트를 사용하여 새 파일로 각 파일에서 열 H를 복사 할 것입니다 ". 첨자 지정 치수 불일치"xlsread를 사용하여 여러 Excel 파일에서 같은 열을 추출하십시오.

dirs=dir('C:\xxx\*.xlsx'); 
dircell=struct2cell(dirs); 
filenames=dircell(1,:); 
range = 'H:H'; 
n = (numel(filenames)); 
for i = 1:n; 
    Newfile(:,i) = xlsread(filenames{i},range); 
end 

이것은의 오류 메시지를 제공을 결과 파일 (Newfile)에서 한 열만 추출됩니다.

범위를 가지고 놀았으며 xlsread가 첫 번째 파일 목록 끝에 도달하면 오류가 발생하고 값이 비어있을 때 오류가 발생한다는 사실을 알았습니다. 내 열 H의 채워진 값의 수가 다릅니다 (즉, 파일 1은 20, 파일 2는 100, 파일 3은 3 등).

그래서 내 질문은이 스크립트를 수정하여 빈 셀을 만났을 때 빈 셀 또는 NaN 셀 중 하나가 추출되고 가장 중요한 것은 다음 열로 이동한다는 것입니다.

미리 도움을 주셔서 감사합니다.

답변

0

집에서 Matlab을 사용하지 않으면 머리 꼭대기에서 가져와야합니다. 읽고 열, H, 이후
는 직접 결과 배열이를 새로 강제 아니라 임시 변수를 사용하려고해서는 안 유효한 항목의 서로 다른 번호를 가지고

dirs=dir('C:\xxx\*.xlsx'); 
dircell=struct2cell(dirs); 
filenames=dircell(1,:); 
range = 'H:H'; 
n = numel(filenames); 
Newfile = NaN*ones(1, n); 
for nf = 1:n; 
    tempVar = xlsread(filenames{nf},range); 
    r = size(NewFile,1); % get number of rows in NewFile 
    if length(tempVar) > r 
     % Make Newfile big enough to fit column nf 
     Newfile = [Newfile;NaN*ones(length(tempVar)-r,n)]; 
    end 
    Newfile(:,nf) = tempVar; 
end