如何在Excel中取消select单元格? 使用Matlab创build一个图表添加具有makred面积值的graphics
Excel 2016会在closures文件之前记住您最后标记(选定)的单元格,并在文件的下一个开始处标记相同的asrea。
不标记区域的唯一方法是由Matlab创build的未触摸的文件。
如何取消使用Matlab在Excel中的所有区域?
在我的程序(下面的代码)中,我使用Matlab访问现有的Excel文件。 该代码创build一个设置范围的新图表。
不幸的是,总是在图表中创build更多的图表,并在范围内select。 为了更加精确,在matlab文件中select的区域将被添加为新的graphics。 (当它是空的,一个空的图将被添加)
在这里你可以看到标记的区域:
然后运行后的代码将被添加为一个graphics,确切地说,标记的范围是:
具有代码和信息的原始程序,用于了解项目:
原定目标:
- 使用Matlab在已经存在的
.xlsx
文件中自动创build图表 - 简单的方法可以自由select范围,X和Y值(按表和列)
- 适用于
.xlsx
文件的所有大小。 (高达20,000行,50列和几张)
一般问题:
- 未触及的文件工作
- 在其他文件中总是添加额外的graphics
码:
% Start Excel and open workbook Excel = actxserver('Excel.Application'); WB = Excel.Workbooks.Open('C:\...\test.xlsx'); %the workbook Excel.visible = 1; % Add chart Chart = invoke(WB.Charts,'Add'); % Get Sheet object SheetObj = Excel.Worksheets.get('Item', 'Tabelle1'); % 'Tabelle1' is german Ecel equation for 'sheet1' %% FORMATTING %% % Name chart sheet Chart.Name = 'TestChart'; % Set chart type Chart.ChartType = 'xlXYScatterSmoothNoMarkers'; % Set chart title, see https://msdn.microsoft.com/en-us/library/office/ff196832.aspx Chart.HasTitle = true; Chart.ChartTitle.Text = 'Test Title'; % Set chart legend, see https://msdn.microsoft.com/en-us/library/office/ff821884.aspx Chart.HasLegend = true; %% Set source data range of chart, do X and Y data for each series columns = 3:7; % set columns 3 to 7 as Y-Values %% colnames = {'xdata', 'my series 1', 'my series 2', 'my series 3','my series 4','my series 5','my series 6', 'my series 7', 'my series 8','my series 9'}; for col = columns %% Get Excel column *letter* from column *number* colchar = strrep([char(96+floor((col-1)/26)) char(97+rem(col-1,26))],char(96),''); % Last row of data, see https://msdn.microsoft.com/en-us/library/office/ff839539.aspx %% Data must be contiguous (no gaps / blank cells) lastrow = num2str(SheetObj.Range([colchar, '2']).End('xlDown').Row); %% Y data, creating range strings by concatenation of column character and row number Srs = Chart.SeriesCollection.Add(SheetObj.Range([colchar, '2:', colchar, lastrow])); %% X data, same approach is used for last row, but only column = 1 = "A" Srs.XValues = SheetObj.Range(['A2:A', lastrow]); % set column A as X-Value %% Set column name Srs.Name = colnames{col}; end
代码的作用是:
当它工作时 ,会创build一个新的图表,它具有列A作为X值,列3到7作为具有该列的列名的Y值。
当它不起作用的时候 ,它的function和它的function一样,但是它的工作原理却增加了更多的图表。 Tp是确切的,它将文件的每一列都作为Y值添加,没有X值(所以1,2,3,4 …),使用第一行作为它们的名字。
问题摘要
- 有没有办法取消选中,使用Matlab代码在Excel中select区域?
- 你知道问题来自哪里吗?
- 有用的解决scheme
我发现自己是个解决scheme。 或者更多的解决这个问题的方法。
所以问题是 ,即使在您select自己的数据和X和Y值之前,预选单元格也会自动显示在您的图表中。
解:
清除自动graphics创build和select自己的数据的步骤之间的图表
要做到这一点,你只需要在SheetObj = Excel.Worksheets.get('Item', 'Tabelle1');
之后放置这个SheetObj = Excel.Worksheets.get('Item', 'Tabelle1');
:
%% Clear content Chart.ChartArea.ClearContents;
因此您的图表将在您select数据填充之前为空。
这对我有用…希望它也可以帮助你。