Board logo

標題: excel 可以把直便成行嗎? [打印本頁]

作者: v60i    時間: 2012-2-19 04:31     標題: excel 可以把直便成行嗎?

A1=A
A2=1
A3=2
A4=B
A5=3
A6=4
A7=C
A8=5
A9=6
.
.
.
.


要變成

A        1        2
B        3        4
C        5        6
D        7        8
.
.
.
.

有半法嗎?
請參閱附件 謝謝
[attach]9648[/attach]
作者: Hsieh    時間: 2012-2-19 10:13

本帖最後由 Hsieh 於 2012-2-19 23:30 編輯

回復 1# v60i
選取E2(就是要橫向顯示的第一列位置)
新增定義名稱x
=OFFSET(Sheet1!$A$1,(ROW(Sheet1!$A1)-1)*3,,3,)
選取E2:G2
輸入陣列公式
=TRANSPOSE(x)
向下複製
[attach]9663[/attach]
作者: register313    時間: 2012-2-19 12:55

回復 1# v60i

E2=INDEX($A:$A,3*ROW()+COLUMN()-10,1)
[attach]9656[/attach]
作者: v60i    時間: 2012-2-19 18:18

回復 3# register313

大大 你的公試怎麼我套用在別格(非E2:G2)就不能用呢了??
作者: v60i    時間: 2012-2-19 18:30

回復 2# Hsieh


    謝謝大大
     太深奧了
       公式完全不明白
作者: register313    時間: 2012-2-19 18:31

回復 4# v60i

公式會參考到 欄 與 列 位址 故欄與列位址須作調整
上傳excel檔案看看
作者: gong    時間: 2012-2-19 18:32

位置是要精算的

A在E2
E2=INDEX($A:$A,3*ROW()+COLUMN()-10,1)
3*2+5-10=1
INDEX($A:$A,1,1)=A1="A"

如想放在I1
I1=INDEX($A:$A,3*ROW()+COLUMN()-11,1)
3*1+9-11=1

其他位置自己算算看
有問題再提出來
作者: v60i    時間: 2012-2-19 19:14

回復 7# gong


    那請問大大
假如 A:A的為址不同
比方說重A5開始
A1~A4有別的東西
那是公式整個要換調嗎?
還是在家個公式就好??
作者: v60i    時間: 2012-2-19 19:15

回復 6# register313


    大大 我弄別白了

來有令一個疑問
假如 A:A的為址不同
比方說重A5開始
A1~A4有別的東西
那是公式整個要更換還是在加個其他公式就好??
作者: register313    時間: 2012-2-19 19:37

回復 9# v60i

與 來源位址 目的位址 皆有關
設 來源第一格為A5 目的第一格為D5
[attach]9657[/attach]
作者: v60i    時間: 2012-2-19 19:42

回復 10# register313

哦~大大誤會囉 我是只有A 變 E2:G2不變哦
作者: register313    時間: 2012-2-19 19:53

回復 11# v60i

E2=INDEX($A:$A,3*ROW()+COLUMN()-6,1)
作者: v60i    時間: 2012-2-19 20:03

回復 12# register313
@@....................可能是我太笨了 看不懂大大得意思

[attach]9658[/attach]
作者: register313    時間: 2012-2-19 20:27

回復 13# v60i

E2=INDEX($A:$A,3*ROW()+COLUMN(),1)
作者: v60i    時間: 2012-2-19 20:39

回復 10# register313


   
為什麼要-14呢
有的-10
有的-11

看不出來:dizzy:
作者: Hsieh    時間: 2012-2-19 21:24

本帖最後由 Hsieh 於 2012-2-19 23:33 編輯

回復 5# v60i
這個用法一點也不深奧
OFFSET函數如果能找到原點後,取固定列數就是每列要呈現的位置
所以,(ROW(A1)-1)*3就會依據公式所在位置每列位移3列後為新原點
然後以新原點擴展成3列1欄

當然這樣得到的結果是3個值,而且是直列的陣列
如果將這3個值直接在儲存格公式中使用TRANSPOSE轉置
每一格都會取這個陣列的第一個值作為答案
所以必須讓直列的範圍先定義成名稱後
再以三欄一列的範圍來填入陣列,EXCEL就會自動以儲存格順序填入此陣列
所以當A欄範圍向下移動,只要將原來A1的位置改成新的資料起點即可
作者: register313    時間: 2012-2-19 21:47

回復 15# v60i

7樓,10樓已經有該式之說明
若尚不清楚
就該從基本的單一函數開始學起,用起(非常重要)
單一函數熟練了,函數的組合運用自然就比較沒有問題

E2=INDEX($A:$A,3*ROW()+COLUMN()-6,1)
該式用到了INDEX,ROW,COLUMN 3個基本函數
作者: v60i    時間: 2012-2-20 00:13

回復 17# register313


    謝謝大大的指教
作者: register313    時間: 2012-2-23 20:12

回復 18# v60i

看看會不會更清楚
[attach]9704[/attach]
作者: v60i    時間: 2012-2-24 18:28

回復 19# register313
非常清楚 謝謝大大熱心教學
作者: doriewang    時間: 2012-3-11 15:54

果然是好深奧的公式啊,看來需要多多上論壇學習了。
作者: chen_cook    時間: 2012-3-16 08:42

請問 Hsieh 大

            如果是要反過來應如何設定公式呢?? (即 ARRAY) 轉成為同一列嗎??想了很多方式都不行...麻煩囉...THX!

a    b   c
a1 b1 c1
a2 b2 c2

a      or      a
b               a1
c               a2
a1            b
b1            b1
c1             b2
a2             c
b2             c1
c2              c2
作者: Hsieh    時間: 2012-3-16 09:21

回復 22# chen_cook

在A7為作用儲存格建立名稱
x=INDEX(Sheet1!$A$1:$C$3,INT((ROW(Sheet1!$A1)-1)/3)+1,)
y=INDEX(Sheet1!$A$1:$C$3,,INT((ROW(Sheet1!$A1)-1)/3)+1)
儲存格公式
A7=IF(ROW($A1)>COUNTA($A$1:$C$3),"",INDEX(x,,MOD(ROW($A1)-1,3)+1))
B7=IF(ROW($A1)>COUNTA($A$1:$C$3),"",INDEX(y,MOD(ROW($A1)-1,3)+1,))
  [attach]10010[/attach]
作者: register313    時間: 2012-3-16 09:44

回復 22# chen_cook

E1=INDEX(A:C,ROUNDUP(ROW()/3,0),IF(MOD(ROW(),3)=0,3,MOD(ROW(),3)))
F1=INDEX(A:C,IF(MOD(ROW(),3)=0,3,MOD(ROW(),3)),ROUNDUP(ROW()/3,0))
[attach]10011[/attach]
作者: chen_cook    時間: 2012-3-16 16:14

感謝 register313 大 回覆
           小弟表逹太差,你的方式是已知 array 項,可我要的不是這一個...
        Hsieh 大大
            回覆的公式......讓我又驚又喜...又學到了.....!!
作者: yagami12th    時間: 2012-3-16 23:45

如果是用matlab的話,後面加'就直轉行了。
作者: Hsieh    時間: 2012-3-17 09:09

回復 26# yagami12th

請教一下,EXCEL中如何使用matlab語言?
作者: yagami12th    時間: 2012-3-17 16:18

回復 27# Hsieh

好像還真的可以,有一個叫excel link的東西,應該可以查查。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)