Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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 function which returns an Array(1,2,3,4,...) and I replace my excel formula by Array formula:

{=MYARRAY(A1)}

But when I stretch the formula, all cells display the first value of my array. why ?

Here is my VBA source code (complement.xlam) :

Function MYVALUE(x as integer)
    MYVALUE = 123
End Eunction

Function MYARRAY(x as integer)
    MYARRAY = Array(10,20,30)
End Eunction
like image 816
Alban Avatar asked Feb 17 '23 12:02

Alban


1 Answers

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

like image 96
Alban Avatar answered Mar 11 '23 11:03

Alban