Für horizontale Verkettung von Blättern
Schritt 1: Stellen ein Zellenfeld Wiederholungen Ihrer Dateinamen (gleiche Anzahl wie Anzahl der Blätter zu kombiniere) enthält, und ein Zellenfeld mit Anzahl der Blätter. Dann verwenden Sie cellfun
, um alle Blätter zu lesen.
Schritt 2: Definieren Sie, aus welcher Spalte Sie Daten schreiben möchten. Das erste Blatt, das Sie gelesen haben, sollte aus der Spalte "A" stammen, nehme ich an. Sie möchten wahrscheinlich in der ersten Zeile beginnen, also range
ist 'A1' zum ersten Mal (d. H. k = 1
) Sie schreiben Daten in Ihre neue Datei. Für k > 1
ist es ein bisschen schwieriger. Sie müssen die Anzahl der Spalten aller Blätter, die Sie gelesen haben, verfolgen, um zu wissen, wo sich der neue Bereich befindet, wenn Sie Blatt 2, 3, ..., n in Ihre neue Datei schreiben. Konvertieren Sie Ihre Anzahl in Excel-Spaltennamen. Dies kann mit dem Befehl char
erfolgen. Achten Sie auf die Verpackung (Nach Z kommt AA).
Lösung:
% STEP 1
n = 3; %number of sheets you want to combine
filename = strcat(cell(1,n), 'C:\Example.xlsx');
sheets = num2cell(1:n);
combinedSheets = cellfun(@xlsread,filename, sheets,'un',0);
% STEP 2
range = {'A1'};
cols = 0;
for k = 1:n
xlswrite('C:\TEST.xlsx',combinedSheets{k},1, cell2mat(range))
cols = cols + size(combinedSheets{k},2);
q = floor(cols/26);
d = mod(cols,26);
range = strcat(cell(1,q+1), 'A');
range{end} = [char(d+'A'),'1'];
end
Für vertikale Verkettung von Blättern
Das ist ein bisschen einfacher, da wir nicht brauchen, Spaltennamen und Verpackung usw.
Lösung zu handhaben :
n = 3; %number of sheets you want to combine
filename = strcat(cell(1,n), 'C:\Example.xlsx');
sheets = num2cell(1:n);
combinedSheets = cellfun(@xlsread,filename, sheets,'un',0);
range = 'A1';
rows = 1;
for k = 1:n
xlswrite('C:\TEST.xlsx',combinedSheets{k},1, range)
rows = rows + size(combinedSheets{k},1);
range = sprintf('A%s', num2str(rows));
end