之前給大家分享了豎向結構轉橫向結構的5種方法,就是把表一樣式轉換為表二樣式,具體的文章可參閱如下:
3秒鐘搞定Excel數據豎向結構轉橫向結構,這5種方法你要掌握
那如果我們想把表二結構數據轉換為表一結構樣式的要怎麼做,就比如如下這樣的?
今天就給大家分享下這種數據表轉換怎麼實現。
1、首選我們要先确定表二的姓名列,在表一要實現多少行。
我們從表二可以看出,每個姓名有3個參數,即可以确定表一的行數為:姓名數*參數數。
2、确認下B4:B11的姓名内容在H列什麼時候實現第二次重複,比如第一次到"木木"了,那我下一個人名應該返回B4的内容"趙雲",這個要怎麼做?
這是可以考慮用MOD函數,比如MOD(ROW(1:1),9),即可以實現每9個一循環了。
循環重複知道了,那要怎麼把表二B列對應的人名寫到H列呢,OFFSET函數即可以實現?
OFFSET(原始點,偏移的行數,偏移的列數,引用的行數,引用的列數)
我們就可以以B4為原始點,偏移的行數使用MOD函數實現,偏移列數為空。
3、下面隻要在H3輸入如下公式:
=IF(ROW(1:1)>(COUNTA($B$4:$B$21))*(COUNTA($C$3:$E$3)),"",OFFSET(B$4,MOD(ROW(1:1)-1,COUNTA($B$4:$B$21)),))
這裡用到了IF函數進判定,當行數大于數據區域行數的時候,顯示為空值,否則以OFFSET函數的值顯示
計數數據區域取的是B4:B21,代表我們可以在B11之後再增加姓名後,數據依然可以更新。
4、内容參數列可參考姓名列的方法,使用OFFSET函數,不過此時是列偏移,而不是行偏移了,偏移的條件是每經過8行(事例的姓名行數),向右偏移一列。
這時再使用MOD函數就不行了,我們可以直接使用除法。
在I3輸入公式:
=IF($H3="","",OFFSET($B$3,,(INT(ROW(1:1)-1)/(COUNTA($B$4:$B$21))) 1))
同樣增加IF函數判斷,判斷的條件是姓名列是否存在,存在即進行偏移,否則為空。
5、輸出結果查詢,就相比較簡單了,我們已經知道了姓名、參數,就可以使用交叉查詢進行實現了,可以在J2輸入公式:
=IF(H3="","",SUMPRODUCT((H3=$B$4:$B$11)*(V3=$C$3:$E$3)*$C$4:$E$11))
更多交叉查詢的方式,可參考另一篇文章:
Excel實現文本交叉查詢的3種方法,看下有沒有你知道的方法
這樣,一整個數據結構轉換就已經完成,你學會了嗎?如果有什麼疑問歡迎留言讨論,謝謝~~
如果覺得文章對你有幫助的話,希望大家幫忙點贊加分享哦~,謝謝
本文由彩虹Excel原創,歡迎關注,帶你一起長知識!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!