之前作者有介紹了将多行多列數據轉換成一列,同樣是對多行數據的轉換,但不同點在于,那篇文章講的是按照列的順序,來将數據排列成一列。
而今天的課題是從行開始,一行一行的進行轉換,使所有數據全部轉換成為一個豎列。
今天我們就來學習一個公式,通過這個公式來達成轉換的目的。
首先,作者先上公式:=INDEX($A$1:$F$18,INT(ROW(A6)/6),MOD(ROW(A6),6) 1)
看這個公式,使用的是index函數來引用,它的第1參數是引用區域,第2參數是要返回的行序号,第3參數是要返回的列序号。
先來捋一下它的邏輯思路,由于數據表中包含了6列18行,我們的轉換順序是從第1行開始,轉換成1列,再接着繼續轉換第2行,那麼,這裡就有兩個知識點,其實也就是index函數的第2、第3參數的設置。
公式為:=MOD(ROW(A6),6) 1
這個公式怎麼理解?
mod是求餘數的函數,例如mod(3,2),即3除以2,餘數是1,所以結果為1.
而row函數的作用是返回行序号,其結果會單元格的變動而變動,比如row(A1)等于1,row(a2)等于2.
那麼MOD(ROW(A6),6) 1,它的結果就是mod(6,6) 1,6除6餘數為0,加上1,則結果為1.當向下填充公式時,ROW函數的參數是A7,而row(a7)等于7,mod(7,6)餘數為1,加上1的結果為2;而填充6次以後,到第7個單元格,即row(12),等于12,mod(12,6)的餘數是0,加上1結果為1.
所以,它的結果就是從1-6的持續循環。
公式為:=INT(ROW(A6)/6)
這裡我們要理解int函數的含義,它是一個向下取整函數,即将不足1的數字取整為1,所以這個公式較易理解,6/6等于1,7/6等于一點幾,用int函數向下取整,結果仍然是1;隻有當公式向下填充到第7個單元格,即row(12)/6時,也就是12/6,等于2,這時公式開始從2進行重複。
從上面的公式看,能否理清這兩句話的含義:“從1-6進行循環”,“從1開始重複6次”。
我們将這兩句話的公式套進index函數公式中,再去理解每個參數的含義。
當我們向下填充公式到第7個單元格時,這時index函數的第2參數是INT(ROW(A12)/6),row(a12)的結果是12,除以6等于2,再用int函數取整,結果為2.所以這時index函數公式的行序号為2,即從引用區域的第2行開始。
第3參數是MOD(ROW(A12),6) 1,row(a12)等于12,mod(12,6)的餘數是0,再加上1,因此結果為1,所以第3參數列序号為1.
那麼綜合一下,index($A$1:$F$18,2,1)的含義就是引用$A$1:$F$18單元格區域的第2行第1列數據。
當輸入完公式,我們還需要嵌套一個邏輯函數iferror;因為數據較多時,無法一次性将公式填充到合适的位置,而會出現一些錯誤值,套上iferror函數來忽略錯誤值并顯示為空值。
最後,我們來總結一下,關于多行多列轉一列的關鍵點在于指定序号間的循環往複,和指定次數重複序号。在這種循環和重複的場景中,row函數搭配int和mod函數,是解題的鑰匙。所以搞清每個函數的基本含義和基本用法,是excel進階學習的基礎!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!