陣列函式

Contents

# Array Functions

此分類包含陣列函式。

## 什麼是陣列？

陣列是包含值的試算表中儲存格的連結範圍。 3 列與 3 欄的方塊範圍是 3 x 3 陣列：

| A | B | C | D | E
1 | 7 | 31 | 33
2 | 95 | 17 | 2
3 | 5 | 10 | 50
4

最小的可能陣列是由兩個相鄰儲存格組成的 1 x 2 或者 2 x 1 陣列。

## 什麼是陣列公式？

用於演算儲存格範圍中各個數值的公式即稱為陣列公式。陣列公式與其他公式之間的不同之處在於：陣列公式同時處理數個數值，而不是單個數值。

陣列公式不僅可以處理數個數值，還可以傳回數個數值。陣列公式的結果也是一個陣列。

To multiply the values in the individual cells by 10 in the above array, you do not need to apply a formula to each individual cell or value. Instead you just need to use a single array formula. Select a range of 3 x 3 cells on another part of the spreadsheet, enter the formula =10*A1:C3 and confirm this entry using the key combination CommandCtrl + Shift + Enter. The result is a 3 x 3 array in which the individual values in the cell range (A1:C3) are multiplied by a factor of 10.

除了乘法之外，也可以在這個指定範圍（或稱之為陣列）使用其他運算子。在 OpenOfficeCalc 中，有加 (+)，減 (-)，乘 (*)，除 (/)，冪次方 (^)，字串連接 (&)，比較(=,<>,<,>,<=,>=) 等計算方式可供運用。以陣列公式輸入的運算子可用來對指定範圍內每個儲存格進行運算，並將結果以陣列方式儲存。

陣列公式中的比較運算子會以在正常公式中的相同方式，來處理空白儲存格，亦即當作零或空白字串。例如，若儲存格 A1 與 A2 為空的，陣列公式 {=A1:A2=""} 與 {=A1:A2=0} 皆會傳回包含 TRUE 的 1 欄 2 列儲存格陣列。

### 什麼時候使用陣列公式？

如果要對不同的數值重複執行相同的計算，可使用陣列公式。以後如果您要變更計算方法，則僅需更新陣列公式。若要增加陣列公式，選取整個陣列範圍然後對陣列公式進行必要的變更。

因為陣列公式不會佔用大量記憶體，所以在計算數個數值時，使用陣列公式還可以節省記憶體空間。此外，由於陣列適用於數個儲存格範圍的計算，因此執行複雜計算時，它是重要的工具。LibreOffice 提供多個陣列數學函式，如 MMULT 函式可以將兩個陣列相乘，SUMPRODUCT 函式可以計算兩個陣列的純量乘積。

## 使用 LibreOffice Calc 中的陣列公式

### Implicit intersection of array formulas

You can also create a "normal" formula in which the reference range, such as parameters, indicate an array formula. This formula is also known as "implicit intersection" of array formula. The result is obtained from the intersection of the reference range and the rows or columns in which the formula is found. If there is no intersection or if the range at the intersection covers several rows or columns, a #VALUE! error message appears. The following example illustrates this concept:

In the table above, place the array formula in D1:

{=A1:A3 + 100}

Cells D1, D2, D3 have values 107, 195, 105 respectively.

Insert the formula below in E2, do not enter as array formula.

=A1:A3 + 100

Cells E1 and E3 are empty, Cell E2 has value 195. This is the implicit intersection of array formulas.

Insert formula below in E4, as in E2.

=A1:A3 + 100

Cell E4 display #VALUE!. Row 4 is out of the range A1:A3 of the formula.

### 建立陣列公式

如果您使用函式精靈建立陣列公式，每次都必須標記 [陣列] 核取方塊以便讓結果傳回陣列中。否則，僅陣列左上角儲存格中的數值之計算結果被傳回。

If you enter the array formula directly into the cell, you must use the key combination Shift + CommandCtrl + Enter instead of the Enter key. Only then does the formula become an array formula.

在 LibreOffice Calc 中，陣列公式前後會加上大括號。但是，您不能透過手動輸入大括號來建立陣列公式。

The cells in a results array are automatically protected against changes. However, you can edit, delete or copy the array formula by selecting the entire array cell range.

### 在公式中使用內嵌陣列常數

Calc 支援在公式中使用內嵌陣列/陣列常數。內嵌陣列會以大括號「{」和「}」括住。元素可以是數字 (包含負數)、邏輯常數 (TRUE、FALSE) 或文字字串。不允許非常數表示式。輸入的陣列可包含一或多列以及一或多欄。所有列和所有欄皆必須包含相同的元素數目。

