這篇文章繼續(xù)介紹一下OFFSET函數(shù)在獲取動(dòng)態(tài)區(qū)域當(dāng)中的應(yīng)用。 首先看一下案例: 將一列數(shù)據(jù),轉(zhuǎn)化為N行N列。 首先對(duì)于確定的需求來(lái)說(shuō)公式較為簡(jiǎn)單,例如轉(zhuǎn)換為5行3列。 公式如下:=OFFSET($A$1,ROW(A1)*3+COLUMN(A1)-4,) 公式原理: 我們需要在指定位置中使用offset函數(shù)做定向的偏移來(lái)完成多行多列的操作。 根據(jù)行數(shù)公式ROW以及列數(shù)公式COLUMN,找到向下偏移的規(guī)律。 規(guī)律如下: 首個(gè)單元格即A1單元格的行數(shù)(1)*需要?jiǎng)澐值牧袛?shù)(3)+A1單元格的列數(shù)(1)-需要?jiǎng)澐值牧袛?shù)(3)-1,并向整個(gè)區(qū)域進(jìn)行拖動(dòng)即可完成該操作。 首格行數(shù)*需劃列數(shù)+首格列數(shù)-需劃分列數(shù)-1 (一般行數(shù)列數(shù)的起點(diǎn)以A1開(kāi)始,因?yàn)閞ow(a1)或是column(a1)返回都是1,方便計(jì)算設(shè)計(jì)) 下面是使用該公式計(jì)算出的偏移量 1*3+1-3-1=0 1*3+2-3-1=1 1*3+3-3-1=2 2*3+1-3-1=3 2*3+2-3-1=4 2*3+3-3-1=5 。。。 。。。 。。。 。。。 。。。 。。。 。。。 。。。 。。。 OFFSET函數(shù)根據(jù)生成的偏移量就可以將數(shù)據(jù)進(jìn)行分行分列的操作了。 那么我們既然了解了這個(gè)規(guī)律,我們是否可以修改行數(shù)以及列數(shù),來(lái)動(dòng)態(tài)的進(jìn)行分行分列的操作呢? 答案是可以的,我們看一下公式: =IF(OR(COLUMN(D5)-COLUMN($C$5)>$E$3,ROW(D5)-ROW($D$4)>$E$2),"",OFFSET($A$1,ROW(A1)*$E$3+COLUMN(A1)-$E$3-1,)) 原理就是根據(jù)行列參數(shù),將超過(guò)行列的單元格都置為空值,然后使用OFFSET函數(shù),按照之前找到的規(guī)律,將行列參數(shù)帶入就可以達(dá)到,隨意修改行列參數(shù),進(jìn)行自動(dòng)分行分列的操作了。 |
|