如何在Excel中取消选择单元格?使用Matlab创建一个图表,用makred区域值添加图形
Excel 2016会记住关闭文件前最后一次“标记”(选定)的单元格,并在下次打开文件时标记相同的单元格 不标记区域的唯一方法是使用例如Matlab创建的未触及文件 如何使用Matlab在Excel中取消标记所有区域? 在我的程序(下面的代码)中,我使用Matlab访问现有的Excel文件。代码将创建一个具有设置范围的新图表 不幸的是,图表中总是创建了更多的图形,范围中总是选择了更多的图形。为了更直观,matlab文件中选定的区域将添加为新图形。(当它为空时,仍将添加一个空图形) 在这里您可以看到标记区域: 然后,在运行代码后,该代码将添加为一个图形,精确显示标记的范围为:如何在Excel中取消选择单元格?使用Matlab创建一个图表,用makred区域值添加图形,excel,matlab,charts,com,Excel,Matlab,Charts,Com,Excel 2016会记住关闭文件前最后一次“标记”(选定)的单元格,并在下次打开文件时标记相同的单元格 不标记区域的唯一方法是使用例如Matlab创建的未触及文件 如何使用Matlab在Excel中取消标记所有区域? 在我的程序(下面的代码)中,我使用Matlab访问现有的Excel文件。代码将创建一个具有设置范围的新图表 不幸的是,图表中总是创建了更多的图形,范围中总是选择了更多的图形。为了更直观,matlab文件中选定的区域将添加为新图形。(当它为空时,仍将添加一个空图形) 在这里您可以看
带有代码和信息的原始程序,用于理解项目: 最初目标:
- 使用Matlab在已存在的
文件中自动创建图表.xlsx
- 轻松自由选择范围、X值和Y值(按页和列)
- 适用于
文件上的所有大小。(最多20.000行、50列和多张图纸).xlsx
一般问题:
- 未接触的文件可以工作
- 每隔一个文件都会添加额外的图形
代码: 代码的作用: 当它工作时,将创建一个新图表,其中a列为X值,第3至7列为Y值,列的
colnames
当它不工作时,它会做与工作时相同的事情,但会向图表中添加更多的图形。Tp确切地说,它将文件的每一列添加为Y值,而不添加X值(因此1,2,3,4…),使用第一行作为它们的名称
问题摘要
- 有没有办法使用Matlab代码在Excel中取消标记、取消选择区域
- 你知道问题出在哪里吗
- 有什么有用的解决办法吗
- 我找到了一个解决办法。或者更多地解决这个问题
因此:问题是,即使在您选择自己的数据和X值和Y值之前,预选的单元格也会自动显示在图表中
解决方案:
在自动创建图表和选择您自己的数据的步骤之间清除图表
为此,只需在
SheetObj=Excel.Worksheets.get('Item','Tabelle1')之后放置一行代码>:
因此,在选择要填充的数据之前,图表将为空
这对我有用。。。希望它也能帮助你
% 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
%% Clear content
Chart.ChartArea.ClearContents;