記一次vba+word+excel+powerbi處理問卷調(diào)研結(jié)果的經(jīng)歷

首先說明戳玫,在人人都有智能手機(jī)府阀、還有騰訊問卷這樣好用的免費(fèi)工具的時(shí)代寞蚌,還使用傳統(tǒng)的word+電子郵件的方式來做問卷調(diào)研,是一件比較讓人遺憾的事情截珍。

遺憾的是,我最近就遇到這么一個(gè)例子:要處理522份word版的調(diào)研問卷诞丽。

然而不遺憾的是,也收獲了一次難得的經(jīng)歷,是為記。

一靶瘸、為什么不直接用powerquery讀word表格润匙,而用vba芋簿?

原因在于word問卷里,個(gè)人信息是一個(gè)非常復(fù)雜的表格:


復(fù)雜的個(gè)人信息表格.png

而調(diào)研題目有單選、多選叨叙、量表和問答題等純文字格式。如果是純文本或純表格爽醋,都好辦,兩個(gè)混雜在一起送讲,我就沒轍绒瘦。

二该酗、思路

盡管答卷很復(fù)雜, 但是所有問卷的結(jié)構(gòu)都是相同,所以是有規(guī)律的辱匿,有規(guī)律就好辦昨忆。
基本思路是用vba把所有word合并成一個(gè)文檔繁疤,然后把該文檔內(nèi)容復(fù)制到excel鳖昌,再用power query來把合并起來的問卷再單獨(dú)分割成一份一份的進(jìn)行處理。

三、合并所有word文件

我自己不怎么懂vba吱七,直接貼網(wǎng)上找的合并同一個(gè)文件夾下的vba代碼:

 Sub MergeDocs()
  Dim rng As Range
  Dim MainDoc As Document
  Dim strFile As String, strFolder As String
    With Application.FileDialog(msoFileDialogFolderPicker)
      .Title = "Pick folder"
      .AllowMultiSelect = False
      If .Show Then
      strFolder = .SelectedItems(1) & Application.PathSeparator
      Else
        Exit Sub
      End If
    End With
Set MainDoc = Documents.Add
strFile = Dir$(strFolder & "*.doc") ' can change to .docx
Do Until strFile = ""
Set rng = MainDoc.Range
rng.Collapse wdCollapseEnd
rng.InsertFile strFolder & strFile
strFile = Dir$()
Loop
MsgBox ("Files are merged")
lbl_Exit:
Exit Sub
End Sub

由于發(fā)來的word是按照單位文件夾存放的,因此需要把所有文件夾下的word文件弄到一個(gè)單獨(dú)的文件夾下微峰。可以用windows資源管理器搜索.doc后綴的文件彼城,復(fù)制粘貼到新文件夾。考慮到windows自帶搜索很慢泼返,我直接用everything搜索工具來把所有問卷放到一個(gè)文件夾下。

有522個(gè)文件要合并,而且這個(gè)vba其實(shí)是很簡(jiǎn)單的代碼蝇闭,沒有狀態(tài)信息呻率,所以運(yùn)行vba宏之后,word就像程序崩潰的樣子呻引,界面一片白礼仗。我等了四十多分鐘,還沒見結(jié)果逻悠,真以為word死了元践,強(qiáng)行結(jié)束后發(fā)現(xiàn),已經(jīng)合并了四百多個(gè)了蹂风。郁悶得要死卢厂。只好分兩次合并,兩次粘貼惠啄。

每個(gè)單獨(dú)的問卷有8頁(yè)慎恒,522個(gè)文檔就有四千多頁(yè),盡管我16G內(nèi)存撵渡,打開之后分頁(yè)還是要分若干分鐘融柬,復(fù)制一下也要很久才反應(yīng)過來,粘貼到excel里也要若干分鐘趋距。雖然我沒細(xì)算時(shí)間粒氧,但從合并開始到最后把所有問卷內(nèi)容粘貼到excel里邊,耗去的時(shí)間至少有兩三個(gè)小時(shí)节腐。算是最耗時(shí)的部份之一外盯。

弄到excel里就好辦了,直接用powerquery連接翼雀。

四饱苟、powerquery處理過程

用word打開這個(gè)4000多頁(yè)的文檔,復(fù)制狼渊、粘貼箱熬,都巨慢,但是用powerquery連接后處理起來卻輕松異常,不得不佩服微軟城须。

言歸正傳蚤认,由于我不會(huì)貼出問卷內(nèi)容,代碼其實(shí)也沒啥用處糕伐,而且由于其中有題目信息砰琢,所以更不能貼出來以免引起麻煩。只說大體思路赤炒。

把所有問卷加載到powerquery之后的第一步氯析,就是添加索引列,正是靠索引才能把問卷再一個(gè)一個(gè)還原莺褒。

然后就是單獨(dú)處理個(gè)人信息部分掩缓,再單獨(dú)處理常規(guī)選擇題,再單獨(dú)處理量表題遵岩,再單獨(dú)處理問答題你辣。在整個(gè)處理過程中,不能將答題人信息搞丟尘执。