欄分隔符（一列中的分隔元素）與列分隔符有賴語言與區域決定。但本說明內容中，';' 分號與 '|' 符號個別表示欄與列分隔符。例如在「英語」區域中，','半形逗號用作欄分隔符，而 ';' 半形分號用作列分隔符號。

You can view and change the row and column separator in LibreOffice - PreferencesTools - Options - Calc - Formula - Separators.

您無法嵌套陣列。

範例：

={1;2;3}

此陣列具有一列，且內含三個數字 1、2 和 3。

To enter this array constant, you select three cells in a row, then you type the formula ={1;2;3} using the curly braces and the semicolons, then press CommandCtrl + Shift + Enter.

={1;2;3|4;5;6}

此陣列具有兩列，且每列各有三個數值。

={0;1;2|FALSE;TRUE;"two"}

混合資料陣列。

=SIN({1;2;3})

以矩陣公式方式輸入，求得內含引數 1、2 和 3 的三個正弦計算結果。

### 編輯陣列公式

1. Select the cell range or array containing the array formula. To select the whole array, position the cell cursor inside the array range, then press CommandCtrl + /, where / is the division key on the numeric keypad.

2. Either press F2 or position the cursor in the input line. Both of these actions let you edit the formula.

3. After you have made changes, press CommandCtrl + Shift + Enter.

您可以分別格式化陣列的各個部分。例如，您可以變更字型顏色。選取儲存格範圍，然後變更需要的屬性。

### Deleting Array Formulae

1. Select the cell range or array containing the array formula. To select the whole array, position the cell cursor inside the array range, then press CommandCtrl + /, where / is the division key on the numeric keypad.

2. Press Delete to delete the array contents, including the array formula, or press Backspace and this brings up the Delete Contents dialog box. Select Formula or Delete All and click OK.

### 複製陣列公式

1. 選取包含陣列公式的儲存格範圍或陣列。

2. Either press F2 or position the cursor in the input line.

3. Copy the formula into the input line by pressing CommandCtrl + C.

4. Select a range of cells where you want to insert the array formula and either press F2 or position the cursor in the input line.

5. Paste the formula by pressing CommandCtrl + V in the selected space and confirm it by pressing CommandCtrl + Shift + Enter. The selected range now contains the array formula.

### 調整陣列範圍

如果要編輯匯出陣列，請執行以下操作：

1. 選取包含陣列公式的儲存格範圍或陣列。

2. 在選取區域下方往右，您會看見小圖示，這可讓您使用滑鼠來放大或縮小該區域。

調整陣列範圍時，不會自動調整陣列公式。您僅變更了將要顯示結果的範圍。

By holding down the CommandCtrl key, you can create a copy of the array formula in the given range.

### 有條件的陣列計算

有條件的陣列計算是包括 IF() 或 CHOOSE() 函式的陣列或陣列公式。公式中的有條件引數是區域參照或陣列結果。

在下列範例中，{=IF(A1:A3>0;"yes";"no")} 公式的 >0 測試套用至 A1:A3 範圍中的每個儲存格，而結果會複製到對應儲存格。

| A | B (公式) | B (結果)
1 | 1 | {=IF(A1:A3>0;"yes";"no")} | yes
2 | 0 | {=IF(A1:A3>0;"yes";"no")} | no
3 | 1 | {=IF(A1:A3>0;"yes";"no")} | yes

下列函式提供強制陣列處理：CORREL, COVAR, FORECAST, FTEST, INTERCEPT, MDETERM, MINVERSE, MMULT, MODE, PEARSON, PROB, RSQ, SLOPE, STEYX, SUMPRODUCT, SUMX2MY2, SUMX2PY2, SUMXMY2, TTEST。當您呼叫這些函式之一時使用區域參照作為引數，這些函式會以陣列函式來運作。下列表格提供強制陣列處理的範例：

| A | B (公式) | B (結果) | C (強制陣列公式) | C (結果)
1 | 1 | =A1:A2+1 | 2 | =SUMPRODUCT(A1:A2+1) | 5
2 | 2 | =A1:A2+1 | 3 | =SUMPRODUCT(A1:A2+1) | 5
3 |  | =A1:A2+1 | #VALUE | =SUMPRODUCT(A1:A2+1) | 5

## FREQUENCY

Indicates the frequency distribution in a one-column-array. The function counts the number of values in the Data array that are within the values given by the Classes array.

