這個用VB來得快一點,不過個人習慣性用公式,所以就先說一下公式的演算法。
用公式之前,先要觀察原始資料特性;題主給的特性還是很明顯:
1、每行、每列的資料數量一樣;
2、不需要調整資料次序,只需要將第一行的資料轉移完再轉移第二行即可。
3、從表1的1、2、3行,轉移到表2的第一行,即需要跨表格引用。
那麼就可以寫了:
=OFFSET(Sheet1!$A$1,IF(MOD(COLUMN(),COUNT(Sheet1!1:1))=0,COLUMN()/COUNT(Sheet1!1:1)-1,INT(COLUMN()/COUNT(Sheet1!1:1))),MOD(COLUMN()-1,COUNT(Sheet1!1:1)))
解析:
1、OFFSET():基於某一單元格進行上下移動相應的行、列,返回資料。這裡我們固定基於表1的A1單元格。
2、因為需要移動的行和列,是個變數,所以需要在公式中引入一個變數。因為原始資料每列的資料量是一樣的,所以我們這裡就只引入列號,用COLUMN()得到,至於行號,則用列號除以3,在公式中即除以COUNT(Sheet1!1:1)。
有了上面的基礎思路,然後就好辦了,直接進行公式的整合就可以了。
如果覺得麻煩,都可以直接將COUNT(Sheet1!1:1)改成3,這樣公式就清晰很多;當然也可以定義名稱,不過自己用的話就不必那麼麻煩了。下面是換成3的公式。
=OFFSET(Sheet1!$A$1,IF(MOD(COLUMN(),3)=0,COLUMN()/3-1,INT(COLUMN()/3)),MOD(COLUMN()-1,3))
還有疑問的話,可以後面復我。
後面有空再寫VB,以及其它的做法。
這個用VB來得快一點,不過個人習慣性用公式,所以就先說一下公式的演算法。
用公式之前,先要觀察原始資料特性;題主給的特性還是很明顯:
1、每行、每列的資料數量一樣;
2、不需要調整資料次序,只需要將第一行的資料轉移完再轉移第二行即可。
3、從表1的1、2、3行,轉移到表2的第一行,即需要跨表格引用。
那麼就可以寫了:
=OFFSET(Sheet1!$A$1,IF(MOD(COLUMN(),COUNT(Sheet1!1:1))=0,COLUMN()/COUNT(Sheet1!1:1)-1,INT(COLUMN()/COUNT(Sheet1!1:1))),MOD(COLUMN()-1,COUNT(Sheet1!1:1)))
解析:
1、OFFSET():基於某一單元格進行上下移動相應的行、列,返回資料。這裡我們固定基於表1的A1單元格。
2、因為需要移動的行和列,是個變數,所以需要在公式中引入一個變數。因為原始資料每列的資料量是一樣的,所以我們這裡就只引入列號,用COLUMN()得到,至於行號,則用列號除以3,在公式中即除以COUNT(Sheet1!1:1)。
有了上面的基礎思路,然後就好辦了,直接進行公式的整合就可以了。
如果覺得麻煩,都可以直接將COUNT(Sheet1!1:1)改成3,這樣公式就清晰很多;當然也可以定義名稱,不過自己用的話就不必那麼麻煩了。下面是換成3的公式。
=OFFSET(Sheet1!$A$1,IF(MOD(COLUMN(),3)=0,COLUMN()/3-1,INT(COLUMN()/3)),MOD(COLUMN()-1,3))
還有疑問的話,可以後面復我。
後面有空再寫VB,以及其它的做法。