這個問題已經困擾我很久了。工作上我使用Excel將machine logs中所需要的資訊擷取出來並轉換成同事看得懂的資訊,下面就是其中一條machine log.
儲存格A1
0x1a 0x95 0x4a 0x49 0x73 0xb8 0x41 0xe 0x5e 0x2 0x1 0x1 0x1 0x7a 0x95 0xa5 0xaa 0x33 0xa5 0xa1 0x8f 0x50 0xd 0x81 0xf 0xd1 0xf 0x54 0x16 0x4b 0xff 0xd0 0x0 0x1 0xb8 0x42 0x20 0xda 0x45 0x1 0x1 0x1 0x2a 0x95 0xa1 0x8a 0xa1 0x8f 0x40 0x8c 0x94 0xf 0xd1 0x32 0xaa 0x33 0x16 0x4b 0x9 0x26 0x0 0x90 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf3 0xf5 0xba 0xb9 0x1 0x8e 0x4c 0x76 0x8d 0x36

文字中紅色的部份是需要擷取出來的資訊。通常一個logs裡面最少會有一個,最多會有三個資訊,所以我用三個儲存格處理,資訊可能都不一樣,也可能都一樣。我是使用的IFS和SEARCH把這三個資訊的位子抓出。下面是我使用的公式,這個公式在第二與第三個儲存格的時候會改變以避免當相同的資訊出現兩次時只抓到第一個資訊:
儲存格A2:
IFS(IFERROR(SEARCH("0x8f 0x50",A1),1)<>1,SEARCH("0x8f 0x50",A1),IFERROR(SEARCH("0x8f 0x40",A1),1)<>1,SEARCH("0x8f 0x40",A1),IFERROR(SEARCH("0xb9 0x1",A1),1)<>1,SEARCH("0xb9 0x1",A1)

儲存格A3:
IF(A2="","",IFS(IFERROR(SEARCH("0x8f 0x50",A1,A2+9),1)<>1,SEARCH("0x8f 0x50",A1,A2+9),IFERROR(SEARCH("0x8f 0x40",A1,A2+9),1)<>1,SEARCH("0x8f 0x40",A1,A2+9),IFERROR(SEARCH("0xb9 0x1",A1,A2+9),1)<>1,EARCH("0xb9 0x1",A1,A2+9)

這個公式有個大問題是IFS函數會先去找整段log中的"0x8f 0x50",如果沒有才會去找"0x8f 0x40",如果再沒有才會去找"0xb9 0x1"。所以當整段logs中"0x8f 0x50"出現在第二或第三個位置的時候,在"0x8f 0x50"前面的資訊就會被忽略。我的問題是Excel中有沒有函數是可以一次把三個可能出現的資訊都找到,而非像IFS第一個條件符合之後就忽略第二跟第三個條件?

請Excel大神開示,感謝。
文章關鍵字
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!