Split函數的基本講解

2021-01-07 VBA語言專家

大家好,我們今日講解「VBA信息獲取與處理」教程中第十四個專題「Split函數提取數據信息的深入講解」的第一節「Split函數的基本講解」,這個專題是非常實用的知識點,希望大家能掌握利用。

大家好,我們今天開始第十四專題的講解,這個專題是對Split函數的深入發掘,深入分析這個函數在提取數據信息時候的作用。在VBA版本6(Office 2000)中,Microsoft引入了Split函數,該函數將文本字符串拆分為一個數組。在學習了網抓知識後,相信大家對這個函數有著非常深刻的認識,在處理網頁文檔數據的時候,這個函數應用非常頻繁,對於數據的截取,數據的獲取是隨處可見。在這個專題中,我們還將完善這個函數的一些功能。

第一節 Split函數的基本講解

在數組的應用中,我們講過,這個函數是十分重要的,它是指返回一個下標從零開始的一維數組,split函數包含指定數目的子字符串。我們這節就先回顧一下這個函數的基本用法。

1 什麼是Split函數

Split 函數:返回包含指定數目的子字符串的從零開始的一維數組。

語法:Split(expression, [ delimiter, [ limit, [ compare ]]])

各個參數的意義:

Expression必需。包含子字符串和分隔符的字符串表達式。如果 expression 是零長度字符串 (""),則 Split 返回空數組,即不包括任何元素和數據的數組。

Delimiter可選。用於標識子字符串限制的 String 字符。如果省略,則假定空格符 (" ") 為分隔符。如果 delimiter 是零長度字符串,則返回包含完整 expression 字符串的只含單一元素的數組。

limit 可選的。要返回的子字符串數,–1表示返回所有的子字符串。

Compare可選的。數字值,表示判別子字符串時使用的比較方式。其值如下:

vbUseCompareOption –1 用Option Compare語句中的設置值執行比較。

vbBinaryCompare 0 執行二進位比較。

vbTextCompare 1 執行文字比較。

vbDatabaseCompare 2 僅用於Microsoft Access。基於您的資料庫的信息執行比較。

2 Split應用的基本代碼

在我的第一套教程《VBA代碼解決方案》中,我講解過這個函數是將文本轉化為數組的函數,我們來看看這個函數的具體應用。

我給出一個字符串:

strFull = "VBA代碼解決方案 - VBA資料庫解決方案 - VBA數組與字典解決方案 - VBA代碼解決方案(視頻) - " & _

"VBA中類的解讀及應用 - VBA信息的獲取與處理"

在這個字符串中,我們看到每套教程中名稱的前後均有空格,當按照「-」和「 -」提取時返回的信息是不一樣的,如下面的測試代碼:

Sub mynz()

Sheets("SHEET1").Select

Cells.ClearContents

strFull = "VBA代碼解決方案 - VBA資料庫解決方案 - VBA數組與字典解決方案 - VBA代碼解決方案(視頻) - " & _

"VBA中類的解讀及應用 - VBA信息的獲取與處理"

'arrA將是從0到8的數組

'分隔符不包含空格,因此strFull中的空格將包含在返回的數組值中。

arrA = Split(strFull, "-")

sA = arrA(3) ' sA = " VBA代碼解決方案(視頻) ".

MsgBox "arrA的第四個字符是" &sA

'arrB將是從0到8的數組

'分隔符包含空格,空格不會包含在返回的數組值中。

arrB = Split(strFull, " - ")

sB = arrB(3) ' sB = "VBA代碼解決方案(視頻)".

MsgBox "arrB的第四個字符是" &sB

'下面的代碼會將數組放回到工作表中

For i = LBound(arrA, 1) To UBound(arrA, 1)

Cells(i + 1, 1) = arrA(i)

Next

For i = LBound(arrB, 1) To UBound(arrB, 1)

Cells(i + 1, 2) = arrB(i)

Next

MsgBox "ok!"

End Sub

代碼截圖:

代碼解讀:

1)strFull = "VBA代碼解決方案 - VBA資料庫解決方案 - VBA數組與字典解決方案 - VBA代碼解決方案(視頻) - " & _

