簡體   English   中英

將單元格值拆分為數字數組

[英]Split cell value into numeric array

我的單元格包含類似“ 12_34_56”的內容

我用了:

MyNumbers = Split(Cells(1, 1).Value, "_")

將數值拆分為一個數組,但結果是一個字符串數組!

我知道我可以在數組的每個值上使用CInt,但是沒有任何辦法直接獲取數字數組嗎?

提前致謝

據我所知,不可能通過一次調用將一種類型的數組轉換為另一種類型,但是如果要在多個位置進行此轉換,顯而易見的選擇是編寫一個返回所需結果的函數結果如下:

Public Function SplitIntegers(StringToSplit As String, Sep As String) As Variant
    Dim arrStrings() As String
    Dim arrIntegers() As Integer
    Dim i As Long

On Error GoTo Err_SplitIntegers
    arrStrings = Split(StringToSplit, Sep)
    ReDim arrIntegers(LBound(arrStrings) To UBound(arrStrings))

    For i = LBound(arrStrings) To UBound(arrStrings)
        arrIntegers(i) = CInt(arrStrings(i))
    Next i

    SplitIntegers = arrIntegers
    Exit Function

Err_SplitIntegers:
    Select Case Err.Number
        Case 13 'Type Mismatch Error: StringToSplit contains non-numeric substrings
            On Error GoTo 0
            Err.Raise 9114, "SplitIntegers", _
                      "SplitIntegers failed: substring '" & arrStrings(i) & "' of string '" & StringToSplit & "' is not numeric"
        Case Else 'Unhandled error, return to calling code
            Dim iErrNum As Integer, strErrDesc As String
            iErrNum = Err.Number
            strErrDesc = Err.Description
            On Error GoTo 0
            Err.Raise iErrNum, "SplitIntegers", strErrDesc
    End Select
End Function

當您需要此功能時,您可以像拆分功能一樣單線調用此功能。

Dim arrMyInts() As Integer
arrMyInts = SplitIntegers(Cells(1,1).Value, "_")

這對我來說非常有效,並且設置起來非常簡單! 我將使用單元格A1作為帶有數字字符串的示例。

Dim strarray as Variant
Dim intarray as Variant
Dim x as Long

strarray = Split(Range("A1").Value, "_")
ReDim intarray(LBound(strarray) to UBound(strarray))
For x = LBound(strarray) To UBound(strarray)
    intarray(x) = CInt(strarray(x))
Next x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM