如何在excel上提取數值並在後面顯示?

原始的數據是這樣

操作後的數據是這樣

即同樣學生的名字,那麼他們的費用依次排列,並且在後面有增加學生的時候,也依次顯示。


兩個數組公式可以完成,一個返回去重複後的學生,一個返回費用。

如圖

D列公式自動對學生去重顯示,D3輸入數組公式 {=IFERROR(INDEX(A$2:A$15,MATCH(,COUNTIF(D$1:D1,A$2:A$15),)),"")} 下拉即可。

費用區域可根據數據添加6、7、……,E3中輸入數組公式 {=IFERROR(INDEX($B$2:$B$15,SMALL(IF($A$2:$A$15=$D3,ROW($A$2:$A$15),9E+307),E$2)-1),"")} 再向右向下拖動複製公式即可。

不知道是否符合您的要求。


有個問題,趙二蛋的100為什麼在數據區的第二列,王冰冰表示同問,如果你確切的知道他們繳費的批次,完全不用以空行作為標記,記錄下他們繳費的批次就好,然後透視表就太輕鬆了啊


我也是用vlookup,所以核心是找到唯一的值。

[名字出現的順序+名字]就是唯一的值,然後就可以用vlookup了。

下圖處理的順序是從左到右,

  1. 先處理出唯一的值
  2. 然後再查詢
  3. [圖裡沒有],最後轉置一下就可以獲得要求的結果了,當然也可以批量替換下empty, iferror函數裡面的第二個參數直接填"",就是空格了[我寫empty是個人習慣,寫一個有意義的值,ε=ε=ε=┏(゜ロ゜;)┛]

如果數據量大的話,有些需要注意的:

  1. 需要通過刪除重複項找到全部的唯一的名字
  2. H一列下面有1~8的數字,這個數字的最大值是擁有最多的數據的值,具體拉到多少可以用countif+max


那個公式用的太複雜了,建議這樣做。

1. 使用數據透視表,取出所有不重複的學生姓名,單獨放一列。

2. 使用if 在指定範圍內判斷(如從第二行到第10行),取出對應值即可。

如果大批量的數據建議用宏處理。


聽說微軟要在excel裡面加入對python的支持了。等支持python了我來答題


數據透視表 10s

vlookup 3m

如果數據約1000行

數據透視表 10s

vlookup 5m


vlookup和數據透視表都可以做到


推薦閱讀:

怎麼知道格式刷刷了什麼格式?
如何在Excel實現採用星星符號評級的功能?
這個公式是什麼意思=0/(A3<>A2)?
如何將多個sheet的同一列數據快速放到一張表,並以sheet名作為相應每一列的名字?
如何處理EXCEL中存在大量合併單元格的跨頁斷行問題?

TAG:MicrosoftExcel | Excel使用 | Excel技巧 |