"VBA中類的解讀及應用 - VBA信息的獲取與處理"

上述代碼給字符串賦值。

2)arrA = Split(strFull, "-")

上述語句返回一個數組,這個數組是以"-"分隔strFull而成的,這裡我們要注意由於測試字符串中是有空格的,所以返回的數組中各個元素中是含有空格的。

3)arrB = Split(strFull, " - ")

上述語句返回一個數組,這個數組是以"-"分隔strFull而成的,這裡我們要注意由於測試字符串中是有空格的,以含有空格的分隔符分隔後,返回的數組中各個元素中是不含有空格的。

4) '下面的代碼會將數組放回到工作表中

For i = LBound(arrA, 1) To UBound(arrA, 1)

Cells(i + 1, 1) = arrA(i)

Next

For i = LBound(arrB, 1) To UBound(arrB, 1)

Cells(i + 1, 2) = arrB(i)

Next

上述代碼我們可以看到返回的數組元素。

3 Split的應用返回結果分析

我們點擊運行按鈕,在工作表中可以看到返回的數組各個元素:

我們從截圖中看到,A列的數據中是含有空格的。

本節知識點回向:

① Split函數的意義是什麼?

② Split函數的分隔符不同會決定返回值的不同,注意空格的影響。

本講代碼參考文件:014工作表.xlsm

積木編程的思路內涵:

在我的系列書籍中一直在強調「搭積木」的編程思路,這也是學習利用VBA的主要方法,特別是職場人員,更是要採用這種方案。其主要的內涵:

1代碼不要自己全部的錄入。你要做的是把積木放在合適的位置然後去修正代碼,一定要拷貝,從你的積木庫中去拷貝,然後修正代碼,把時間利用到高效的思考上。

2 建立自己的「積木庫」。平時在學習過程中,把自己認為有用的代碼放在一起,多積累,在用到的時候,可以隨時拿來。你的積木庫資料越多,你做程序的思路就會越廣。

VBA的應用界定及學習教程:

VBA是利用Office實現個人小型辦公自動化的有效手段(工具)。這是我對VBA的應用界定。在取代OFFICE新的辦公軟體沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!

我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重複我之前的經歷,我根據自己多年VBA實際利用經驗,推出了六部VBA專門教程:

第一套:VBA代碼解決方案是VBA中各個知識點的講解,教程共147講,覆蓋絕大多數的VBA知識點,提供的程序文件更是一座不可多得的代碼寶庫,是初學及中級人員必備教程;目前這套教程提供的版本是修訂第二版,程序文件通過32位和64位兩種OFFICE系統測試。

第二套:VBA資料庫解決方案資料庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。目前這套教程提供的是修訂第一版教程,程序文件通過32位和64位兩種OFFICE系統測試。

第三套:VBA數組與字典解決方案數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。

第四套:VBA代碼解決方案之視頻是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。這套教程是第一套教程(修訂一版)的視頻講解,聽元音更易接受。這套教程還會額外提供通過32位和64位兩種OFFICE系統測試的程序文件。

第五套:VBA中類的解讀和利用這是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。這套教程的領會主要是讀者的領悟了,領悟一種佛學的哲理。

第六套教程:《VBA信息獲取與處理》,這是一部高級教程,涉及範圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程式信息獲得、隨機信息的利用、電子郵件的發送、VBA網際網路數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定製工作表信息函數等等內容。

上述教程的學習順序:1→3→2→6→5或者4→3→2→6→5。提供的程序文件更是一座巨大的代碼庫,供讀者使用,如需要可以WeChat: NZ9668

學習VBA是個過程,也需要經歷一種枯燥的感覺

「眾鳥高飛盡,孤雲獨去閒。相看兩不厭,只有敬亭山」。學習的過程也是修心的過程,修一個平靜的心。在代碼的世界中,心平靜了,心情好了,身體自然而然就好。心靜則正,內心裡沒有那麼多邪知邪見,也就沒有那麼多妄想。利人就是利己。我的教程助力給正在努力的朋友。

