Excel中不確定列數(shù)的數(shù)據(jù)列快速翻轉(zhuǎn)

圖1 Excel分列混亂問題
分析文本數(shù)據(jù)的特征:每行數(shù)據(jù)分布的表列數(shù)目不確定;每行右邊3列均為店名、省、市。如果只有少數(shù)幾行數(shù)據(jù),在Excel中采用手動(dòng)調(diào)整對(duì)齊表列、合并店名標(biāo)題等操作,工作量不算什么,也沒必要大動(dòng)干戈編程處理。但是這里需要處理4478行數(shù)據(jù),因此需要采用簡(jiǎn)單的編程來(lái)實(shí)現(xiàn)對(duì)Excel表格數(shù)據(jù)中不確定列數(shù)的數(shù)據(jù)翻轉(zhuǎn)。
這里需要將右邊3列(店名、省、市)對(duì)稱翻轉(zhuǎn)到行首(市、省、店名),然后將剩余的表列數(shù)據(jù)合并為“產(chǎn)品標(biāo)題”字段。操作的示意圖如圖2所示。

圖2不確定列數(shù)的Excel表列對(duì)稱翻轉(zhuǎn)示意圖
編程環(huán)境
采用Asp專業(yè)調(diào)試工具.exe搭建本地電腦運(yùn)行Asp網(wǎng)頁(yè)的運(yùn)行環(huán)境。當(dāng)然在Excel中編寫VBA宏程序,也可以實(shí)現(xiàn),這里采用筆者熟悉的Asp編程。
編程算法
(1)將交易記錄信息表中的產(chǎn)品標(biāo)題列的所有數(shù)據(jù)(4478行)復(fù)制到taobao.txt中。
(2)逐行讀取taobao.txt文件中的每一行數(shù)據(jù),賦值到line變量中,采用split(line,”|”)分割每一行數(shù)據(jù),并保存到arr數(shù)組變量。
(3)利用for循環(huán),從數(shù)組變量的最后一個(gè)元素(下標(biāo)變量為ubound(arr))到第一個(gè),倒序遍歷arr數(shù)組讀取每個(gè)元素的值(字符串)。例如,某一行數(shù)據(jù)有a0,a1,a2,a3,a4等元素,從i=4到0讀取,即讀取順序?yàn)閍4,a3,a2,a1,a0。
(4)在for遍歷之前,設(shè)置一個(gè)計(jì)數(shù)器m=0,在for循環(huán)體內(nèi),每讀取一次數(shù)組元素,計(jì)數(shù)器m加1。判斷讀取第4個(gè)元素前,將讀取的元素值用“|”拼接字符串,在讀取第4個(gè)以后的元素值,采用直接拼接(合并單元格)。將拼接的字符串賦值給newline變量。
(5)每處理一行數(shù)據(jù)后,將新字符串newline逐行寫入taobao2.txt目標(biāo)文件中。
(6)從第(2)到第(5)步,設(shè)置while循環(huán)。循環(huán)條件是沒有達(dá)到文本末尾:
Dowhilenotf1.atEndofStream
……
Loop
(7)關(guān)閉文件的讀寫。
編程代碼
完整代碼如下,左右滑動(dòng)代碼可顯示全部。
1setfs=server.createobject("scripting.filesystemobject")
2file=server.mappath("taobao.txt")'讀取的文件名
3setf1=fs.opentextfile(file,1,true)'讀取方式
4filename=Server.MapPath("taobao2.txt")'寫入的文件名
5Setf2=fs.OpenTextFile(filename,8,true,0)'寫入方式
6Dowhilenotf1.atendofstream
7line=f1.readline
8arr=Split(line,"|")
9newline=""
10m=0
11Fori=ubound(arr)To0Step-1
12m=m+1
13Ifm<5then
14newline=newline+"|"+arr(i)
15Else
16newline=newline+arr(i)
17Endif
18Next
19f2.writeline(newline)
20Loop
21Response.write"Ok"
22f1.close()
23Setf1=Nothing
24f2.close
25Setf2=nothing
26Setfs=nothing
將Asp程序保存在index.asp文件中,與Asp專業(yè)調(diào)試工具.exe文件在同一個(gè)文件夾下。雙擊運(yùn)行“Asp專業(yè)調(diào)試工具.exe”,即可打開瀏覽器自動(dòng)執(zhí)行index.asp程序,程序執(zhí)行非??欤瑤缀鯚o(wú)察覺,在同一文件夾下,即可看見新生成了目標(biāo)文件taobao2.txt,其內(nèi)容如圖3B所示,可以看出,經(jīng)過25行簡(jiǎn)單的asp代碼,實(shí)現(xiàn)了對(duì)4478行文本數(shù)據(jù)的快速翻轉(zhuǎn)。
(A)處理前 (B)處理后
圖3 處理前后的文本數(shù)據(jù)(點(diǎn)擊圖片可放大)
Excel分列處理
全選復(fù)制taobao2.txt的文本內(nèi)容,在Excel中粘貼,然后采用“|”分列,即可得到如圖4所示的結(jié)果。

圖4 最終的Excel數(shù)據(jù)
后記
本文舉例處理“代寫”交易記錄大數(shù)據(jù),旨在研究學(xué)術(shù)不端亂象,希望大家不會(huì)被圖中的代寫產(chǎn)品信息吸引,譚編不希望本文成為誤導(dǎo)大家“不端”的誘因。如果您是“編輯之談”和“編輯之譚”的忠實(shí)粉絲,作為期刊編輯,譚編愿意給您的寫作和投稿提供建議。
譚編采用簡(jiǎn)單的26行程序代碼,實(shí)現(xiàn)了對(duì)Excel表中不確定列數(shù)的4478行表格數(shù)據(jù)的快速翻轉(zhuǎn)。您可能也會(huì)遇到類似的Excel表格問題,這篇文章可以提供思路。
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計(jì)算焓和比熱容 2020-08-31
-
CAD外部參照無(wú)法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
