电竞比分网-中国电竞赛事及体育赛事平台

分享

一維表和二維表互轉,這個方法只有1%的人知道!

 互利互讀一輩子 2023-08-26 發(fā)布于北京

本文作者:趙驕陽
本文編輯:竺蘭


Hi,我是偏愛函數公式,愛用 Excel 圖表管理倉庫的大叔 Mr 趙~

在實際工作中,我們經常需要對數據的結構進行轉換。

比如,為了更直觀、方便查看數據,需要將下圖左邊一維表轉換成如右圖的二維表:

圖片

又或者為了更好的統(tǒng)計分析數據,需要將左邊的二維表數據轉換成右邊的一維表格式:

圖片

下面就來詳細說說,怎么用函數公式實現這兩種數據結構的相互轉換。

圖片

一維表轉化成二維表


? 提取年級變成標題行

在 D1 輸入公式:
=TRANSPOSE(UNIQUE(A2:A34))

首先用 UNIQUE 函數提取 A 列不重復的年級變成一列,再用 TRANSPOSE 函數將得到的一列數據轉置成一行。

效果如下圖所示:

圖片

? 提取對應的名單

在 D2 單元格輸入公式:
=FILTER($B2:$B34,$A2:$A34=D1)

用 FILTER 函數,以年級作為篩選條件,篩選出對應的名單。再將公式向右拖動填充,得到如下圖右表的效果:

圖片

圖片

二維表轉化成一維表


? 首先用 IF 函數判斷名單區(qū)域「A2:D15」是否為空;如果為空則返回錯誤值(#NAME?),否則返回第一行「A1:D1」對應的年級。

在 F1 單元格輸入公式:
=IF(A2:D15='',x,A1:D1)

結果返回一個多行 4 列的數組,效果如下圖「F1:I14」區(qū)域所示:

圖片

? 然后利用 TOCOL 函數將這組多行 4 列的數組轉化成一列。

=TOCOL(    IF(A2:D15 = '', x, A1:D1),    2,    1)

效果如下圖 F 列所示:

圖片

TOCOL 是 Office 365 版本新增的函數,非常實用和強大,它可以將多數組轉化為一列數據。

該函數的語法為:
=TOCOL(array, [ignore], [scan_by_column])

第一參數是需要轉化成列的數組,公式中 TOCOL 函數的第一個參數 IF(A2:D15 = '', x, A1:D1)是需要轉化的數組;

第二參數可以選擇是否忽略空白或錯誤,公式中的第二個參數是 2,表示忽略區(qū)域中的錯誤值;

第三參數表示掃描方式,可以設定是按行方向掃描數組還是按列方向掃描數組,默認情況下按行掃描,如果要按列掃描,則值為 TRUE 或 1。
? 最后再用 TOCOL 函數將姓名區(qū)域「A2:D15」,也轉化成一列。

在 G1 單元格輸入公式:
=TOCOL(A2:D15,1,1)

公式中的第二參數是 1,表示忽略區(qū)域「A2:D15」中的空白,轉化成一列。效果如下圖 G 列所示:

圖片

圖片

最后小結


? 一維表轉化成二維表:首先用 UNIQUE 函數提取一列的不重復值,作為標題行;然后用 FILTER 函數,以標題作為篩選條件,提取對應的內容。

? 二維表格轉化成一維表:當 TOCOL 函數第二參數為 2 時,忽略錯誤值,將標題行轉化成一列,再利用 TOCOL 函數第二參數為 1 時,忽略空白,將對應的區(qū)域轉化成一列。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多