单元格值中Google表格图表的数据范围(在图表编辑器中)公式

时间:2020-07-30 17:58:07

标签: google-sheets google-sheets-formula

我在Google表格中有一个图表,“数据范围”如下...

MIR!J1:K4547,DIR!K1:K4547

我要尝试的是引用工作表“ MIR”和“ DIR”值的单元格值。

假设我将单元格A1修改为ZIR ...

然后数据范围更改为

ZIR!J1:K4547,DIR!K1:K4547

我在Google中进行了深入的搜索,但也许我没有使用正确的关键字,因此可能会对此产生一些反馈...

2 个答案:

答案 0 :(得分:1)

我不确定您要获取哪种图表,但是您可以创建一个动态范围,但是,这仅适用于折线图。

  1. 选择任何单元格并输入以下公式:=A1&"!K1:J4547"
  2. 转到Data > Named Ranges,然后将具有公式的单元格命名为范围。 (此步骤是可选的,但会使事情变得更容易)

您现在可以将此范围用于其他公式,例如,如果要折线图:=SPARKLINE(INDIRECT(dynamicRange)) line graph example

参考:https://www.benlcollins.com/formula-examples/dynamic-named-ranges/


在撰写本文时,我还实现了不同的解决方法,但使用的是相同的想法。使用QUERY函数,您可以获取单元格值,而无需更改图表范围。例如,将公式=QUERY(INDIRECT(A3))放在单元格中,将从DIR!K1:J4547中获取所有值。更改工作表中的A1值将更改其抓取的工作表。在此处,将图表范围设置为放置QUERY公式的位置。 Query example

您也可以只进行=QUERY(INDIRECT(A3)),则不必指定范围。


希望这很有帮助!

答案 1 :(得分:0)

我所做的是以下

我创建了一个空的电子表格,并在该工作表上使用了3列来构造图表。然后,我创建了一个脚本(我知道非常脏的代码,但是它可以工作)。

该脚本替换了我按如下方式创建的最后一张纸上的数据:

function replace() {
  
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('CHART'); // or whatever is the name of the sheet 
var range = sheet.getRange(1,1); 
var range2 = sheet.getRange(1,2); 
var data = range.getValue();
var data2 = range2.getValue();
var sheetFrom = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(data);
var sheetTo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ChartData");
var sheet2From = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(data2);
var sheet2To = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ChartData");
// Copy from 17th row, 4th column, all rows for one column 
var valuesToCopy = sheetFrom.getRange(1, 10, sheetFrom.getLastRow(), 1).getValues();
var valuesToCopy2 = sheetFrom.getRange(1, 11, sheetFrom.getLastRow(), 1).getValues();
var valuesToCopy3 = sheet2From.getRange(1, 11, sheet2From.getLastRow(), 1).getValues();
//Paste to another sheet from first cell onwards
sheetTo.clearContents();
sheetTo.getRange(1,sheetTo.getLastColumn()+1,valuesToCopy.length,1).setValues(valuesToCopy);
sheetTo.getRange(1,sheetTo.getLastColumn()+1,valuesToCopy2.length,1).setValues(valuesToCopy2);
sheetTo.getRange(1,sheet2To.getLastColumn()+1,valuesToCopy3.length,1).setValues(valuesToCopy3);}

为更改数据范围,我从单元格中提取了数据。