excel kao anketni upitnik

Upload: becirspahic-almir

Post on 02-Nov-2015

12 views

Category:

Documents


0 download

DESCRIPTION

ljnlikm

TRANSCRIPT

Excel kao anketni upitnik

Uvaeni kolega bloger Nepismeni je prije nekih petnaestak dana postavio dosta zanimljiv upit ovdje na blogu. Prvo mu se ispriavam to do sada nisam nita o tome napisao. Naime zanimalo ga je moe li se u Excelu sloiti upitnik/anketa, koji se zatim distribuira ispitanicima, a kada oni vrate odgovore da Excel obradi odgovore na nain da izbaci statistiku za sve ispitanike. Problem je zanimljiviji samim time to ovo nije posao koji bi spadao u uobiajen opis Excelovog radnog mjesta. Ovo bi bio posao koji bi, prema mome miljenju, od lanova Office obitelji bolje obraivao Infopath iz dosta razloga. Malo sam mozgao o ovome i pravo da kaem nema nekoga jednostavnog out of box rjeenja. Meutim, prije e G. Bush priznati da su razlozi napada na Irak teki boolshit, nego Excel geek priznati da se s Excelom neto ne moe.Sam Excel ima alat Merge shared workbooks koji slui za mrenu kolaboraciju i koji bi bio djelomiino rijeenje postavljenog problema. Meutim, pada u vodu kada je u pitanju anonimnost i zatita podataka.Malo sam sam pokuao prkati po VBA, ali kako sam tu tanak nisam uspio samostalno do rjeenja. Na sreu postoje i oni koji nisu tanki. Sljedei kod je djelo ve spomenutog Toma Ogilvyja i radi ba ono to g. Nepismeni hoe. Rezultate iz workbooka koji su distribuirani studentima prebacuje u jedan worksheet:

Sub GetData()Application.ScreenUpdating = FalseDim bk As Workbook, rng As RangeDim rng1 As Range, sPath As StringDim icol As Long, sName As StringsPath = "C:\Anketa\"sName = Dir(sPath & "*.xls")icol = 1Do While sName ""Set bk = Workbooks.Open(sPath & sName)Set rng = bk.Worksheets("sheet1").Range("A1:A10")Set rng1 = ThisWorkbook.Worksheets(1).Cells(1, icol)rng.Copy rng1.Offset(1, 0)icol = icol + 1bk.Close Savechanges:=FalsesName = Dir()LoopApplication.ScreenUpdating = TrueEnd Sub

Sve to treba uiniti je kreirati folder C:\Anketa\ i u njega potrpati sve upitnike koje su vratili vai ispitanici. Nakon toga u sumarnom workbooku potrebno je kopirati ovaj kod u novi modul i pokrenuti makro, koji prebacije rezultate iz Sheet1!A1:A10 u stupce workbooka iz kojeg izvravamo kod. Tamo moemo postaviti obradu rezultata kakvu elimo. Rang kojeg makro kopira je Sheet1!A1:A10. Ako se odgovori ispitanika nalaze u drugom rasponu, tada treba izmjeniti referencu u kodu:set rng =bk.worksheets("sheet1").Range("A1:A10")Kod je provjeren i radi. Jedini limit je da broj ispitanika ne moe biti vei od 256, jer se odgovori prebacuju u stupce.