所以我把每個(gè)人的問卷處理成一條記錄舍哄,也就是生成了一個(gè)超級(jí)寬的表。具體用到的技術(shù)就是查找包含“個(gè)人信息”誊锭、“調(diào)查問題”和“問答題”所在行的索引號(hào)表悬,因?yàn)槊糠輪柧砭褪怯蛇@兩部分構(gòu)成的。如果查不到這兩個(gè)關(guān)鍵字丧靡,則返回null蟆沫。下一步要利用向下填充的方式將查出來的索引號(hào)覆蓋掉null值。這樣每一部分都有一個(gè)相同的索引號(hào)了温治,這時(shí)這個(gè)索引號(hào)就變成問卷ID了饭庞。

接著用分組的方式,按照上面找出來的索引號(hào)分組熬荆,這樣所有問卷都被還原成了包含三個(gè)子表的記錄舟山。

接下來分別對(duì)問卷進(jìn)行三個(gè)層面的處理:一是問題層面的處理,二是問卷層面的處理卤恳,三是把問卷按照題目來分組進(jìn)行處理累盗。基本思路是建立函數(shù)突琳。

首先是個(gè)人信息的處理若债。建立函數(shù)的方式其實(shí)就是展開任意一份問卷的個(gè)人信息子表格,對(duì)其進(jìn)行處理本今。最關(guān)鍵的一步是用轉(zhuǎn)置(transpose)進(jìn)行行列顛倒拆座,讓個(gè)人信息變成一行記錄。此外冠息,由于個(gè)人信息表格其實(shí)是六個(gè)列將字段和字段值分成了兩組挪凑,所以要把這兩組記錄用和并列的方式合成一組之后再轉(zhuǎn)置。然后把第一步輸入的表格用x代替逛艰,構(gòu)造函數(shù)躏碳。

接下來處理調(diào)查問題。展開任意一個(gè)問卷散怖,對(duì)調(diào)查問題的表格實(shí)行轉(zhuǎn)置操作菇绵,暫時(shí)不用對(duì)題目進(jìn)行細(xì)操作,因?yàn)槲覀兊哪康闹皇且獦?gòu)造一個(gè)橫排的問卷镇眷。

函數(shù)構(gòu)造好之后咬最,代入每一份問卷。然后再把每一份問卷的三個(gè)子表用Record.Combine函數(shù)來構(gòu)造新表欠动,使三個(gè)子表能形成一條記錄永乌,并且這條記錄包含個(gè)人信息、選擇題和問答題的題目具伍、選項(xiàng)及答案翅雏。這樣所有答題結(jié)果都變成了一行一行的記錄。

接下來人芽,選中所有題目望几,然后選擇“逆透視其他列”,這樣就將每道題的答題人信息和對(duì)應(yīng)的答案形成了一一對(duì)應(yīng)的關(guān)系萤厅。然后按照題目分組橄抹,這樣就把所有題目的答題人信息和答題結(jié)果封裝起來了。

這時(shí)就可以對(duì)題目和選項(xiàng)及答案進(jìn)行精細(xì)操作:關(guān)鍵點(diǎn)也在于要把豎直排列的題目和答案變成橫排祈坠『δ耄考慮到題目都超級(jí)長(zhǎng),我就直接用第1題赦拘、第2題來代替了慌随。選項(xiàng)用新增列的方式實(shí)現(xiàn),列名用字母表示選項(xiàng)躺同。這里需要注意的是阁猜,選項(xiàng)最多的那道題有多少個(gè)選項(xiàng),就要添加多少列蹋艺。然后針對(duì)新添加的選項(xiàng)列剃袍,對(duì)答案進(jìn)行檢查:如果答案包含對(duì)應(yīng)的列名字母,就記錄為“Y”或"是"或其他符號(hào)捎谨,能標(biāo)記每道題的答案對(duì)應(yīng)了哪些列的列名字母就ok民效,這樣答案就被轉(zhuǎn)化成列了憔维。處理完畢之后依樣畫葫蘆把第一步引入的題目表格用x代替,構(gòu)造函數(shù)畏邢。這時(shí)暫時(shí)不用考慮量表題业扒。

用上一步構(gòu)造的函數(shù),對(duì)所有題目進(jìn)行處理舒萎。因?yàn)檎{(diào)查報(bào)告要針對(duì)每一題進(jìn)行統(tǒng)計(jì)程储、繪制圖表,所以臂寝,必須將所有題目單獨(dú)拆分成數(shù)據(jù)模型章鲤。這時(shí)就有兩個(gè)選擇:一是在一個(gè)excel文件里構(gòu)建所有題目的模型;二是一個(gè)題目就用一個(gè)excel文件咆贬。我選擇了后一種方式败徊。原因在于,數(shù)據(jù)模型建立好之后掏缎,我要統(tǒng)計(jì)每個(gè)選項(xiàng)的選擇人數(shù)集嵌,就得為每個(gè)選項(xiàng)建一個(gè)度量值。題目中選項(xiàng)最多的有12個(gè)御毅。相同的操作要在每一個(gè)模型上進(jìn)行根欧,非常繁雜。而采用第二種方式的好處是端蛆,我只需要改變每一個(gè)excel文件里powerquery生成的查詢中的題目篩選凤粗,就能快速?gòu)牡谝活}切換到第二題,這樣大大節(jié)省了步驟今豆。