#### Syntax

FREQUENCY(Data; Classes)

Data 表示要計數的數值組的參照。

Classes 表示限值陣列。

This function ignores any text or empty cell within a data range. If you suspect wrong results from this function, look for text in the data ranges. To highlight text contents in a data range, use the value highlighting feature.

您可以在本頁上方找到陣列函式的一般簡介。

#### Example

在下表中，欄 A 列出了未排序的定量值。欄 B 列出您所輸入的類別上限值，用於劃分欄 A 中的資料。依在 B1 中輸入的限制值，函式 FREQUENCY 會傳回小於或等於 5 的定量值數目。由於 B2 中的限制值是 10，因此函式 FREQUENCY 第二次傳回大於 5 且小於或等於 10 的定量值數目。在 B6 中輸入的文字「>25」僅供參考。

| A | B | C
1 | 12 | 5 | 1
2 | 8 | 10 | 3
3 | 24 | 15 | 2
4 | 11 | 20 | 3
5 | 5 | 25 | 1
6 | 20 | >25 | 1
7 | 16 |  |
8 | 9 |  |
9 | 7 |  |
10 | 16 |  |
11 | 33 |  |

在單一欄中選取一個範圍，用於根據類別限制值輸入頻率。選取的欄位數必須比類別上限多一個。在此範例中，選取的範圍為 C1:C6。在 [函式精靈] 中呼叫 FREQUENCY 函式。選取 (A1:A11) 做為 Data 範圍，然後選取用於輸入類別限制值的 Classes 範圍 (B1:B6)。選取 [陣列] 核取方塊，然後按一下 [確定]。隨即會看到 C1:C6 範圍中的頻率計數。

More explanations on top of this page.

## GROWTH

計算陣列中指數趨勢的點。

#### Syntax

GROWTH(DataY [; [ DataX ] [; [ NewDataX ] [; FunctionType ] ] ])

DataY 表示 Y 資料陣列。

DataX (選擇性) 表示 X 資料陣列。

NewDataX (選擇性) 表示 X 資料陣列，其中的值會重新計算。

FunctionType (optional). If FunctionType = 0, functions in the form y = m^x will be calculated. Otherwise, y = b*m^x functions will be calculated.

In the LibreOffice Calc functions, parameters marked as "optional" can be left out only when no parameter follows. For example, in a function with four parameters, where the last two parameters are marked as "optional", you can leave out parameter 4 or parameters 3 and 4, but you cannot leave out parameter 3 alone.

More explanations on top of this page.

#### Example

This function returns an array and is handled in the same way as the other array functions. Select a range where you want the answers to appear and select the function. Select DataY. Enter any other parameters, mark Array and click OK.

## LINEST

傳回最符合資料集的直線統計表。

#### Syntax

LINEST(data_Y [; data_X [; linearType [; stats]]])

data_Y 為指定一組資料點中 y 座標的單一列或欄範圍。

data_X 為指定 x 座標的對應單一列或欄範圍。若省略 data_X，會預設為 1, 2, 3, ..., n。若有超過一組變數，則 data_X 的範圍可對應多列或多欄。

LINEST 使用線性迴歸法 (「最小平方法」) 以求出最符合資料的直線 y = a + bx。變數超過一組時，直線形式為 y = a + b1x1 + b2x2 ... + bnxn。

If linearType is FALSE the straight line found is forced to pass through the origin (the constant a is zero; y = bx). If omitted, linearType defaults to TRUE (the line is not forced through the origin).

If stats is omitted or FALSE only the top line of the statistics table is returned. If TRUE the entire table is returned.

LINEST returns a table (array) of statistics as below and must be entered as an array formula (for example by using CommandCtrl + Shift + Return rather than just Return).

In the LibreOffice Calc functions, parameters marked as "optional" can be left out only when no parameter follows. For example, in a function with four parameters, where the last two parameters are marked as "optional", you can leave out parameter 4 or parameters 3 and 4, but you cannot leave out parameter 3 alone.

More explanations on top of this page.

#### Example

此函式會傳回一個陣列，並且處理此函式的的方式與其他陣列函式相同。為答案選取一個範圍，然後依序選取函式及 data_Y。您可視需要輸入其他參數。選取 [陣列]，然後按一下 [確定]。

系統傳回的結果 (若 stats = 0) 至少會顯示迴歸線的斜率，以及迴歸線與 Y 軸的交點。若 stats 不等於 0，則會顯示其他結果。

### 其他 LINEST 結果：

檢查下列範例：

