Reading Selected Columns from an Excel Using the "readtable" Option

368 views (last 30 days)
If we have an Excel file, and instead of selecting a range of columns, I would like to select certain columns. The following syntax can read the range of columns
Table_1 = readtable('FileName.xlsx','Sheet','SheetName','Range','A1:E11'). What is the syntax for reading column A from row 50 to 10000 and column C from row 50 to10000 and skipping columns B?
This is MATLAB 2019a.

Accepted Answer

Guillaume on 21 Sep 2019
readtable does not accept disjoint ranges (e.g. 'A50:A10000,C50:C10000') so you don't have a choice but read the B column as well and discard afterward:
Table_1 = readtable('FileName.xlsx','Sheet','SheetName','Range','A50:C10000'); %read column A to C
Table_1(:, 2) = []; %discard B column
Alternatively, you could use detectImportOptions then modify the import options to remove the columns you don't want:
opts = detectImportOptions('FileName.xlsx','Sheet','SheetName','Range','A50:C10000'); %still have to specify the full range
opts.SelectedVariableNames = opts.SelectedVariableNames([1, 3]); %ignore second column
Table_1 = readtable(FileName.xlsx', opts)
Another workaround might be to name the desired range in excel but I can't remember if you can create named disjoint ranges. If it's possible, you could pass the range name to readtable. Of course, this requires the range to be named beforehand in excel, so may not be practical.
  1 Comment
FW on 21 Sep 2019
Thank you. Glad to know that disjoint columns cannot be read. I was searching for almost a day.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!