How to return array() in vba function to use it in cells Array formulas (matricial formula) : for split texte in multi cells

后端 未结 3 1351
故里飘歌
故里飘歌 2021-01-06 04:10

I\'m writing a function in VBA to use in excel formula, it\'s ok if my function return a single value:

=MYVALUE(A1)

Now I wrote another fu

相关标签:
3条回答
  • 2021-01-06 04:25

    A cell won't display an array, you would have to translate that array to a range/array of cells on the sheet. Alternatively, you could try converting the array to a delimited string, which may work as long as you aren't using very large arrays.

    Public Function MYARRAY(x As Integer)
    
    Dim tmpArray() As Variant
    Dim i As Long
    Dim arrayString As String
    
    tmpArray = Array(10, 20, 30)
    
    For i = LBound(tmpArray) To UBound(tmpArray)
        If arrayString = vbNullString Then
            arrayString = tmpArray(i)
        Else:
            arrayString = arrayString & ", " & tmpArray(i)
        End If
    Next
    
    MYARRAY = "{" & arrayString & "}"
    
    End Function
    
    0 讨论(0)
  • 2021-01-06 04:38

    the reason is that your vector actually is being displayed horizontally, if you create an array formula horizontally you will get your numbers. For you to have a vertical vector use the following:

    Function MYARRAY(x As Integer)
    
        MYARRAY = Application.WorksheetFunction.Transpose(Array(10, 20, 30))
    
    End Function
    
    0 讨论(0)
  • 2021-01-06 04:41

    Array formulas need use like that

    my VBA to split text in multi cells

    Function EXPLODE_V(texte As String, delimiter As String)
        EXPLODE_V = Application.WorksheetFunction.Transpose(Split(texte, delimiter))
    End Function
    Function EXPLODE_H(texte As String, delimiter As String)
        EXPLODE_H = Split(texte, delimiter)
    End Function
    
    1. Select region C3:C7 this define the vector direction.
    2. Press F2 to edit on the spot and type the following formula: =EXPLODE_V($B$3;" ")
    3. Press CTRL+SHIFT+ENTER ( INSTEAD of usual ENTER ) - this will define an ARRAY formula and will result in {=EXPLODE_V($B$3;" ")} brackets around it (but do NOT type them manually!).

      sample of split cells texte

    0 讨论(0)
提交回复
热议问题