| A | B | C | D | E | F | G
1 | x1 | x2 | y |  | 剩餘價值 |  |
2 | 4 | 7 | 100 |  | 4,17 | -3,48 | 82,33
3 | 5 | 9 | 105 |  | 5,46 | 10,96 | 9,35
4 | 6 | 11 | 104 |  | 0,87 | 5,06 | #NA
5 | 7 | 12 | 108 |  | 13,21 | 4 | #NA
6 | 8 | 15 | 111 |  | 675,45 | 102,26 | #NA
7 | 9 | 17 | 120 |  |  |  |
8 | 10 | 19 | 133 |  |  |  |

欄 A 包含數個 X1 值，欄 B 包含數個 X2 值，欄 C 包含數個 Y 值。您已經將這些數值輸入試算表中。現在您可在試算表中設定 E2:G6，並啟動 [函式精靈]。對於所使用的 LINEST 函式，您必須在 [函式精靈] 中標記 [陣列] 核取方塊。接著，在試算表中選取 (或透過鍵盤輸入) 以下數值：

dataY 為 C2:C8

dataX 為 A2:B8

linearType 與 stats 皆設定為 1。

只要按一下[確定]，LibreOffice Calc 就會使用範例中顯示的 LINEST 值填入上述範例。

The formula in the Formula bar corresponds to each cell of the LINEST array {=LINEST(C2:C8;A2:B8;1;1)}.

這表示計算的 LINEST 值：

E2 與 F2：迴歸線 y=b+m*x 之 x1 與 x2 值的斜率 m。這兩個值會以反向指定；亦即 E2 為 x2 的斜率，而 F2 為 x1 的斜率。

G2:具有 y 軸的平均值 b

E3 與 F3：斜率值的標準離差。

G3:截取的標準誤差

E4:RSQ

F4:計算 Y 值回歸的標準誤差。

E5:變異數分析的 F 值。

F5:變異數分析的自由度。

E6:從線性平均估計的 Y 值之平方偏差的總和。

F6:從指定 Y 值估計的 Y 值之平方偏差的總和。

More explanations on top of this page.

## LOGEST

此函式會將輸入之資料的調整計算成指數迴歸曲線 (y=b*m^x)。

#### Syntax

LOGEST(DataY [; DataX [; FunctionType [; Stats]]])

DataY 表示 Y 資料陣列。

DataX (選擇性) 表示 X 資料陣列。

FunctionType (選擇性)。若 Function_Type = 0，則會以 y = m^x 格式計算函式。否則會以 y = b*m^x 計算函式。

Stats (可選擇的)。如果 Stats=0 則只計算回歸係數。

In the LibreOffice Calc functions, parameters marked as "optional" can be left out only when no parameter follows. For example, in a function with four parameters, where the last two parameters are marked as "optional", you can leave out parameter 4 or parameters 3 and 4, but you cannot leave out parameter 3 alone.

More explanations on top of this page.

#### Example

請參閱 LINEST。然而不會傳回平方總和。

## MDETERM

傳回陣列的行列式。 此函式在目前儲存格中傳回一個值，因此無需為結果定義範圍。

#### Syntax

MDETERM(Array)

array 表示一個在其中定義了行列式的方陣。

You can find a general introduction to using Array functions on top of this page.

More explanations on top of this page.

## MINVERSE

傳回逆陣列。

#### Syntax

MINVERSE(Array)

array 表示要被逆轉的方陣。

More explanations on top of this page.

#### Example

選取一個正方形範圍並選取函式 MINVERSE。依次選取匯出陣列和 [陣列] 欄位，並按一下 [確定]。

## MMULT

計算量兩個陣列的陣列乘積。 陣列 1 的欄數必須與陣列 2 的列數相同。方陣的列與欄數都必須相等。

#### Syntax

MMULT(Array 1; Array 2)

Array 1 represents the first array used in the array product.

Array 2 represents the second array with the same number of rows.

More explanations on top of this page.

#### Example

Select a square range. Choose the MMULT function. Select Array 1, then select Array 2. Using the Function Wizard, mark the Array check box. Click OK. The output array will appear in the first selected range.

## MUNIT

傳回特定大小的單位方陣。 單位陣列是一種方陣，其中主對角元素等於 1 而其他陣列元素都等於 0。

#### Syntax

MUNIT(尺寸)

Dimensions 是指單位陣列的大小。

您可以在本頁上方找到陣列函式的一般簡介。

#### Example

選取試算表的方塊範圍，例如從 A1 至 E5。