「水善利萬物而不爭」,綿綿密密,微則無聲,巨則洶湧。學習亦如此,知道什麼是自己所需要的,不要蜷縮在一小塊自認為天堂的世界裡,待到暮年時再去做自欺欺人的言論。要努力提高自己,用一顆充滿生機的心靈,把握現在,這才是進取。越是有意義的事情,困難會越多。願力決定始終,智慧決定成敗。不管遇到什麼,都是風景。看淡紛爭,看輕得失。學習時微而無聲,利用時則巨則洶湧。「路漫漫其修遠兮,吾將上下而求索」

每一分收穫都是成長的記錄,怎無憑,正是這種執著,成就了朝霞的燦爛。最後將一闕詞送給致力於VBA學習的朋友,讓大家感受一下學習過程的枯燥與執著:

浮雲掠過,暗語無聲,

唯有清風,驚了夢中啼鶯。

望星,疏移北鬥,

奈將往事雁同行。

阡陌人,昏燈明暗,

忍顧長亭。

多少VBA人,

暗夜中,悄聲尋夢,盼卻天明。

怎無憑!

分享我多年工作實際經驗的成果,隨喜這些有用的東西,給確實需要利用VBA的同路人。回向學習利用VBA的歷歷往事,不勝感慨,謹以這些文字以紀念,

分享成果,隨喜正能量