不過方法二要求對(duì)單獨(dú)的數(shù)據(jù)模型考慮周密嫌拣,否則后期修改就又是體力活兒:我忘記為選項(xiàng)E設(shè)置度量值了,于是呆躲,我重新打開了幾十個(gè)excel异逐,為每個(gè)excel的模型添加選項(xiàng)E的度量值,然后再拖入該模型里邊的若干個(gè)數(shù)據(jù)透視表中插掂。

由于我在每個(gè)模型中灰瞻,根據(jù)人員信息表中的人員屬性維度,為每一個(gè)維度添加了數(shù)據(jù)透視表辅甥,這樣一來酝润,就可以做很精細(xì)的分析。換了以前璃弄,要看某個(gè)選項(xiàng)男女選擇的差異要销,將會(huì)是一件很復(fù)雜的事情。

至此夏块,處理基本完畢疏咐,剩下的就是根據(jù)統(tǒng)計(jì)匯總的數(shù)據(jù)透視表作圖纤掸,略過。

五浑塞、題外話

想起很多年前茁肠,線上答題不方便的時(shí)候,都是用的紙質(zhì)問卷答題缩举,然后找人手工一個(gè)一個(gè)錄入到excel或spss中處理,相當(dāng)耗時(shí)匹颤;后來用了電子版問卷仅孩,但坑爹的是采取的是這個(gè)例子中的word答題方式,處理起來仍然耗時(shí)耗力印蓖。在現(xiàn)在人人有手機(jī)辽慕,各種線上調(diào)研系統(tǒng)百花齊放的情況下,再也不要采取原始的方式進(jìn)行調(diào)研赦肃,害人害己溅蛉,勞民傷財(cái)。這個(gè)例子只是在既成事實(shí)的基礎(chǔ)上嘗試把繁重的體力活兒盡可能縮短到幾個(gè)小時(shí)以內(nèi)他宛,沒有任何推廣和借鑒的價(jià)值船侧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市厅各,隨后出現(xiàn)的幾起案子镜撩,更是在濱河造成了極大的恐慌,老刑警劉巖队塘,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袁梗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡憔古,警方通過查閱死者的電腦和手機(jī)遮怜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸿市,“玉大人锯梁,你說我怎么就攤上這事⊙媲椋” “怎么了涝桅?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)烙样。 經(jīng)常有香客問我冯遂,道長(zhǎng),這世上最難降的妖魔是什么谒获? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任蛤肌,我火速辦了婚禮壁却,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘裸准。我一直安慰自己展东,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布炒俱。 她就那樣靜靜地躺著盐肃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪权悟。 梳的紋絲不亂的頭發(fā)上砸王,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音峦阁,去河邊找鬼谦铃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛榔昔,可吹牛的內(nèi)容都是我干的驹闰。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼撒会,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嘹朗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起诵肛,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤骡显,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后曾掂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惫谤,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年珠洗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溜歪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡许蓖,死狀恐怖蝴猪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膊爪,我是刑警寧澤自阱,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站米酬,受9級(jí)特大地震影響沛豌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赃额,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一加派、第九天 我趴在偏房一處隱蔽的房頂上張望叫确。 院中可真熱鬧,春花似錦芍锦、人聲如沸竹勉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽次乓。三九已至,卻和暖如春孽水,著一層夾襖步出監(jiān)牢的瞬間票腰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工匈棘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人析命。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓主卫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鹃愤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子簇搅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 1.1 VBA是什么 直到90年代早期,使應(yīng)用程序自動(dòng)化還是充滿挑戰(zhàn)性的領(lǐng)域.對(duì)每個(gè)需要自動(dòng)化的應(yīng)用程序,人們不得...
    浮浮塵塵閱讀 21,726評(píng)論 6 49
  • 自從2014年開通[完美Excel]微信公眾號(hào)以來,堅(jiān)持分享已經(jīng)學(xué)習(xí)到的Excel和VBA知識(shí)和心得软吐,目前已分享文...
    完美Excel閱讀 8,298評(píng)論 6 69
  • 1. 問:WORD 里邊怎樣設(shè)置每頁(yè)不同的頁(yè)眉瘩将?如何使不同的章節(jié)顯示的頁(yè)眉不同? 答:分節(jié)凹耙,每節(jié)可以設(shè)置不同的頁(yè)眉...
    花開易見落難尋閱讀 2,243評(píng)論 2 37
  • 系統(tǒng) macOS sierra姿现。在安裝Laravel之前已經(jīng)配置好了MAMP,成功在本地運(yùn)行了php項(xiàng)目(TP框架...
    南方小金豆閱讀 545評(píng)論 0 0