在選取範圍的情況下，另外選取 MUNIT 函式。核取 [陣列] 核取方塊。輸入所需的陣列單位尺寸，在此例中為 5，然後按一下 [確定]。

You can also enter the =MUNIT(5) formula in the last cell of the selected range (E5), and press Shift + Command + EnterShift + Ctrl + Enter.

您現在即可看到一個範圍為 A1:E5 的單位陣列。

More explanations on top of this page.

## SUMPRODUCT

將指定陣列中對應的元素相乘，並傳回乘積的小計。

#### Syntax

SUMPRODUCT(Array 1[; Array 2;][...;[Array 255]])

Array 1[; Array 2;][...;[Array 255]] represent arrays whose corresponding elements are to be multiplied.

At least one array must be part of the argument list. If only one array is given, all array elements are summed. If more than one array is given, they must all be the same size.

#### Example

| A | B | C | D
1 | 2 | 3 | 4 | 5
2 | 6 | 7 | 8 | 9
3 | 10 | 11 | 12 | 13

=SUMPRODUCT(A1:B3;C1:D3) 傳回 397。

計算：A1*C1 + B1*D1 + A2*C2 + B2*D2 + A3*C3 + B3*D3

您可使用 SUMPRODUCT 來計算兩個向量的數量積。

SUMPRODUCT 傳回單一數字，不必要將函式輸入為陣列函式。

More explanations on top of this page.

## SUMX2MY2

傳回兩個陣列中對應值的平方之差異值小計。

#### Syntax

SUMX2MY2(ArrayX; ArrayY)

ArrayX 表示其元素平方後相加的第一個陣列。

ArrayY 表示其元素平方後相減的第二個陣列。

More explanations on top of this page.

## SUMX2PY2

傳回兩個陣列中對應值的平方小計。

#### Syntax

SUMX2PY2(ArrayX; ArrayY)

ArrayX 表示其元素平方後相加的第一個陣列。

ArrayY 表示其元素平方後相加的第二個陣列。

More explanations on top of this page.

## SUMXMY2

在兩個陣列中對應值之間增加變異數的平方。

#### Syntax

SUMXMY2(ArrayX; ArrayY)

ArrayX 表示其元素相減後平方的第一個陣列。

ArrayY 表示其元素相減後平方的第二個陣列。

More explanations on top of this page.

## TRANSPOSE

對陣列的列和欄進行轉置。

#### Syntax

TRANSPOSE(Array)

array 表示試算表中要進行轉置的陣列。

您可以在本頁上方找到使用陣列函式的一般簡介。

#### Example

In the spreadsheet, select the range in which the transposed array can appear. If the original array has n rows and m columns, your selected range must have at least m rows and n columns. Then enter the formula directly, select the original array and press Shift + Command + EnterShift + Ctrl + Enter. Or, if you are using the Function Wizard, mark the Array check box. The transposed array appears in the selected target range and is protected automatically against changes.

| A | B | C | D
1 | 2 | 3 | 4 | 5
2 | 6 | 7 | 8 | 9

The above table is 2 rows, 4 columns. In order to transpose it, you must select 4 rows, 2 columns. Assuming you want to transpose the above table to the range A7:B10 (4 rows, 2 columns) you must select the entire range and then enter the following:

TRANSPOSE(A1:D2)

Then make sure to enter it as matrix formula with Shift + Command + EnterShift + Ctrl + Enter. The result will be as follows:

| A | B
7 | 2 | 6
8 | 3 | 7
9 | 4 | 8
10 | 5 | 9

## TREND

傳回伴隨線性趨勢的值。

#### Syntax

TREND(DataY [; DataX [; NewDataX [; LinearType]]])

DataY 表示 Y 資料陣列。

DataX (選擇性) 表示 X 資料陣列。

NewDataX (選擇性) 表示 X 資料的陣列，可用於重新計算數值。

LinearType (optional). If LinearType = 0, then lines will be calculated through the zero point. Otherwise, offset lines will also be calculated. The default is LinearType <> 0.

In the LibreOffice Calc functions, parameters marked as "optional" can be left out only when no parameter follows. For example, in a function with four parameters, where the last two parameters are marked as "optional", you can leave out parameter 4 or parameters 3 and 4, but you cannot leave out parameter 3 alone.

More explanations on top of this page.

#### Example

Select a spreadsheet range in which the trend data will appear. Select the function. Enter the output data or select it with the mouse. Mark the Array field, click OK. The trend data calculated from the output data is displayed.

相關主題

Functions by Category