老媽在學校圖書館工作,最近在整理書目,高中的圖書管理情況異常慘烈,她不會於是讓我幫忙,但是我也要被逼瘋了嗚嗚嗚,求教啊啊啊

需要處理上萬本,但是我只會手動整理

選中後再點擊篩選。

3.篩選書目記錄號,只保留非空單元格;

4.把篩選後的單元格全選複製,新建一個SHEET,粘貼;

5.回到原SHEET,在書名列篩選,篩選條件為「-」

6.選中書名列,複製,在新SHEET書名列後面空一列,粘貼

現在新SHEET中,存在5個列:書目記錄號、ISBN、書名、空列 、出版社,以下操作均在新SHEET中進行

7.選中書名列,點擊數據選項卡--分列--下一步--在「其它」中輸入「/」--下一步--完成,如圖:

8.選中出版社列,點擊數據選項卡--分列--下一步--勾選「分號」(如果該列的分號不是英 文分號的話,則需要在「其它」中輸入中文分號「;」)--下一步--完成

9.調整一下列順序。

完成


其實這類問題建議去ExcelHome問,可以上傳文件,也有很多大神幫忙解決,在知乎可以看一些學習EXCEL的方法論,具體的操作問題在這裡很少有人答。

方法論可以看一下我的另一個回答:

EXCEL學習的順序是什麼??

www.zhihu.com圖標

書我只推薦這本

你早該這麼玩Excel京東¥ 93.00去購買?


正則表達式唄

寫一點python就行了。先pandas讀取excel文件,然後就是用正則的search加上group提取信息

你需要了解一下正則表達式的基本知識,然後對pandas有點了解就可以開幹了


補充一下,從你現在給出的截圖來看,原始的數據相當的臟

  1. 一本書可能有多本藏書,於是就在一行里重複寫這本書的記錄了?這樣的話需要把寬數據變成長數據,考慮使用pandas的melt
  2. 從上方截圖沒有看到圖書分類號,這個你是如何查詢的呢?
  3. 從現在的情況來看,好像是三行表示一項數據,但是是否有特例?
  4. 作者的格式包括xxx著,xxx編,xxx主編,xxx譯等等,這個可以通過正則初步拆分以後,對導數第一,第二甚至第三個字元做提取唯一項來了解。如果不用把作者名字和著/譯/編這些動詞分割開來倒是能簡單點,但是這樣弄出來的數據就不夠乾淨,實際上是不對的

我倒是覺得,上面的那個表也不像是手動錄進電腦的,更加像是由軟體生成的一個記錄表,與其從這種導出表裡哼哧哼哧的進行數據清理,說不定去原始資料庫里找數據還更實際一點

另外,如果有一些數據在原始表裡是缺如的,那你可能需要上網去搜關於這本書的材料。這個時候估計要用selenium去抓取網頁的內容了,畢竟國內好像沒有比較好的獲取書籍材料的api

總之,用這個機會學一下python還是非常不錯的


在我看來,你的源表實際上不是很雜亂那種了,很好解決。我看了你的外表,我感覺後面幾列貌似全部是重複列,如果是這樣,那麼可以刪除了,只保留一列。另外,我看的你的源表數據,每一個數據組只有兩行,並且第二行的前兩個欄位缺失。因此你需要相對null/0這類預設數據進行補齊,方法有兩個,第一個,直接用公式或者智能填充補齊缺失內容。第二種,單獨新建兩個列,使用if公式判斷來補齊這些內容。

解決了預設值,那麼實際上就好辦了,接下來的數據規約部分,你仍然有兩種方式可以選擇:第一種,你可以嘗試使用power pivot試試看,以這個表為基礎建立兩個數據源,載入到模型裡面,然後再做一篩選,然後再用扁平化數據透視。第二種,通過高級篩選,把第一行的部分放到一個表裡面,成為你的書籍信息主表,然後再篩選出第二部分也就是出版社信息表,作為你的第二個表。然後使用power query或者vlookup公式,把兩個表合二為一即可。

看似很複雜,但做起來很簡單,實際上你這種數據源已經算好處理的了,畢竟有規則。


可以處理。寫個Excel的宏就可以。上圖的資料雖然不是規範表格式,但是很有規律,也整齊。只要格式都一致就可以批量處理,不管是一萬本還是十萬本都沒關係。

有具體的表就可以寫宏代碼


首先得說,原數據記錄方式給數據整理帶來很大不便,同一本書的數據分成兩行去記錄,匯總,篩選和查找都不方便。

不過,從目前顯示的內容看上去還算幸運,不是完全沒法解決,因為在同一個單元格里的信息內容相對比較固定,而且都用固定的分號進行分隔了。

解決方法就是,先找到每本書的一個唯一的編碼(記錄號或者訂購號),用vlookup把這行對應的數據逐列提取出來。再把記錄號或訂購號下一行單元格等於上一行同列位置的單元格(比如B1=B2),篩選空格後把公式粘貼在篩出來的空格單元格,這樣能把該書第二行的內容和這本書的唯一編碼對應上。後面再把帶有很多項目的單元格數據進行分列,這樣就能繼續用vlookup提取對應的數據了。

有點麻煩就是有的數據我看沒有記錄出版社和地點,直接是年份,可能得篩選出來添加些空行來保持順序一致再進行vlookup。

感覺上面方法基本能解決了。


推薦閱讀:
相关文章