正則提取太復(fù)雜?部分場(chǎng)景可以用函數(shù)點(diǎn)擊上方“Excel和VBA”,選擇“置頂公眾號(hào)” 致力于原創(chuàng)分享Excel的相關(guān)知識(shí),源碼,源文件打包提供 一起學(xué)習(xí),一起進(jìn)步~~ 之前幾天我們分享了 單元格的內(nèi)容提取,主要是使用正則來(lái)實(shí)現(xiàn)的,因?yàn)樽罱荚谑褂胮ython爬蟲(chóng),比較多的使用到了正則表達(dá)式,所以說(shuō)著說(shuō)著就有點(diǎn)扯遠(yuǎn)了,有小伙伴在后臺(tái)提醒我,都快成為了正則的章節(jié)了。 所以今天回歸正題,繼續(xù)來(lái)分享一些其他的單元格提取的方法。 正則雖然效果不錯(cuò),但是因?yàn)檫€需要學(xué)習(xí)一些正則表達(dá)式的語(yǔ)法、結(jié)構(gòu)等,對(duì)于大家來(lái)說(shuō),腦細(xì)胞肯定不夠用了,那么有沒(méi)有簡(jiǎn)單一些的方法呢? 簡(jiǎn)單的方法肯定有,不過(guò)也是和正則一樣,也是要針對(duì)場(chǎng)景的,所以直接進(jìn)入場(chǎng)景說(shuō)明 場(chǎng)景說(shuō)明今天的場(chǎng)景為了保持連貫性,依然還是使用上節(jié)的場(chǎng)景 今天我們要實(shí)現(xiàn)的效果是從每個(gè)單元格中提取左邊的三位,右邊的三位 簡(jiǎn)單可以理解為按照長(zhǎng)度來(lái)提取文本 代碼區(qū)Sub left11() Dim rng As Range, a As Range Set rng = Application.InputBox("請(qǐng)選擇單元格區(qū)域", "提取單元格左邊三位", , , , , , 8) For Each a In rng a.Offset(0, 1) = Left(a, 3) Next a End Sub
Sub right11() Dim rng As Range, a As Range Set rng = Application.InputBox("請(qǐng)選擇單元格區(qū)域", "提取單元格右邊三位", , , , , , 8) For Each a In rng a.Offset(0, 1) = Right(a, 3) Next a End Sub 注意 依然要注意的是,這里提供了兩段代碼,大家復(fù)制使用的時(shí)候要留意 來(lái)看下代碼的效果 代碼解析很明顯,今天的代碼中,我們并沒(méi)有使用正則了,那么我們又是利用什么樣的方法來(lái)實(shí)現(xiàn)內(nèi)容的提取的呢? left,right 對(duì)于我這個(gè)小學(xué)英語(yǔ)水平的人都能夠知道這兩個(gè)英文單詞的意思了,就是左邊和右邊 沒(méi)錯(cuò),今天我們就是直接用這兩個(gè)單詞來(lái)實(shí)現(xiàn)的提取 他們的使用語(yǔ)法也非常的簡(jiǎn)單 left(文本,長(zhǎng)度) right(文本,長(zhǎng)度) 文本非常好理解了,那就是每個(gè)單元格的內(nèi)容,那么長(zhǎng)度呢? 就是你要提取的字符的長(zhǎng)度,left就是從左邊數(shù),right就是從右邊數(shù),也可以理解開(kāi)頭的幾位,結(jié)尾的幾位這樣 那么說(shuō)到這里,又有一個(gè)問(wèn)題冒出來(lái)了,特殊字符或者空格也被算在內(nèi)嘛? 直接用例子說(shuō)明下吧 我們?cè)谶@里分別加上一個(gè)空格和一個(gè)特殊字符,看看是否識(shí)別 很明顯,不管是特殊字符還是空值都被算在這個(gè)長(zhǎng)度內(nèi)的 預(yù)告: 有了從頭提取,從末尾提取,那么如果我想要提取的內(nèi)容僅僅是中間一部分呢? 怎么辦呢? 小伙伴們有思路嘛?歡迎留言~~ |
|