Board logo

標題: [發問] excel 2003排序問題~請各位幫忙~謝謝!! [打印本頁]

作者: kaivenliu    時間: 2011-2-16 23:18     標題: excel 2003排序問題~請各位幫忙~謝謝!!

我想要將附件的檔案A欄人員排序,例如人員B A I 代表3個人的代號稱謂,分3次排序,首先按照第一個字母排序後,將第一個字母相同的人員的現金金額,於C欄位置(即A欄排序後,第一個字母相同的人員的C欄位置處)做一個小計,當然人員如果增減C欄小計位置處也要跟著變動,第2次排序則是按照中間字母和中文字排序,然後一樣,第二個字母或中文相同的人員的現金金額,於C欄位置(即A欄排序後,第二個字母相同的人員的C欄位置處)做一個小計,當然人員如果增減C欄小計位置處也要跟著變動,第3次排序則跟第2次排序同步驟,3次排序完後,將每一次排序完的結果,複製到sheets2標籤頁,不知有哪位朋友可以幫我~用vba或函數或巨集只要能達到此效果都可,感謝幫忙!![attach]4748[/attach]
作者: Hsieh    時間: 2011-2-17 09:03

回復 1# kaivenliu
增加3欄輔助欄位
做3次排序及小計,複製貼上
[attach]4752[/attach]
[attach]4753[/attach]
作者: kaivenliu    時間: 2011-2-17 20:15

本帖最後由 kaivenliu 於 2011-2-17 20:18 編輯
回復  kaivenliu
增加3欄輔助欄位
做3次排序及小計,複製貼上
Hsieh 發表於 2011-2-17 09:03

版主你好:
      謝謝你做分組3次排序的方式,本人受益良多,只是能否做出如我附件檔於sheet1做完排序後,將排序以後自動複製到sheet2並分成3個表格,並自動做合計和加總(不要手動的),再次感謝你~
p.s.另外因為我權限不足,所以無法下載版主修改完的檔案,如版主你修改完我的檔案後,能否開放讓我下載,不甚感激,謝謝~~

[attach]4762[/attach]
作者: Hsieh    時間: 2011-2-17 23:29

回復 3# kaivenliu
建議你將三個名字用資料剖析成3欄會簡單一點
若依照你現在的格式,在加入A:C輔助欄後公式還是很繁雜
還是先依你的格是先做出來(如附件)
表格建立請遵守資料庫規則,以利分析統計
[attach]4766[/attach]
作者: kaivenliu    時間: 2011-2-18 09:28

回復 4# Hsieh


    版主你好:
          可否開放讓我下載你幫我修改的檔案,謝謝~~
作者: Hsieh    時間: 2011-2-18 14:32

本帖最後由 Hsieh 於 2011-2-18 14:35 編輯

回復 5# kaivenliu
我沒有權限開放下載權限,請詳閱版規
我更希望你能聽我所勸,將資料表正規化
不然等你看懂我的公式可能會浪費你很多時間
定義名稱:
在第四列被選取狀態下
w=CHAR(SMALL(CODE(Sheet1!$C$2:$C$34),ROW(!$A1)))
x=SUBSTITUTE(Sheet1!$D4," ","",1)
y=CHAR(SMALL(CODE(Sheet1!$A$2:$A$34),ROW(!$A1)))
z=CHAR(SMALL(CODE(MID(Sheet1!$D$2:$D$34,FIND("  ",Sheet1!$D$2:$D$34)+2,1)),ROW(!$A1)))
請將J3插入2個空白鍵,否則公式會出錯
人員改成人  員
***********************************
D4陣列公式
{=IF(ROW(A1)>COUNTA(Sheet1!$A$2:$A$34),"",INDIRECT("Sheet1!D"&SMALL(IF(Sheet1!$A$2:$A$34=y,ROW($A$2:$A$34),""),SUMPRODUCT((MID($D$3:D3,1,1)=y)*1)+1)))}

E4陣列公式
{=IF(ROW(B1)>COUNTA(Sheet1!$A$2:$A$34),"",INDIRECT("Sheet1!E"&SMALL(IF(Sheet1!$A$2:$A$34=y,ROW($A$2:$A$34),""),SUMPRODUCT((MID($D$3:E3,1,1)=y)*1)+1)))}

F4=IF(MID(D4,1,1)=MID(D5,1,1),"",SUM($E$4:E4)-SUM($F3:F$4))

J4陣列公式
{=IF(ROW(A1)>COUNTA(Sheet1!$D$2:$D$34),"  ",INDIRECT("Sheet1!D"&SMALL(IF(MID(Sheet1!$D$2:$D$34,FIND("  ",Sheet1!$D$2:$D$34)+2,1)=z,ROW($D$2:$D$34),""),SUMPRODUCT((MID($J$3:J3,FIND("  ",Sheet2!$J$3:$J3)+2,1)=z)*1)+1)))}

K4陣列公式
{=IF(ROW(B1)>COUNTA(Sheet1!$D$2:$D$34),"",INDIRECT("Sheet1!E"&SMALL(IF(MID(Sheet1!$D$2:$D$34,FIND("  ",Sheet1!$D$2:$D$34)+2,1)=z,ROW($D$2:$D$34),""),SUMPRODUCT((MID($J$3:K3,FIND("  ",Sheet2!$J$3:$J3)+2,1)=z)*1)+1)))}

L4=IF(MID(J4,FIND("  ",J4)+2,1)=MID(J5,FIND("  ",J5)+2,1),"",SUM($K$4:K4)-SUM($L3:L$4))

P4陣列公式
{=IF(ROW(A1)>COUNTA(Sheet1!$C$2:$C$34),"  ",INDIRECT("Sheet1!D"&SMALL(IF(Sheet1!$C$2:$C$34=w,ROW($C$2:$C$34),""),SUMPRODUCT((MID(SUBSTITUTE($P$3:$P3&"  ","  ","",1)&"  ",FIND("  ",SUBSTITUTE($P$3:$P3&"  ","  ","",1)&"  ")+2,1)=w)*1)+1)))}

Q4陣列公式
{=IF(ROW(B1)>COUNTA(Sheet1!$C$2:$C$34),"  ",INDIRECT("Sheet1!E"&SMALL(IF(Sheet1!$C$2:$C$34=w,ROW($C$2:$C$34),""),SUMPRODUCT((MID(SUBSTITUTE($P$3:$P3&"  ","  ","",1)&"  ",FIND("  ",SUBSTITUTE($P$3:$P3&"  ","  ","",1)&"  ")+2,1)=w)*1)+1)))}

R4=IF(P4="  ","",IF(MID(SUBSTITUTE($P5&"  ","  ","",1),FIND("  ",SUBSTITUTE($P5&"  ","  ","",1))+2,1)<>w,SUM($Q$3:Q4)-SUM($R$3:R3),""))
作者: kaivenliu    時間: 2011-2-18 15:55

回復 6# Hsieh


    版主你好:
          感謝你的教導,的確你寫的公式及套用的函數對我來說深奧了一些,我會試著將資料表正規化看看,能否合乎我所用,不過我還是會試著了解你公式的意義,總之非常的感謝你幫我解答~




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