ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Writing Array formulas in code (https://www.excelbanter.com/excel-programming/430225-writing-array-formulas-code.html)

Simon - M&M[_2_]

Writing Array formulas in code
 

Hi,

I'm trying to record/write an array formula in VBA with an ISERROR formula
on the front.
I've tried recording and writing it with no success. When recording I got an
Unable to Record error and when writing I got a unable to set the
FormulaArray property of the range class error.
The formula i have is
FormulaArray = _
"=INDEX('Dispatch Summary'!R[-4]C:R[4995]C[78],SMALL(IF('Dispatch
Summary'!R[-4]C:R[4995]C[78]=R1C2,ROW('Dispatch
Summary'!R[-4]C:R[4995]C[78])),ROW(R[-4])),2)"


The formula i need is

=IF(ISERROR(INDEX('Dispatch Summary'!A1:CA5000,SMALL(IF('Dispatch
Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2)),"zzz",INDEX('Di spatch
Summary'!A1:CA5000,SMALL(IF('Dispatch Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2))

Is it possible to do?

Thanks for any help.

Simon

Per Jessen

Writing Array formulas in code
 

Hi

It seems that you need a cell reference:

Range("A1").FormulaArray=.....

Hopes this helps

--
Per

"Simon - M&M" skrev i meddelelsen
...
Hi,

I'm trying to record/write an array formula in VBA with an ISERROR formula
on the front.
I've tried recording and writing it with no success. When recording I got
an
Unable to Record error and when writing I got a unable to set the
FormulaArray property of the range class error.
The formula i have is
FormulaArray = _
"=INDEX('Dispatch Summary'!R[-4]C:R[4995]C[78],SMALL(IF('Dispatch
Summary'!R[-4]C:R[4995]C[78]=R1C2,ROW('Dispatch
Summary'!R[-4]C:R[4995]C[78])),ROW(R[-4])),2)"


The formula i need is

=IF(ISERROR(INDEX('Dispatch Summary'!A1:CA5000,SMALL(IF('Dispatch
Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2)),"zzz",INDEX('Di spatch
Summary'!A1:CA5000,SMALL(IF('Dispatch
Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2))

Is it possible to do?

Thanks for any help.

Simon



Patrick Molloy

Writing Array formulas in code
 

i created a named range MyData for 'Dispatch Summary'!A1:CA5000

then

Range("D8").FormulaArray =
"=IF(ISERROR(INDEX(mydata,SMALL(IF(mydata=$B$1,ROW (mydata)),ROW(1:1)),2)),""zzz"",INDEX(mydata,SMALL (IF(mydata=$B$1,ROW(mydata)),ROW(1:1)),2))"

worked fine



"Per Jessen" wrote in message
...
Hi

It seems that you need a cell reference:

Range("A1").FormulaArray=.....

Hopes this helps

--
Per

"Simon - M&M" skrev i meddelelsen
...
Hi,

I'm trying to record/write an array formula in VBA with an ISERROR
formula
on the front.
I've tried recording and writing it with no success. When recording I got
an
Unable to Record error and when writing I got a unable to set the
FormulaArray property of the range class error.
The formula i have is
FormulaArray = _
"=INDEX('Dispatch Summary'!R[-4]C:R[4995]C[78],SMALL(IF('Dispatch
Summary'!R[-4]C:R[4995]C[78]=R1C2,ROW('Dispatch
Summary'!R[-4]C:R[4995]C[78])),ROW(R[-4])),2)"


The formula i need is

=IF(ISERROR(INDEX('Dispatch Summary'!A1:CA5000,SMALL(IF('Dispatch
Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2)),"zzz",INDEX('Di spatch
Summary'!A1:CA5000,SMALL(IF('Dispatch
Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2))

Is it possible to do?

Thanks for any help.

Simon



joel

Writing Array formulas in code
 

Results = Evaluate("ISERROR(INDEX('Dispatch
Summary'!A1:CA5000,SMALL(IF('Dispatch Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2)")
if Results = true then
Results = "zzz"
else
Results = Evaluate("INDEX('Dispatch
Summary'!A1:CA5000,SMALL(IF('Dispatch Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2)")
end if

=IF(ISERROR(INDEX('Dispatch Summary'!A1:CA5000,SMALL(IF('Dispatch
Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2)),"zzz",INDEX('Di spatch
Summary'!A1:CA5000,SMALL(IF('Dispatch Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2))



"Simon - M&M" wrote:

Hi,

I'm trying to record/write an array formula in VBA with an ISERROR formula
on the front.
I've tried recording and writing it with no success. When recording I got an
Unable to Record error and when writing I got a unable to set the
FormulaArray property of the range class error.
The formula i have is
FormulaArray = _
"=INDEX('Dispatch Summary'!R[-4]C:R[4995]C[78],SMALL(IF('Dispatch
Summary'!R[-4]C:R[4995]C[78]=R1C2,ROW('Dispatch
Summary'!R[-4]C:R[4995]C[78])),ROW(R[-4])),2)"


The formula i need is

=IF(ISERROR(INDEX('Dispatch Summary'!A1:CA5000,SMALL(IF('Dispatch
Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2)),"zzz",INDEX('Di spatch
Summary'!A1:CA5000,SMALL(IF('Dispatch Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2))

Is it possible to do?

Thanks for any help.

Simon


Simon - M&M[_2_]

Writing Array formulas in code
 

Works a treat,

Thank you very much.

"Patrick Molloy" wrote:

i created a named range MyData for 'Dispatch Summary'!A1:CA5000

then

Range("D8").FormulaArray =
"=IF(ISERROR(INDEX(mydata,SMALL(IF(mydata=$B$1,ROW (mydata)),ROW(1:1)),2)),""zzz"",INDEX(mydata,SMALL (IF(mydata=$B$1,ROW(mydata)),ROW(1:1)),2))"

worked fine



"Per Jessen" wrote in message
...
Hi

It seems that you need a cell reference:

Range("A1").FormulaArray=.....

Hopes this helps

--
Per

"Simon - M&M" skrev i meddelelsen
...
Hi,

I'm trying to record/write an array formula in VBA with an ISERROR
formula
on the front.
I've tried recording and writing it with no success. When recording I got
an
Unable to Record error and when writing I got a unable to set the
FormulaArray property of the range class error.
The formula i have is
FormulaArray = _
"=INDEX('Dispatch Summary'!R[-4]C:R[4995]C[78],SMALL(IF('Dispatch
Summary'!R[-4]C:R[4995]C[78]=R1C2,ROW('Dispatch
Summary'!R[-4]C:R[4995]C[78])),ROW(R[-4])),2)"


The formula i need is

=IF(ISERROR(INDEX('Dispatch Summary'!A1:CA5000,SMALL(IF('Dispatch
Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2)),"zzz",INDEX('Di spatch
Summary'!A1:CA5000,SMALL(IF('Dispatch
Summary'!A1:CA5000=$B$1,ROW('Dispatch
Summary'!A1:CA5000)),ROW(1:1)),2))

Is it possible to do?

Thanks for any help.

Simon





All times are GMT +1. The time now is 01:40 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com