excel問題 有一張表 姓名 學號 科目 成績 想變成 姓

2021-12-22 09:34:41 字數 3223 閱讀 8204

1樓:匿名使用者

用vba吧,你提出的這個型別一般資料量都比較大的。應該不止這幾門成績的統計吧。

下面的**複製到vba中執行即可:

sub scorepx()

dim kid as single '定義學號

dim rowend as single  '定義結束行號

dim rowrecord as single '定義新序列插入位置

dim colw as single

dim sumx as single '定義總分

activeworkbook.activesheet.sort.sortfields.clear

activeworkbook.activesheet.sort.sortfields.add key:=range("b1"), _

sorton:=xlsortonvalues, order:=xlascending, dataoption:=xlsortnormal

with activeworkbook.activesheet.sort

.setrange range("a2:d5000") '可通過修改"d5000"的值擴大排序範圍

.header = xlno

.matchcase = false

.orientation = xltoptobottom

.sortmethod = xlpinyin

end with

rowend = 1

rowrecord = 2

do until activesheet.cells(rowend, 2) = ""

kid = 1

sumx = 0

do until activesheet.cells(rowend + kid, 2) <> activesheet.cells(rowend + kid + 1, 2) or activesheet.

cells(rowend + kid + 1, 2) = ""

activesheet.cells(rowrecord, kid + 7) = activesheet.cells(rowend + kid, 4)

sumx = sumx + activesheet.cells(rowrecord, kid + 7)

kid = kid + 1

loop

activesheet.cells(rowrecord, kid + 7) = activesheet.cells(rowend + kid, 4)

sumx = sumx + activesheet.cells(rowrecord, kid + 7)

activesheet.cells(rowrecord, kid + 8) = sumx

activesheet.cells(rowrecord, 6) = activesheet.cells(rowend + kid, 1)

activesheet.cells(rowrecord, 7) = activesheet.cells(rowend + kid, 2)

if rowend = 1 then

colw = kid + 1

activesheet.cells(1, colw + 7) = "總分合計"

do until colw <= 1

activesheet.cells(1, colw + 6) = activesheet.cells(colw, 3)

colw = colw - 1

loop

end if

rowrecord = rowrecord + 1

rowend = rowend + kid

loop

end sub

在使用上述**前,請確保以下事項:

1、對原資料**進行備份

2、確保「姓名」在a列,「學號」在b列,「科目」在c列,「成績」在d列

3、在執行**前,確保欲排序的**處於啟用狀態

4、請確保每個人員的科目數目一樣多,如果某科目無成績,請將相關專案充填為零,否則程式將出錯。

這段**的執行過程:

首先對資料按照學號進行擴充套件排序,然後通過迴圈語句進行資料的讀取和賦值。

程式功能:

1、無論科目多少,都可以排序,自動橫向充填

2、以學號為排序依據,名字可以重複,但學號肯定不會重複

3、增加個人成績總分統計功能

4、如果需要,可以在增加**的基礎上,完**員成績排名

最後,為你做這個**,是衝著高分來的,使用滿意請給分。話說回來,即便是分不給我,本人也沒有辦法,**已經公開了,誰想用都可以,就算是練手和做貢獻了。 附圖顯示了執行後的效果。

2樓:匿名使用者

隨便找個軟體就可以。

3樓:匿名使用者

用條件求和公式可以轉

=sum(if($a$2:$a$7(說明:舊錶中學生姓名所在列)=$f2(說明:

相對引用,新表學生姓名單元格),if($c$2:$c$7(說明:舊錶中學生科目所在列)="語文",$d$2:

$d$7(說明:舊錶中學生成績所在列))))

在一個單元格中做好公式,注意用絕對相用和相對引用 其餘單元格就可以直接複製公式填充了

4樓:**哥哥

有的回答的好複雜呀!

排序—主要關鍵字為「科目」,次要為「學號」,選「有標題行」,點「確定」,然後你對應著複製,貼上吧

得在2個表上操作 ,沒改的一個表,改後的單獨一個表

5樓:

很難說的 說了你也不一定看得懂 嘎嘎

6樓:

你直接把**發過來,我給你改下不就完了

7樓:

使用vlookup函式查詢即可

關於excel的,打個比方,比如有一張表,我想查詢姓名張三的,然後計算語文的分數(好幾個學期的分數相加) 5

8樓:阿靜

按下ctrl+f,查詢張三,既然有好幾個學期的,那麼張三出現好幾次,用顏色標記好,然後用sum(求和函式)計算,具體怎麼用sum你可以再具體查查。

9樓:作業五隊

用excel表中的自動求和就能立刻算出分數的總和。

10樓:匿名使用者

你把具體的**發過來幫你做下,最好 能給個理論的結果,我給你寫一下公式[email protected]

EXCEL中第一張表中有姓名和身份證號碼,如何在第二張表中輸

假設在sheet1中,a列是姓名,b列是身份證號,在第二張表中,姓名輸入在a1,身份證號要顯示在b1,那麼b1中的公式是 vlookup a1,sheet1 a b,2,false 然後用b1向下拖公式就行。但有一個問題就是,在sheet1表中,姓名一定要唯一,比如 張三 有兩個或超過兩個人的時候,...

EXCEL中第一張表中有姓名和身份證號碼,如何在第二張表中與

假設第一張表的姓抄名在a列,襲身份證號在b列。第二張表的姓名同樣在a列。要在b列顯示身份證號。在b2輸入 vlookup a2,sheet1 a b,2,下拉就可以得到。excel excel中第一張表中有姓名和身份證號碼,如何在第二張表中與姓名相對應的身份證號碼自動生成?假設第一張表的姓名在a列,...

Excel怎麼把一張表某一列對映到另一張表的指定列

推薦使用vlookup 函式處理。祝您成功!網頁連結 如何把excel一個 中的資料轉入另一個 並在相應的單元格 1.一個excel表,需要在另一個表中找出相應同學的班級資訊。2.把游標放在要展示資料的回單元格答中,如下圖。3.在單元格中輸入 vl 會自動提示出vlookup函式,雙擊藍色的函式部分...