Ако ти треба објашњење јави.
Да би било прегледније ставио бих твој форм на други лист, нек остане на истој позицији D9:Е19 чисто због прегледности, док би ти на првом листу остала листа са тих 300 ученика. Ако га стављаш негде другде, промени и референце у формули и доле у коду за макро.
У пољима од Е15 до Е19 стави формулу коју сам доле ставио и само мењај задњу цифру 3,4,5....до задње колоне са просечном оценом.
Уместо Sheet1! можеш да ставиш назив твог првог радног листа - ученици, оцене.. како год да си га назвао. Поље Е10 сам искористио за позивање редног броја из табеле као референце за повлачење података.
=INDEX(Sheet1!$B$2:$Н$6;MATCH(Е$10;Sheet1!A$2:A$6;0);3)
Ако имаш 300 ученика онда ће ти опсег бити од А$2:А$301 или стави и до А1000 ако ћеш још да додајеш.
Када завршиш са формулом копирај овај макро, све са коментарима, и врати се на лист 2:
Sub ucenici()
' ucenici Macro
' Macro recorded 19.10.2005 by CyberGasty
' Keyboard Shortcut: Ctrl+u
Zred = Sheets("Sheet1").Range("A65536").End(xlUp).Row
For m = 2 To Zred
x = Sheets("Sheet1").Cells(m, 1).Value
Range("E10").Value = x
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
' овaј ред изнад ти је штампање активног листа 2. Уколико желиш можеш и да урадиш пре штампања Set Print Area у ком случају ћеш употребити код испод'
' Range("E3:F13").Select
' ActiveSheet.PageSetup.PrintArea = "$D$9:$E$19"
' ActiveWindow.SelectedSheets.PrintOut Copies:=1
Next m
End Sub
У пољима где ти је име и презиме ученика ставиш исто функцију
=INDEX(Sheet1!$B$2:$Н$6;MATCH(Е$10;Sheet1!A$2:A$6;0);1)
За презиме 1, а за Име 2, јер је презиме једну колону удесно од редног броја, а име две колоне удесно