如何在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数据填充之前为空。

这对我有用…希望它也可以帮助你。