DSML_用Excel实现按行排序后按列排序,最后高亮重复值
記錄一個(gè)剛剛用本‘笨’辦法解決的數(shù)據(jù)清洗和數(shù)據(jù)整理問題
前幾天收到郵件,對之前我一篇論文的方法進(jìn)行測試的時(shí)候有些疑問。我在復(fù)現(xiàn)的時(shí)候遇到了以下的問題:
我現(xiàn)在有三個(gè)結(jié)果,res1, res2 和 res3,他們的結(jié)構(gòu)基本是一致的,都是兩列:
N8 N84 N18 N4 N22 N64 N10 N17 ... M0P1 M0P2 ...如果不用 Python,只用 Excel, 如何找出三個(gè)結(jié)果中的重復(fù)值?(N2-N1視為與N1-N2等同)
我的笨辦法(不用 VBA)
首先,分別按照編號大小左右排序,再從小到達(dá)按列排序,最后拼接字符串。然后只要找出三個(gè)結(jié)果中的重復(fù)值并高亮就行了。
首先,將數(shù)據(jù)清理一下。因?yàn)?M0P 開頭的數(shù)據(jù)只有 M0P1 和 M0P2,我直接通過查找替換將所有 M0P1 換為 1001,M0P2換為1002(1001是因?yàn)镹*中沒有大于500的值,所以1001可以保證 unique)。
然后,我們將第二列向右移動一列,因?yàn)榭粘龅倪@一列要放分列的輸出。我們通過文本分列向?qū)?#xff08;數(shù)據(jù)->分列)將所有N*拆分成N和數(shù)字。如果選擇按數(shù)據(jù)的“分隔符”進(jìn)行拆分并將N設(shè)置為分隔符,則可以直接提取數(shù)字(這個(gè)在窗口預(yù)覽的時(shí)候就能看到。具體可以參考微軟的這個(gè)教程)。由于之前已經(jīng)把M0P*轉(zhuǎn)換為數(shù)字了,所以分列后這些1001、1002不會動;對于這兩列,我們分別進(jìn)行分列操作,這時(shí)所有N*中的數(shù)字則會以一個(gè)新列的形式出現(xiàn)在列旁。之后我們只要所有處理好的數(shù)據(jù)歸回成完整的兩列,我們的數(shù)據(jù)清理就完成了。
(Copyright ? https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
數(shù)據(jù)現(xiàn)在長這樣:
8 84 18 4 22 64 10 17 ... 1001 1002 ...之后,我們需要進(jìn)行按行排序,這一步直接做的話我試了一些方案,都不行,除非用 VBA,否則都不能自動化操作。因?yàn)槲业拿啃芯蛢蓚€(gè)數(shù)字,所以我們可以使用LARGE來實(shí)現(xiàn)類似排序的效果。假設(shè)我們第一列為excel的A列,第二列為B列,則使用=LARGE(A1:B1,2)就可以找出二者中小的數(shù)字,=LARGE(A1:B1,1)則找出二者中大的數(shù)字(具體參考這篇微軟的教程:“If n is the number of data points in a range, then LARGE(array,1) returns the largest value, and LARGE(array,n) returns the smallest value.”)
這步完成后大概數(shù)據(jù)變成這樣:
A B C D 8 84 8 84 18 4 4 18 22 64 22 64 10 17 10 17 ... 1001 1002 1001 1002 ...之后我們直接對C列(每行的最小值)進(jìn)行按列排序就好,excel會幫我們擴(kuò)展到全部四列(Copyright ? https://blog.csdn.net/s_gy_zetrov. All Rights Reserved):
A B C D 18 4 4 18 8 84 8 84 10 17 10 17 22 64 22 64 ... 1001 1002 1001 1002 ...最后一步,為了比較重復(fù)值,我們需要將CD列擠成一列,這里是用拼接函數(shù)=CONCATENATE(C1,"_",D1)然后一樣拉到底使其apply到所有行:
A B C D E 18 4 4 18 4_18 8 84 8 84 8_84 10 17 10 17 10_17 22 64 22 64 22_64 ... 1001 1002 1001 1002 1001_1002 ...將三個(gè)結(jié)果粘進(jìn)一個(gè) Excel 文件中,假設(shè)拼接字符串的列在E、J、O,則全選這三列,選擇“條件格式”->“重復(fù)值”,所有重復(fù)出現(xiàn)的字符串就會被高亮出來了!(具體參考這篇微軟教程)。
至此,問題解決。辦法應(yīng)該是最笨的一種了,但優(yōu)勢是不需要VBA,對沒有編程背景知識的用戶(Copyright ? https://blo友好g.csdn.net/s_gy_zetrov. All Rights Reserved)。
以上。
(Copyright ? https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
visitor tracker
總結(jié)
以上是生活随笔為你收集整理的DSML_用Excel实现按行排序后按列排序,最后高亮重复值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python random.sample
- 下一篇: 小技巧-i标签与em标签和b标签与str