Home » excel » Random string from an array Excel

Random string from an array Excel

Posted by: admin April 23, 2020 Leave a comment

Questions:

I’m just wondering if anyone can solve a simple query in Excel. Basically I want a randomly generated string from an array.

The formula I have is this:

=INDEX({"Day","Night","Mixed"},RANDBETWEEN(1,3))

This works, however, whenever I switch between worksheets the values change and are not fixed once randomly selected.

Anyone have any ideas?

How to&Answers:

Go to options -> formulas -> enable iterative calculation
Then use a formula like this in B1:

  =IF(A1="","",IF(B1="",INDEX({"Day","Night","Mixed"},RANDBETWEEN(1,3)),B1)

If you empty out A1 then B1 will also be empty. If you put anything in A1 then B1 will choose randomly and stay with it till you empty out A1 again (where B1 will also be empty again)

Alternatively just copy you formula and paste “values only”… but the formula will be gone that way…

Answer:

You can use a self referencing UDF, something like this would work:

Function RandInArray(MyString As String, ByRef Target As Range)
Dim MyArr As Variant
If Target.Text = 0 Then
    MyArr = Split(MyString, ",")
    RandInArray = MyArr(Application.WorksheetFunction.RandBetween(LBound(MyArr), UBound(MyArr)))
Else
    RandInArray = Target.Value
End If
End Function

In B1 I have the formula: =RandInArray("Day,Night,Mixed",B1) Note its self reference to B1

Basically the formula says if you already have a value then don’t refresh it but if you don’t have a value then pick one randomly from the list passed in.

If you hit F2 (edit cell) and press enter you will force it to recalculate and get a new (or the same as is the rule of the randbetween) value, if you press F9 (recalculate) it will not change.