今天工作中遇到需要將Excel行列轉置涉及到的數據單元格一共幾千個
查詢網上說可以通過復制粘貼單元格,粘貼選項中轉置一項實現,但是所涉及的sheet頁中,數據格式和單元格格式各不一樣,轉置失敗!
怎么做呢?
先看看查詢Excel函數的結果:
首先看看INDERECT函數的定義:返回字符串所指定的索引
比如:
有了這個函數,解決當前問題的思路就是在豎向拖動的時候,能對應到INDIRECT("A1"),INDIRECT("B1"),INDIRECT("C1")所涉及到轉置的問題,
就解決了
所以接下來的問題,就是要解決在豎向拖動的時候,單元格怎么對應生成"A1","B1","C1"的問題
查詢之后看到,列名不就是A,B,C,D...這樣排列的嗎?所以用Address函數取列名
現在的問題就是對K$4進行處理,只保留列部分("K",不能寫死就取一位"K",因為還有"AB","AZ"這種列)
所以用動態截取:
所以,最后的轉置公式為:
=INDIRECT("Sheet1!"&LEFT(ADDRESS(1,ROW(),2),FIND("$",ADDRESS(1,ROW(),2))-1)&"1")
但是這樣解決了豎着拉列名跟着變化的問題,沒有解決橫着拉原Sheet頁行編號的問題,因為公式最后&"1"是死的在轉第二行數據的時候不得不寫成
=INDIRECT("Sheet1!"&LEFT(ADDRESS(1,ROW(),2),FIND("$",ADDRESS(1,ROW(),2))-1)&"2")
所以最后改進為:
=INDIRECT("Sheet1!"&LEFT(ADDRESS(1,ROW(),2),FIND("$",ADDRESS(1,ROW(),2))-1)&COLUMN())
剛開始學習Excel 希望各位指正!