小伙伴們好啊,今天給大家?guī)淼氖且粋€用函數(shù)實現(xiàn)行列轉(zhuǎn)換的技巧。
如下圖所示,是一份員工名單:
這個表中的姓名只有一列,卻有40多行。如果以這樣的版式打印,不僅浪費紙張,打印出的效果估計也能讓領(lǐng)導(dǎo)掉頭發(fā)的。
打印之前,需要將A列姓名轉(zhuǎn)換為適合打印的5列多行。接下來咱們就說說用函數(shù)公式如何來實現(xiàn)這樣的效果。
D2單元格輸入以下公式,向右向下復(fù)制:
=INDIRECT('a'&5*ROW(A1)-4+COLUMN(A1))&''
思路解析:
“5*ROW(A1) -4+COLUMN(A1)”部分,用于得到有規(guī)律的序列值,起始計算結(jié)果為2。
公式向下復(fù)制填充時ROW(A1)依次變?yōu)镽OW(A2)、ROW(A3)……,計算結(jié)果分別為7、12……,即生成步長值為5的自然數(shù)序列。
公式向右復(fù)制填充時COLUMN(A1)依次變?yōu)镃OLUMN(B1)、COLUMN(C1)……,計算結(jié)果分別為3、4……即生成步長值為1的自然數(shù)序列。
這部分的計算結(jié)果與字符'a'連接成一個單元格地址“An”,最后用INDIRECT函數(shù)返回文本字符串所指定的引用,得到相應(yīng)單元格的內(nèi)容。
公式最后使用&'',目的是為了屏蔽在引用空白單元格時返回的無意義的0值。
如果要把D2:H10單元格區(qū)域中多行多列的數(shù)據(jù)轉(zhuǎn)換為一列,該怎樣處理呢?
任意單元格中輸入以下公式,下拉到出現(xiàn)空白單元格為止:
=OFFSET($D$2,(ROW(A1)-1)/5,MOD(ROW(A1)-1,5))
思路解析:
先來看看這部分:(ROW(A1)-1)/5 ,作用是生成一個特殊的遞增序列0、0.2、0.4、0.6、0.8、1、1.2……
OFFSET函數(shù)將公式結(jié)果作為向下偏移的行數(shù),并且會自動向下舍入到整數(shù)。就相當(dāng)于得到從0開始,公式每下拉5行,結(jié)果遞增1的序列。
MOD(ROW(A1)-1,5)部分,仍然是得到一個特殊的循環(huán)序列,公式下拉時,結(jié)果為0、1、2、3、4、0、1、2、3、4……
OFFSET函數(shù)將這部分的結(jié)果作為向右偏移的列數(shù)。
將上面兩部分結(jié)合起來,OFFSET函數(shù)以D2單元格為基準(zhǔn)點,公式下拉時依次偏移到數(shù)據(jù)源第二行的E、F、G、H列。
當(dāng)公式下拉到第5行時,OFFSET函數(shù)從D2開始向下偏移1行到D3單元格,然后繼續(xù)向右依次偏移到第三行的E、F、G、H列。
如此循環(huán)往復(fù)……
最后留給大家兩個課后題:
1、如果要將A列數(shù)據(jù)轉(zhuǎn)換為6列多行,需要使用什么公式呢?
2、如果要將6列多行的數(shù)據(jù)轉(zhuǎn)換為1列,公式該怎么修改呢?
圖文制作:周慶麟
聯(lián)系客服