簡體   English   中英

Excel公式填充數組

[英]Excel formula to pad array

示例:假設我有幾個一維數組,例如A,B和C:

 A    B    C
---  ---  ---
 2    4    99
 3    5    37
 4    6    42
      7

我想使用一個公式來填充這些數組中的每一個(它們被稱為范圍),以便它們具有相同的行數。 (為了提供更完整的解釋,進行了編輯:)我還希望能夠將每個數組的起始位置移動指定的行數。 這是一個示例輸出,其中我將A移位兩個,將B移位三個,將C移位一個位置:

 A'   B'   C'
---  ---  ---
 0    0    0
 0    0    99
 2    0    37
 3    0    42
 4    4    0
 0    5    0
 0    6    0
 0    7    0

因此,用於填充其中一個數組的“公式”(實際上是多個現有標准公式的組合)將有效地具有四個輸入:原始數組名稱/范圍,在原始數組的開頭填充的值的數量,數量末尾填充,以及填充值(即0,NA()等)。

初始方法:我的第一個嘗試是將三個數組部分(填充數組,原始數組和填充數組末尾)連接成一個數組,如下所示:

=INDIRECT("{" & IF(_NPadBegin>0, REPT(_PadVal&",", _NPadBegin-1) & _PadVal&",", "") & _ArrayName & IF(_NPadEnd>0, "," & REPT(_PadVal&",", _NPadEnd-1) & _PadVal, "") &"}")

(其中帶有下划線的變量被命名為四個輸入的范圍)

但是,似乎不可能建立這樣的數組。 我搜索了使用公式組合一維數組的其他方法,但結果空了。

另一種方法可能是創建最終所需長度的數組,並首先使用填充值填充該數組。 例如,創建一個包含8行0的A'數組。(我可以在動態公式中執行此步驟。)然后,您可以使用原始數組覆蓋此初始化數組中的值,並確保將原始數組移至正確的位置。 例如,用A的值覆蓋A'的第2到4行中的0值。(我不知道如何執行此第二步...)

背景:我有多個一維數據數組(使用動態命名范圍生成),它們希望在單個折線圖上一起繪制。 但是,數組的長度不同,因此我需要在數組的開始/結尾處用一定數量的NA()值填充每個數組。 還需要根據索引對它們進行“排列”。

在VBA中實現這一目標可能不會太困難,但我希望使用(非用戶定義的)基於公式的解決方案。

如果您在A2:A4中具有值2、3和4,請嘗試以下公式

=IF(COUNTIF(A2:A4,ROW(INDIRECT("1:"&D2))-1),ROW(INDIRECT("1:"&D2))-1,0)

其中D2包含值的數量(在您的示例中為8)。

那將返回這個數組

{0;0;2;3;4;0;0;0}

假設數字序列從零開始-公式末尾的零是“填充值”,請根據需要進行更改

好的根據評論,您可以使用此數組公式

=IF((ROW(INDIRECT("1:"&NPadBegin+NPadEnd+ROWS(_ArrayName)))>NPadBegin)*(ROW(INDIRECT("1:"&NPadBegin+NPadEnd+ROWS(_ArrayName)))<=ROWS(_ArrayName)+NPadBegin),N(OFFSET(_ArrayName,ROW(INDIRECT("1:"&NPadBegin+NPadEnd+ROWS(_ArrayName)))-1-NPadBegin,0,1)),PadVal)

假定_ArrayName是垂直 1D數組

暫無
暫無

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

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