相關焦點

  • Javascript中split函數用法指導手冊
    Javascript中split函數用法指導手冊 本文向大家重點講解一下Javascript中split函數使用,它可以將一個字符串分割為子字符串,然後將結果作為字符串數組返回,相信本文介紹你對split函數的用法有明確的認識。
  • Split函數應用|分離商品和數量
    下面這個例子就可以用vba中的split函數解決問題的經典例子。▶如下圖,如果手動分開商品會很麻煩,複製粘貼多次才能解決。下面就用vba中的Split函數配合循環來快速解決這個問題。▶Split函數講解Split 函數返回一個包含分割符的基礎上進行分隔特定數量的數組。
  • 學習筆記 Perl split函數用法指導
    本文和大家一起學習一下Perl split函數用法,Perl中的一個非常有用的函數是split-把字符串進行分割並把分割後的結果放入數組中。這個函數使用規則表達式(RE),如果未特定則工作在$_變量上。
  • Excel函數,與數組相關的函數之split,excel使用技巧大全
    Excel函數,與數組相關的函數之split,excel使用技巧大全 ​excel使用技巧大全上一節咱們講了怎樣把數據併合在一起,現在咱們看下怎樣把合併後的數據給拆分開來
  • Java 字符串分割 split 函數使用知多少
    最近使用 split 遇到的問題你是否常常在使用 Java 的字符串 split() 函數,例如字符串簡單的分割。
  • python字符串處理-split和join函數應用
    >4554132843222983470771441433382241862391467219214780147348418212384583345990128460445394812815148128148"""然後使用split
  • 《Python_1》介紹三個字符串函數:join和split以及strip
    其實在其他函數中可以實現現合併多個字符串。``format函數的記憶口訣:填對寬,逗精類```2 split()函數刪除大字符串中的兩段的某些字符In [1]: 'unbelievable'.split('e')Out[1]: ['unb', 'li', 'vabl', '']In [2]: 'unbelievable'.split('e',1
  • Python中字符串的有關講解
    有關字符串的操作很多, 比如訪問字符串內的值,因為字符串也是有序的序列,因而可以通過下標索引的方式對字符串進行訪問或是切片,操作的方法和列表一樣;還有字符串的格式化,有關字符串的格式化在之前的格式化輸出中有了詳細的講解,主要有 % ;format()函數;f_string 這些方法。因為以上的知識之前都有過講解,這裡不做贅述。
  • Python split()方法詳解:分割字符串
    Python 中,除了可以使用一些內建函數獲取字符串的相關信息外(例如 len() 函數獲取字符串長度),字符串類型本身也擁有一些方法供我們使用
  • VBA中數組的合併與拆分(Join和Split),篩選(filter)的實際應用
    大家好,我們今日繼續講解VBA代碼解決方案的第63講內容:數組的合併與字符串拆分(Join & Split),及篩選filter函數的應用一Join函數:返回一個字符串,該字符串是通過連接某個數組中的多個子字符串而創建的,語法如下:Join(sourcearray[, delimiter])參數sourcearray是必需的
  • 「乾貨」Python字符串中的split方法
    了解一個內建函數方法比較好方式,就是使用help()函數查看它的文檔字符串,打開Python解釋器交互模式,輸入:>>> help(str.split)其中str的位置可以隨便替換成一個字符串,像這樣:>>> help('balabala'.split)結果如下:Help on built-in
  • Pandas 基本使用(二) — DataFrame.to_dict() 函數使用
    Pandas 處理數據的基本類型為 DataFrame,數據清洗時不可必然會關係到數據類型轉化問題,Pandas 在這方面也做的也非常不錯,其中經常用的是 DataFrame.to_dict() 函數之間轉化為字典類型;除了轉化為字典之外,Pandas 還提供向 json、html、latex、csv等格式的轉換:Snipaste
  • C++中的字符串split
    使用過Java, Python或者go這些語言然後切換到C++的同學很可能遇到一個問題就是:為什麼在C++的string類裡面為什麼沒有提供一個split
  • Offset函數的基本用法
    大家好,今天和大家分享的「Offset函數的基本用法",這個函數的作用是引用,它的參數比較多,而且參數還分正負。具體用法請往下面看一、參數講解1、Offset函數有5個參數第1參數:參照單元格第2參數:偏移行第3參數:偏移列第4參數:行高第5參數:列寬2、如果引用的是一個單元格,那麼後面兩個參數可以不寫,只寫前面的3個參數3、除第1參數之處,其餘的
  • 對比python字符串函數,輕鬆學習pandas的 str 矢量化字符串函數
    2)函數講解① find()函數功能 :檢測字符串是否包含指定字符。如果包含指定字符,則返回開始的索引;否則,返回-1。⑤ split()語法 :st.split('分隔符', maxSplit)注意 :如果split中什麼都不寫,則默認按照空格進行分割;如果指定了分割符,則按照指定分隔符,進行分割。
  • 對比python字符串函數,學習pandas的str矢量化字符串函數
    2.常用的python字符串函數 字符串中,空白符也算是真實存在的一個字符。1)python字符串函數大全2)函數講解① find()函數功能 :檢測字符串是否包含指定字符。如果包含指定字符,則返回開始的索引;否則,返回-1。
  • 巧用SQL:Oracle中實現split相關方法總結
    函數的實現,有網友積極參與互動,提出更多的方法和建議,我們揀選了尚世波先生的反饋文章分享給大家!前文回顧:巧用SQL:oracle pl/sql split函數看完上次的分享, 我很有感觸,在軟體開發過程中經常會出現按照某個字符進行分割字符串的情形,在網上也有很多這樣的方法,我收集了下並對他們做了下匯總和驗證。
  • 講解php字符串處理函數
    addcslashes —— 為字符串裡面的部分字符添加反斜線轉義字符addslashes —— 用指定的方式對字符串裡面的字符進行轉義bin2hex —— 將二進位數據轉換成十六進位表示chr —— 返回一個字符的ASCII碼chunk_split ——
  • IF函數搭配OR、AND函數使用的基本操作技巧講解 - 李先生的職場Excel
    ---[宋]張元幹《浣溪沙》在Excel中,基礎遇到的是多個函數搭配使用的操作,之前給大家介紹了IF函數的基本使用方法,這次接著給大家分享下IF函數和OR、AND函數搭配使用的基本操作技巧。IF函數和OR函數搭配首先我們先看下OR函數的基本用法OR函數的語法結構:
  • JavaScript設計模式之構造函數模式
    介紹構造函數大家都很熟悉了,不過如果你是新手,還是有必要來了解一下什麼叫構造函數的。構造函數用於創建特定類型的對象——不僅聲明了使用的對象,構造函數還可以接受參數以便第一次創建對象的時候設置對象的成員值。你可以自定義自己的構造函數,然後在裡面聲明自定義類型對象的屬性或方法。