Excel中基于两个关联数据表生成带整体趋势线的散点图的方法咨询
Excel中基于两个关联数据表生成带整体趋势线的散点图的方法咨询
嗨,我完全懂你的烦恼——手动创建165个数据系列不仅耗时耗力,还没法生成覆盖所有数据的整体趋势线,这确实让图表失去了分析意义。其实核心问题在于Excel散点图需要的是成对的一维数据列(一列X、一列Y),而不是你当前的二维表格布局,咱们只要把数据转换成合适的格式,就能一次性解决这两个问题。
下面给你两种实用方案,根据你的习惯选就行:
方案一:用Power Query快速重塑数据(推荐,适合大量数据且支持后续更新)
这个方法能自动把二维表格转换成散点图需要的成对数据,而且以后新增训练数据时,只要刷新就能自动更新图表,一劳永逸:
- 第一步:选中「Accuracy」表格的所有数据(包括日期列和所有trial列),点击Excel顶部的「数据」选项卡,选择「从表格/区域」,把数据导入Power Query编辑器(如果提示表格没有表头,记得勾选「我的表格有标题」)。
- 第二步:在Power Query里,选中「日期」列,然后点击「转换」选项卡的「逆透视列」→「逆透视其他列」。这一步会把每个日期下的所有trial数据拆成三行:日期、属性(即trial名称,比如Trial 1)、值(准确率数值)。把「值」列重命名为「准确率」。
- 第三步:用同样的方法处理「Time to Kill」表格,得到三列:日期、属性、值,把「值」列重命名为「击杀时间」。
- 第四步:合并两个处理好的表格:在Power Query的「主页」选项卡点击「合并查询」,选择刚才处理好的两个表格,用「日期」和「属性」作为匹配列,合并类型选择「仅匹配」,确保每一组日期+trial的准确率和击杀时间对应上。
- 第五步:合并后,点击合并列右侧的展开按钮,选择「击杀时间」列展开,然后删除不需要的列(比如「属性」列如果不需要保留的话)。最后点击「关闭并上载」,把整理好的数据导出到新的工作表——现在你就有整齐的两列:「准确率」(X轴)和「击杀时间」(Y轴),所有trial的(X,Y)对都在这里了。
- 第六步:选中这两列数据,插入散点图,然后直接给这个唯一的数据系列添加趋势线,这条趋势线就是覆盖所有数据点的整体趋势!以后新增日期的数据,只要右键点击整理好的数据表,选择「刷新」,图表和趋势线都会自动更新。
方案二:用公式手动整理数据(适合临时处理,不用Power Query)
如果你不想用Power Query,也可以用公式批量提取数据:
- 假设「Accuracy」表格在Sheet1,A列是日期,B到Z列是各trial的准确率;「Time to Kill」表格在Sheet2,A列是日期,B到Z列是击杀时间。
- 新建一个工作表Sheet3,A1单元格输入「准确率」,B1输入「击杀时间」。
- 在A2单元格输入公式:
=INDEX(Sheet1!$B:$Z,INT((ROW()-2)/COLUMNS(Sheet1!$B:$Z))+1,MOD(ROW()-2,COLUMNS(Sheet1!$B:$Z))+1)
按回车后,下拉单元格直到出现错误值(说明所有准确率数据都提取完了)。 - 在B2单元格输入公式:
=INDEX(Sheet2!$B:$Z,INT((ROW()-2)/COLUMNS(Sheet2!$B:$Z))+1,MOD(ROW()-2,COLUMNS(Sheet2!$B:$Z))+1)
同样下拉到出现错误值。 - 选中Sheet3里A2到B列最后一行的有效数据,插入散点图,添加趋势线即可。
补充说明
你之前的方法之所以不行,是因为把每天的数据当成了独立的系列,而Excel的趋势线只能针对单个系列生效。把所有(X,Y)对合并成一个系列后,不仅不用手动创建上百个系列,还能直接生成覆盖所有数据的整体趋势线,完全符合你的需求。
备注:内容来源于stack exchange,提问作者Tht1GuyJohn




