簡體   English   中英

從多個工作表中獲取相同單元格的值

[英]Get value of same cell from multiple sheets

我想從工作表中的多個選項卡中獲取單元格 A1 的值。 我試圖使用INDIRECT ,只是被提醒它在ARRAYFORMULA中不起作用。 是否有某種“臨時”公式可以做同樣的事情?

這是我最初嘗試的:

 =ArrayFormula(IF(LEN(A2:A),INDIRECT(A2:A&"!A1"),))

A 列是我工作表中選項卡名稱的 select 列表。 所以第一個實例有效,但當然,它並沒有像我希望的那樣填充到列中。 我意識到我可以將公式復制到列中,但是當我向列表中添加行時,某種類型的ARRAYFORMULA將是理想的。

我找到了這個答案,但不知道如何將其應用於我的情況。

我也找到了這個答案,但認為自從它 2.5 歲以來,也許有人發現了一種避免復制拖累的聰明方法。

回答:

您需要使用腳本或使用拖動方法來執行此操作 - INDIRECT使用字符串引用,因此不能與數組一起使用。

更多信息:

不幸的是,對於使用ARRAYFORMULAINDIRECT的用戶來說,發現一個聰明的方法並不是問題——只能用公式來做的事情是這個問題的根源。

設置自定義 function:

從工具 > 腳本編輯器菜單項,您可以創建腳本。 您可以使用的示例自定義公式如下:

function ARRAYINDIRECT(input) {  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  return input.reduce(function(array, el) {
    if (el[0]) array.push(el[0])
    return array;
  }, []).map(x => ss.getSheetByName(x).getRange("A1").getValue());
}

然后確保使用保存圖標保存腳本。

在您的工作表中,您可以這樣調用此自定義公式:

=ARRAYINDIRECT(A2:A)

function 的概要:

  • 從調用公式的地方獲取輸入范圍 - 在本例中為A2:A
  • 減少輸入以刪除所有空單元格
  • 將存儲在單元格中的工作表名稱映射到它引用的工作表的A1中的值
  • 返回一個數組到 output

我希望這對你有幫助!

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM