You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多Sheet排序不同的显卡价格追踪图表创建及高亮功能需求

多Sheet显卡价格走势图表的匹配与交互解决方案

一、解决跨Sheet型号行位置不匹配问题

核心是先把分散在各Sheet的价格数据整理为型号为行、时间为列的结构化汇总表,彻底摆脱行位置依赖:

操作步骤(Excel/谷歌表格通用逻辑)

  1. 新建汇总Sheet,命名为「价格汇总」
  2. 提取所有GPU型号:
    • Excel:用UNIQUE(VSTACK(Sheet1!A:A, Sheet2!A:A, ..., SheetN!A:A)),手动过滤空行
    • 谷歌表格:用UNIQUE(FLATTEN(Sheet1!A:A, Sheet2!A:A, ..., SheetN!A:A)),自动过滤空行
      将公式结果放在汇总表A列,得到所有出现过的显卡型号。
  3. 设置时间节点列:在汇总表B1、C1...单元格依次填入各Sheet对应的时间(比如「2024-01-01」「2024-01-08」)
  4. 匹配各时间点价格:
    在汇总表B2单元格输入查找公式,下拉填充所有型号、横向填充所有时间列:
    • Excel:=XLOOKUP($A2, Sheet1!$A:$A, Sheet1!$E:$E, "")
    • 谷歌表格:=XLOOKUP($A2, Sheet1!A:A, Sheet1!E:E, "")
      该公式会自动在对应Sheet中匹配型号并返回价格,未上市/已下架的型号会返回空值,图表生成时会自动忽略空值,符合实际追踪逻辑。

完成后,直接基于「价格汇总」表插入折线图即可,完全解决行位置不匹配的问题。

二、实现悬停高亮线条、其余变暗的交互功能

Excel方案(VBA实现)

Excel无原生该功能,需用VBA代码:

  1. 右键点击目标图表,选择「查看代码」打开VBA编辑器
  2. 粘贴以下代码(注意图表名称需与实际一致,比如默认「Chart 1」):
    Dim prevSeries As Object
    
    Sub Chart_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Double, ByVal Y As Double)
        Dim cht As Chart, srs As Series
        Dim elemID As Long, arg1 As Long, arg2 As Long
        
        Set cht = ActiveChart
        cht.GetChartElement X, Y, elemID, arg1, arg2
        
        ' 重置之前的系列样式
        If Not prevSeries Is Nothing Then
            prevSeries.Format.Line.Transparency = 0
            prevSeries.Format.Line.Weight = 1
        End If
        
        ' 高亮当前悬停系列
        If elemID = xlSeries Then
            Set srs = cht.SeriesCollection(arg1)
            ' 其余线条变暗
            For Each srs In cht.SeriesCollection
                srs.Format.Line.Transparency = 0.7
                srs.Format.Line.Weight = 1
            Next srs
            ' 当前线条加粗高亮
            srs.Format.Line.Transparency = 0
            srs.Format.Line.Weight = 2.5
            Set prevSeries = srs
        Else
            ' 鼠标不在线条上,重置所有样式
            For Each srs In cht.SeriesCollection
                srs.Format.Line.Transparency = 0
                srs.Format.Line.Weight = 1
            Next srs
            Set prevSeries = Nothing
        End If
    End Sub
    
  3. 保存文件为.xlsm格式(启用宏),打开时允许宏运行,鼠标悬停即可触发高亮效果。

谷歌表格方案(Apps Script实现)

谷歌表格需借助脚本创建带交互的侧边栏图表:

  1. 点击「扩展」→「Apps Script」打开脚本编辑器
  2. 清空默认代码,粘贴以下内容:
    function onOpen() {
      SpreadsheetApp.getUi().createMenu('图表工具')
        .addItem('启用悬停高亮', 'enableHoverHighlight')
        .addToUi();
    }
    
    function enableHoverHighlight() {
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('价格汇总');
      const chart = sheet.getCharts()[0]; // 若有多个图表,调整索引值
      const html = HtmlService.createHtmlOutput(`
        <script src="https://www.gstatic.com/charts/loader.js"></script>
        <script>
          google.charts.load('current', {'packages':['corechart']});
          google.charts.setOnLoadCallback(drawChart);
          
          function drawChart() {
            google.script.run.withSuccessHandler(data => {
              const dataTable = new google.visualization.DataTable(data);
              const options = {
                title: '显卡价格走势',
                legend: { position: 'right' },
                series: {}
              };
              const chartDiv = document.getElementById('chart');
              const lineChart = new google.visualization.LineChart(chartDiv);
              
              // 悬停高亮逻辑
              google.visualization.events.addListener(lineChart, 'onmouseover', e => {
                // 重置所有系列样式
                Object.keys(options.series).forEach(i => {
                  options.series[i] = { lineWidth: 1, opacity: 0.5 };
                });
                // 高亮当前系列
                options.series[e.row] = { lineWidth: 3, opacity: 1 };
                lineChart.draw(dataTable, options);
              });
              
              // 离开时重置
              google.visualization.events.addListener(lineChart, 'onmouseout', () => {
                Object.keys(options.series).forEach(i => {
                  options.series[i] = { lineWidth: 1, opacity: 1 };
                });
                lineChart.draw(dataTable, options);
              });
              
              lineChart.draw(dataTable, options);
            }).getChartData();
          }
        </script>
        <div id="chart" style="width: 100%; height: 600px;"></div>
      `);
      SpreadsheetApp.getUi().showSidebar(html);
    }
    
    function getChartData() {
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('价格汇总');
      const range = sheet.getDataRange();
      const values = range.getValues();
      // 构建谷歌图表数据格式
      const data = {
        cols: values[0].map(col => ({ label: col, type: col === 'GPU Model' ? 'string' : 'number' })),
        rows: values.slice(1).map(row => ({ c: row.map(cell => ({ v: cell })) }))
      };
      return data;
    }
    
  3. 保存脚本,回到表格点击「图表工具」→「启用悬停高亮」,侧边栏会显示带交互的图表,悬停时对应线条高亮,其余变暗。

内容的提问来源于stack exchange,提问作者Adam Ambrus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:53:15