簡體   English   中英

Excel中如何使用R/C表示法將INDIRECT封裝成INDEX?

[英]How to encapsulate INDIRECT into INDEX using R/C notation in Excel?

我使用 INDIREKT 創建了一個范圍,我添加了 COL() 來查看這個范圍有多大:

=COL(INDIRECT("R1C1:R1C5"; 0))

如您所見,我使用 R/C 表示法進行行/列尋址。 結果只是第一行中從 1 到 5 的所有數字:

在此處輸入圖像描述

現在我只是使用數字來處理字符串中的字母,如下所示:

="_" & MID("HELLO"; COL(INDIRECT("Z1S1:Z1S5"; 0)); 1)

這按預期工作並返回:

在此處輸入圖像描述

現在工作表上某處有一個隨機單元格,我將這個單元格命名為“_H”。 該單元格僅包含字母 H:

在此處輸入圖像描述

我也為 E、L 和 O 做了這個。

現在我添加第三行包含這個。

=INDEX(INDIRECT(A2);1;1)

將其拉到 5 列的寬度,結果符合預期:

在此處輸入圖像描述

我的問題來了:如何使用 R/C 表示法? 這進入我的腦海:

=INDIRECT("Z2S1"; 0)

這將返回第 2 行第 1 列 aka A2 的正確值。 這是_H。 現在我將其放入 INDEX 公式中,期望 Excel 接受 _H,將其用作 INDEX 的地址並返回此“名稱范圍”的 1;1 的值:

=INDEX(INDIRECT("R2C1";0);1;1)

但結果很簡單:

在此處輸入圖像描述

當我刪除引號時,Excel 在抱怨,所以這是行不通的:

=INDEX(INDIRECT(R2C1;0);1;1)

(顯然,因為 Excel 設置說我更喜歡 A1 表示法)。

但我想知道為什么當我明確告訴 excel 使用 R/C 表示法時它不起作用?

好吧,看起來 Excel 只是取范圍和 R1C1 的值在這個范圍內 - 即 _R。 所以我試圖讓這個專欄參數“動態”。 我知道這會返回整個范圍的列索引。

 =COL(INDIRECT("R1C1:R1C5";0))

這會為特定列返回 1、2、3、4 和 5。 那么為什么不把它放到上面的公式中呢:

 =INDEX(INDIRECT("Z2S" & COL(INDIRECT("R1C1:R1C5";0));0);1;COL(INDIRECT("R1C1:R1C5";0)))

這將返回 #VALUE 作為錯誤。

如何間接尋址單元格甚至范圍以從特定坐標獲取值(使用 INDEX)? 我特別需要 R/C 表示法,因為我需要用數字來表示范圍(例如第 1 列而不是 A 列等等)。

您可以壓縮您的解決方案 - 不需要 `INDEX(X;1;1) :

=LET(word,"HELLO",
     singleCharacters,"_" & MID(word,SEQUENCE(1,LEN(word)),1),
     MAP(singleCharacters,LAMBDA(a,INDIRECT(a))))

使用LET使其更具可讀性。

好的,這比我想象的要容易,Excel 有這個很棒的 MAP 公式:

=MAP(A2:E2; LAMBDA(a; INDEX(INDIRECT(a); 1; 1)))

現在每個特定列都指向引用/范圍名稱,INDEX 可以使用它從特定命名范圍的 R1/C1 中獲取值。

這甚至可以改進為單行:

=MAP(SEQUENCE(1;LEN("HELLO")); LAMBDA(i; INDEX(INDIRECT("_" & MID("HELLO"; i; 1));1;1)))

我可以把它放在我想要的任何地方,我只需要定義命名范圍。

感謝引導正確方向的@Ike。

暫無
暫無

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

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