sc: Implement lambda and related fuctions as FunctionsTest
Like the other functions in Calc Based on https://gerrit.libreoffice.org/c/core/+/208073 Change-Id: I0e74bff3e29328007345841ffefd6fb18965e5ec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209144 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
$(eval $(call sc_functions_test,lambda))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
@@ -141,6 +141,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sc, \
|
||||
CppunitTest_sc_datetime_functions_test \
|
||||
CppunitTest_sc_financial_functions_test \
|
||||
CppunitTest_sc_information_functions_test \
|
||||
CppunitTest_sc_lambda_functions_test \
|
||||
CppunitTest_sc_logical_functions_test \
|
||||
CppunitTest_sc_mathematical_functions_test \
|
||||
CppunitTest_sc_spreadsheet_functions_test \
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -4741,19 +4741,889 @@
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="26"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-row table:style-name="ro2" table:number-rows-repeated="2">
|
||||
<table:table-cell table:number-columns-repeated="8"/>
|
||||
<table:table-cell table:style-name="ce37"/>
|
||||
<table:table-cell table:number-columns-repeated="27"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-columns-repeated="8"/>
|
||||
<table:table-cell table:style-name="ce37"/>
|
||||
<table:table-cell/>
|
||||
<table:table-cell table:style-name="ce33"/>
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(1)" office:value-type="float" office:value="1" calcext:value-type="float">
|
||||
<text:p>2</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="1" calcext:value-type="float">
|
||||
<text:p>1</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A55]=[.E55])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A55])" office:value-type="string" office:string-value="=LET(1)" calcext:value-type="string">
|
||||
<text:p>=LET(1)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>No parameters, constant body</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="2"/>
|
||||
<table:table-cell office:value-type="float" office:value="10" calcext:value-type="float">
|
||||
<text:p>10</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="22"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;1; 2)" office:value-type="float" office:value="2" calcext:value-type="float">
|
||||
<text:p>2</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="2" calcext:value-type="float">
|
||||
<text:p>2</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A56]=[.E56])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A56])" office:value-type="string" office:string-value="=LET(a;1; 2)" calcext:value-type="string">
|
||||
<text:p>=LET(a;1; 2)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>One unused parameter, constant body</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="2"/>
|
||||
<table:table-cell office:value-type="float" office:value="20" calcext:value-type="float">
|
||||
<text:p>20</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="22"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;[.N55]; _xlpm.a)" office:value-type="float" office:value="10" calcext:value-type="float">
|
||||
<text:p>10</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="10" calcext:value-type="float">
|
||||
<text:p>10</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A57]=[.E57])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A57])" office:value-type="string" office:string-value="=LET(a;N55; a)" calcext:value-type="string">
|
||||
<text:p>=LET(a;N55; a)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Reference as input</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="2"/>
|
||||
<table:table-cell office:value-type="float" office:value="30" calcext:value-type="float">
|
||||
<text:p>30</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="22"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;3; _xlpm.a)" office:value-type="float" office:value="3" calcext:value-type="float">
|
||||
<text:p>3</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="3" calcext:value-type="float">
|
||||
<text:p>3</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A58]=[.E58])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A58])" office:value-type="string" office:string-value="=LET(a;3; a)" calcext:value-type="string">
|
||||
<text:p>=LET(a;3; a)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Value as input</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="2"/>
|
||||
<table:table-cell office:value-type="float" office:value="40" calcext:value-type="float">
|
||||
<text:p>40</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="22"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;2; _xlpm.a * 2)" office:value-type="float" office:value="4" calcext:value-type="float">
|
||||
<text:p>4</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="4" calcext:value-type="float">
|
||||
<text:p>4</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A59]=[.E59])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A59])" office:value-type="string" office:string-value="=LET(a;2; a * 2)" calcext:value-type="string">
|
||||
<text:p>=LET(a;2; a * 2)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>One parameter, simple expression on it</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2" table:number-rows-repeated="157">
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;3; _xlpm.y;4; _xlpm.x + _xlpm.y)" office:value-type="float" office:value="7" calcext:value-type="float">
|
||||
<text:p>7</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="7" calcext:value-type="float">
|
||||
<text:p>7</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A60]=[.E60])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A60])" office:value-type="string" office:string-value="=LET(x;3; y;4; x + y)" calcext:value-type="string">
|
||||
<text:p>=LET(x;3; y;4; x + y)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Two parameters, arithmetic</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;5; _xlpm.a + _xlpm.a)" office:value-type="float" office:value="10" calcext:value-type="float">
|
||||
<text:p>10</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="10" calcext:value-type="float">
|
||||
<text:p>10</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A61]=[.E61])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A61])" office:value-type="string" office:string-value="=LET(a;5; a + a)" calcext:value-type="string">
|
||||
<text:p>=LET(a;5; a + a)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Parameter used more than once</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;3; _xlpm.y;4; _xlpm.x + _xlpm.x * _xlpm.y)" office:value-type="float" office:value="15" calcext:value-type="float">
|
||||
<text:p>15</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="15" calcext:value-type="float">
|
||||
<text:p>15</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A62]=[.E62])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A62])" office:value-type="string" office:string-value="=LET(x;3; y;4; x + x * y)" calcext:value-type="string">
|
||||
<text:p>=LET(x;3; y;4; x + x * y)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Operator precedence inside the body</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;-5; IF(_xlpm.a > 0; _xlpm.a; -_xlpm.a))" office:value-type="float" office:value="5" calcext:value-type="float">
|
||||
<text:p>5</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="5" calcext:value-type="float">
|
||||
<text:p>5</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A63]=[.E63])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A63])" office:value-type="string" office:string-value="=LET(a;-5; IF(a > 0; a; -a))" calcext:value-type="string">
|
||||
<text:p>=LET(a;-5; IF(a > 0; a; -a))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Function inside the body</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;"hi"; _xlpm.a & "!")" office:value-type="string" office:string-value="hi!" calcext:value-type="string">
|
||||
<text:p>hi!</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="string" calcext:value-type="string">
|
||||
<text:p>hi!</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A64]=[.E64])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A64])" office:value-type="string" office:string-value="=LET(a;"hi"; a & "!")" calcext:value-type="string">
|
||||
<text:p>=LET(a;"hi"; a & "!")</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>String argument flowing through identity body</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.SQRT;4; SQRT(_xlpm.SQRT))" office:value-type="float" office:value="2" calcext:value-type="float">
|
||||
<text:p>2</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="2" calcext:value-type="float">
|
||||
<text:p>2</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A65]=[.E65])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A65])" office:value-type="string" office:string-value="=LET(SQRT;4; SQRT(SQRT))" calcext:value-type="string">
|
||||
<text:p>=LET(SQRT;4; SQRT(SQRT))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Name precedence matches MSO</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.r;[.N55:.N58]; SUM(_xlpm.r))" office:value-type="float" office:value="100" calcext:value-type="float">
|
||||
<text:p>100</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="100" calcext:value-type="float">
|
||||
<text:p>100</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A66]=[.E66])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A66])" office:value-type="string" office:string-value="=LET(r;N55:N58; SUM(r))" calcext:value-type="string">
|
||||
<text:p>=LET(r;N55:N58; SUM(r))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Range as input</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;1; _xlpm.b;2; _xlpm.c;3; _xlpm.a + _xlpm.b + _xlpm.c)" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A67]=[.E67])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A67])" office:value-type="string" office:string-value="=LET(a;1; b;2; c;3; a + b + c)" calcext:value-type="string">
|
||||
<text:p>=LET(a;1; b;2; c;3; a + b + c)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="26"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;; _xlpm.b;; _xlpm.c;; _xlpm.a + _xlpm.b + _xlpm.c)" office:value-type="float" office:value="0" calcext:value-type="float">
|
||||
<text:p>0</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="0" calcext:value-type="float">
|
||||
<text:p>0</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A68]=[.E68])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A68])" office:value-type="string" office:string-value="=LET(a;; b;; c;; a + b + c)" calcext:value-type="string">
|
||||
<text:p>=LET(a;; b;; c;; a + b + c)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Unspecified value is defaulting to 0</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;7; _xlpm.x > 5)" office:value-type="float" office:value="1" calcext:value-type="float">
|
||||
<text:p>1</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" table:formula="of:=TRUE()" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A69]=[.E69])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A69])" office:value-type="string" office:string-value="=LET(x;7; x > 5)" calcext:value-type="string">
|
||||
<text:p>=LET(x;7; x > 5)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="26"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=ERROR.TYPE(COM.MICROSOFT.LET(_xlpm.x;0; 1 / _xlpm.x))" office:value-type="float" office:value="2" calcext:value-type="float">
|
||||
<text:p>2</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="2" calcext:value-type="float">
|
||||
<text:p>2</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A70]=[.E70])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A70])" office:value-type="string" office:string-value="=ERROR.TYPE(LET(x;0; 1 / x))" calcext:value-type="string">
|
||||
<text:p>=ERROR.TYPE(LET(x;0; 1 / x))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Div by 0</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;1; _xlpm.y; _xlpm.x + _xlpm.y)" office:value-type="float" office:value="3" calcext:value-type="float">
|
||||
<text:p>3</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="7"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=ISERROR([.A71])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A71])" office:value-type="string" office:string-value="=LET(x;1; y; x + y)" calcext:value-type="string">
|
||||
<text:p>=LET(x;1; y; x + y)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Missing subexpression</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;3; COM.MICROSOFT.LET(_xlpm.y;4; _xlpm.x + _xlpm.y))" office:value-type="float" office:value="7" calcext:value-type="float">
|
||||
<text:p>7</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="7" calcext:value-type="float">
|
||||
<text:p>7</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A72]=[.E72])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A72])" office:value-type="string" office:string-value="=LET(x;3; LET(y;4; x + y))" calcext:value-type="string">
|
||||
<text:p>=LET(x;3; LET(y;4; x + y))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Nested LET</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.f; COM.MICROSOFT.LAMBDA(_xlpm.x; _xlpm.x * _xlpm.x); _xlpm.f(4))" office:value-type="float" office:value="16" calcext:value-type="float">
|
||||
<text:p>16</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="16" calcext:value-type="float">
|
||||
<text:p>16</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A73]=[.E73])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A73])" office:value-type="string" office:string-value="=LET(f; LAMBDA(x; x * x); f(4))" calcext:value-type="string">
|
||||
<text:p>=LET(f; LAMBDA(x; x * x); f(4))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>LAMBDA in a LET function</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;{1|2|3}; SUM(_xlpm.a))" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A74]=[.E74])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A74])" office:value-type="string" office:string-value="=LET(a;{1;2;3}; SUM(a))" calcext:value-type="string">
|
||||
<text:p>=LET(a;{1;2;3}; SUM(a))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Array as input</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=SUM(COM.MICROSOFT.LET(_xlpm.a;{10|11|20}; _xlpm.a * 2))" office:value-type="float" office:value="82" calcext:value-type="float">
|
||||
<text:p>82</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="82" calcext:value-type="float">
|
||||
<text:p>82</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A75]=[.E75])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A75])" office:value-type="string" office:string-value="=SUM(LET(a;{10;11;20}; a * 2))" calcext:value-type="string">
|
||||
<text:p>=SUM(LET(a;{10;11;20}; a * 2))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Jump matrix - array input</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=SUM(COM.MICROSOFT.LET(_xlpm.a;[.N55:.N58]; _xlpm.a * 2))" office:value-type="float" office:value="200" calcext:value-type="float">
|
||||
<text:p>200</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="200" calcext:value-type="float">
|
||||
<text:p>200</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A76]=[.E76])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A76])" office:value-type="string" office:string-value="=SUM(LET(a;N55:N58; a * 2))" calcext:value-type="string">
|
||||
<text:p>=SUM(LET(a;N55:N58; a * 2))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Jump matrix - range input</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=SUM(COM.MICROSOFT.LET(_xlpm.a;DATARANGE; _xlpm.a * 2))" office:value-type="float" office:value="200" calcext:value-type="float">
|
||||
<text:p>200</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="200" calcext:value-type="float">
|
||||
<text:p>200</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A77]=[.E77])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A77])" office:value-type="string" office:string-value="=SUM(LET(a;DATARANGE; a * 2))" calcext:value-type="string">
|
||||
<text:p>=SUM(LET(a;DATARANGE; a * 2))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Jump matrix - named range input</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.g; COM.MICROSOFT.LAMBDA(_xlpm.self;_xlpm.n; IF(_xlpm.n <= 1; 1; _xlpm.n * _xlpm.self(_xlpm.self; _xlpm.n - 1))); _xlpm.g(_xlpm.g; 5))" office:value-type="float" office:value="120" calcext:value-type="float">
|
||||
<text:p>120</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="120" calcext:value-type="float">
|
||||
<text:p>120</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A78]=[.E78])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A78])" office:value-type="string" office:string-value="=LET(g; LAMBDA(self;n; IF(n <= 1; 1; n * self(self; n - 1))); g(g; 5))" calcext:value-type="string">
|
||||
<text:p>=LET(g; LAMBDA(self;n; IF(n <= 1; 1; n * self(self; n - 1))); g(g; 5))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Recursive LAMBDA</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;100; SUM(_xlpm.x))" office:value-type="float" office:value="100" calcext:value-type="float">
|
||||
<text:p>100</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="100" calcext:value-type="float">
|
||||
<text:p>100</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A79]=[.E79])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A79])" office:value-type="string" office:string-value="=LET(x;100; SUM(x))" calcext:value-type="string">
|
||||
<text:p>=LET(x;100; SUM(x))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>If you use SUM in LET, it will use the built-in function not the named LAMBDA</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;100; _xlpm.f;SUM; _xlpm.f(_xlpm.x))" office:value-type="float" office:value="110" calcext:value-type="float">
|
||||
<text:p>110</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="110" calcext:value-type="float">
|
||||
<text:p>110</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A80]=[.E80])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A80])" office:value-type="string" office:string-value="=LET(x;100; f;SUM; f(x))" calcext:value-type="string">
|
||||
<text:p>=LET(x;100; f;SUM; f(x))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>If you use SUM as a subexpression in LET, the named LAMBDA will be used instead</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.f;PLUS2; _xlpm.n;1; _xlpm.f(_xlpm.n))" office:value-type="float" office:value="3" calcext:value-type="float">
|
||||
<text:p>3</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="3" calcext:value-type="float">
|
||||
<text:p>3</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A81]=[.E81])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A81])" office:value-type="string" office:string-value="=LET(f;PLUS2; n;1; f(n))" calcext:value-type="string">
|
||||
<text:p>=LET(f;PLUS2; n;1; f(n))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Named lambda as parameter</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.f;COUNT; _xlpm.n;{5;6;7;8}; _xlpm.f(_xlpm.n))" office:value-type="float" office:value="4" calcext:value-type="float">
|
||||
<text:p>4</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="4" calcext:value-type="float">
|
||||
<text:p>4</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A82]=[.E82])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A82])" office:value-type="string" office:string-value="=LET(f;COUNT; n;{5.6.7.8}; f(n))" calcext:value-type="string">
|
||||
<text:p>=LET(f;COUNT; n;{5.6.7.8}; f(n))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>ETA-LAMBDA use in LET as parameter</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.f;COM.MICROSOFT.LAMBDA(_xlpm.x; _xlpm.x * 2); _xlpm.f(5))" office:value-type="float" office:value="10" calcext:value-type="float">
|
||||
<text:p>10</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="10" calcext:value-type="float">
|
||||
<text:p>10</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A83]=[.E83])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A83])" office:value-type="string" office:string-value="=LET(f;LAMBDA(x; x * 2); f(5))" calcext:value-type="string">
|
||||
<text:p>=LET(f;LAMBDA(x; x * 2); f(5))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>LAMBDA as parameter to LET</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.f;COM.MICROSOFT.LAMBDA(_xlpm.n; _xlpm.n + 1); _xlpm.x;5; _xlpm.f(_xlpm.f(_xlpm.x)))" office:value-type="float" office:value="7" calcext:value-type="float">
|
||||
<text:p>7</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="7" calcext:value-type="float">
|
||||
<text:p>7</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A84]=[.E84])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A84])" office:value-type="string" office:string-value="=LET(f;LAMBDA(n; n + 1); x;5; f(f(x)))" calcext:value-type="string">
|
||||
<text:p>=LET(f;LAMBDA(n; n + 1); x;5; f(f(x)))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Call LAMBDA 2 times</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;5; _xlpm.x + [.$N$55])" office:value-type="float" office:value="15" calcext:value-type="float">
|
||||
<text:p>15</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="15" calcext:value-type="float">
|
||||
<text:p>15</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A85]=[.E85])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A85])" office:value-type="string" office:string-value="=LET(x;5; x + $N$55)" calcext:value-type="string">
|
||||
<text:p>=LET(x;5; x + $N$55)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>A LET body that closes over a sheet cell</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.a;3; COM.MICROSOFT.LET(_xlpm.b;30; COM.MICROSOFT.LET(_xlpm.c;300; _xlpm.a + _xlpm.b + _xlpm.c)))" office:value-type="float" office:value="333" calcext:value-type="float">
|
||||
<text:p>333</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="333" calcext:value-type="float">
|
||||
<text:p>333</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A86]=[.E86])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A86])" office:value-type="string" office:string-value="=LET(a;3; LET(b;30; LET(c;300; a + b + c)))" calcext:value-type="string">
|
||||
<text:p>=LET(a;3; LET(b;30; LET(c;300; a + b + c)))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Triple curry</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;20; _xlpm.y;; _xlpm.x + _xlpm.y)" office:value-type="float" office:value="20" calcext:value-type="float">
|
||||
<text:p>20</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="20" calcext:value-type="float">
|
||||
<text:p>20</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A87]=[.E87])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A87])" office:value-type="string" office:string-value="=LET(x;20; y;; x + y)" calcext:value-type="string">
|
||||
<text:p>=LET(x;20; y;; x + y)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Value not provided - second parameter</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;; _xlpm.y;2; _xlpm.x + _xlpm.y)" office:value-type="float" office:value="2" calcext:value-type="float">
|
||||
<text:p>2</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="2" calcext:value-type="float">
|
||||
<text:p>2</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A88]=[.E88])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A88])" office:value-type="string" office:string-value="=LET(x;; y;2; x + y)" calcext:value-type="string">
|
||||
<text:p>=LET(x;; y;2; x + y)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Value not provided - first parameter</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;10; COM.MICROSOFT.LAMBDA(_xlpm.x; x*2)(3))" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A89]=[.E89])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A89])" office:value-type="string" office:string-value="=LET(x;10; LAMBDA(x; x*2)(3))" calcext:value-type="string">
|
||||
<text:p>=LET(x;10; LAMBDA(x; x*2)(3))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Name shadowing - LAMBDA within LET</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;10; COM.MICROSOFT.LAMBDA(_xlpm.y;_xlpm.x; x*2)(5;3))" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A90]=[.E90])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A90])" office:value-type="string" office:string-value="=LET(x;10; LAMBDA(y;x; x*2)(5;3))" calcext:value-type="string">
|
||||
<text:p>=LET(x;10; LAMBDA(y;x; x*2)(5;3))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="26"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;10; COM.MICROSOFT.LET(_xlpm.x;3; x*2))" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A91]=[.E91])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A91])" office:value-type="string" office:string-value="=LET(x;10; LET(x;3; x*2))" calcext:value-type="string">
|
||||
<text:p>=LET(x;10; LET(x;3; x*2))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Name shadowing - LET within LET</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" loext:spill="true" table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;10; COM.MICROSOFT.LET(_xlpm.y;5; _xlpm.x;3; _xlpm.x*2))" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="6" calcext:value-type="float">
|
||||
<text:p>6</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A92]=[.E92])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A92])" office:value-type="string" office:string-value="=LET(x;10; LET(y;5; x;3; x*2))" calcext:value-type="string">
|
||||
<text:p>=LET(x;10; LET(y;5; x;3; x*2))</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="26"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:formula="of:=COM.MICROSOFT.LET(_xlpm.x$;42; _xlpm.x$)" office:value-type="float" office:string-value="42" calcext:value-type="float">
|
||||
<text:p>42</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce17" office:value-type="float" office:value="42" calcext:value-type="float">
|
||||
<text:p>42</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="3"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=([.A93]=[.E93])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A93])" office:value-type="string" office:string-value="=LET(x$;42; x$)" calcext:value-type="string">
|
||||
<text:p>=LET(x$;42; x$)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>TODO: x$ probably shouldn't be a valid name</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:formula="of:=COM.MICROSOFT.LET([.AX1];0; 0)" office:value-type="string" office:string-value="" calcext:value-type="error">
|
||||
<text:p>Err:508</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="7"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=ISERROR([.A94])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A94])" office:value-type="string" office:string-value="=LET(AX1;0; 0)" calcext:value-type="string">
|
||||
<text:p>=LET(AX1;0; 0)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>AX1 = cell reference name - invalid syntax</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:formula="of:=COM.MICROSOFT.LET(ab!;0; 0)" office:value-type="string" office:string-value="" calcext:value-type="error">
|
||||
<text:p>Err:509</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="7"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=ISERROR([.A95])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A95])" office:value-type="string" office:string-value="=LET(ab!;0; 0)" calcext:value-type="string">
|
||||
<text:p>=LET(ab!;0; 0)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="26"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:formula="of:=COM.MICROSOFT.LET(aa#a;0; 0)" office:value-type="string" office:string-value="" calcext:value-type="error">
|
||||
<text:p>Err:508</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="7"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=ISERROR([.A96])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A96])" office:value-type="string" office:string-value="=LET(aa#a;0; 0)" calcext:value-type="string">
|
||||
<text:p>=LET(aa#a;0; 0)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="26"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:formula="of:=COM.MICROSOFT.LET(a%;0; 0)" office:value-type="string" office:string-value="" calcext:value-type="error">
|
||||
<text:p>Err:508</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="7"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=ISERROR([.A97])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A97])" office:value-type="string" office:string-value="=LET(a%;0; 0)" calcext:value-type="string">
|
||||
<text:p>=LET(a%;0; 0)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="26"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:formula="of:=COM.MICROSOFT.LET(#REF!;0; 0)" office:value-type="string" office:string-value="" calcext:value-type="error">
|
||||
<text:p>Err:509</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="7"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=ISERROR([.A98])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A98])" office:value-type="string" office:string-value="=LET(#REF!;0; 0)" calcext:value-type="string">
|
||||
<text:p>=LET(#REF!;0; 0)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="26"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:formula="of:=COM.MICROSOFT.LET("x";1; 0)" office:value-type="string" office:string-value="" calcext:value-type="error">
|
||||
<text:p>Err:508</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="7"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=ISERROR([.A99])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A99])" office:value-type="string" office:string-value="=LET("x";1; 0)" calcext:value-type="string">
|
||||
<text:p>=LET("x";1; 0)</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="26"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2">
|
||||
<table:table-cell table:formula="of:=COM.MICROSOFT.LET(_xlpm.x;1; _xlpm.y;20; _xlpm.z;3; {_xlpm.x,_xlpm.y,_xlpm.z})" office:value-type="string" office:string-value="" calcext:value-type="error">
|
||||
<text:p>Err:539</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="7"/>
|
||||
<table:table-cell table:style-name="ce37" table:formula="of:=ISERROR([.A100])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
|
||||
<text:p>IGAZ</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:formula="of:=FORMULA([.A100])" office:value-type="string" office:string-value="=LET(x;1; y;20; z;3; {x,y,z})" calcext:value-type="string">
|
||||
<text:p>=LET(x;1; y;20; z;3; {x,y,z})</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell office:value-type="string" calcext:value-type="string">
|
||||
<text:p>Can't create a literal array from parameters</text:p>
|
||||
</table:table-cell>
|
||||
<table:table-cell table:number-columns-repeated="25"/>
|
||||
</table:table-row>
|
||||
<table:table-row table:style-name="ro2" table:number-rows-repeated="111">
|
||||
<table:table-cell table:number-columns-repeated="8"/>
|
||||
<table:table-cell table:style-name="ce37"/>
|
||||
<table:table-cell table:number-columns-repeated="27"/>
|
||||
@@ -4772,7 +5642,11 @@
|
||||
</calcext:conditional-format>
|
||||
</calcext:conditional-formats>
|
||||
</table:table>
|
||||
<table:named-expressions/>
|
||||
<table:named-expressions>
|
||||
<table:named-range table:name="DATARANGE" table:base-cell-address="$Sheet2.$N$55" table:cell-range-address="$Sheet2.$N$55:.$N$58"/>
|
||||
<table:named-expression table:name="PLUS2" table:base-cell-address="$Sheet1.$A$1" table:expression="COM.MICROSOFT.LAMBDA(_xlpm.x; _xlpm.x+2)"/>
|
||||
<table:named-expression table:name="SUM" table:base-cell-address="$Sheet1.$A$1" table:expression="COM.MICROSOFT.LAMBDA(_xlpm.x;_xlpm.x+10)"/>
|
||||
</table:named-expressions>
|
||||
</office:spreadsheet>
|
||||
</office:body>
|
||||
</office:document>
|
||||
Binary file not shown.
@@ -0,0 +1,43 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include "functions_test.hxx"
|
||||
|
||||
class LambdaFunctionsTest : public FunctionsTest
|
||||
{
|
||||
public:
|
||||
LambdaFunctionsTest();
|
||||
|
||||
void testLambdaFormulasFODS();
|
||||
|
||||
CPPUNIT_TEST_SUITE(LambdaFunctionsTest);
|
||||
CPPUNIT_TEST(testLambdaFormulasFODS);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
};
|
||||
|
||||
void LambdaFunctionsTest::testLambdaFormulasFODS()
|
||||
{
|
||||
OUString aDirectoryURL
|
||||
= m_directories.getURLFromSrc(u"/sc/qa/unit/data/functions/lambda/fods/");
|
||||
recursiveScan(
|
||||
test::pass, u"OpenDocument Spreadsheet Flat XML"_ustr, aDirectoryURL,
|
||||
u"com.sun.star.comp.filter.OdfFlatXml,,com.sun.star.comp.Calc.XMLOasisImporter,com.sun.star.comp.Calc.XMLOasisExporter,,,true"_ustr,
|
||||
FODS_FORMAT_TYPE, SotClipboardFormatId::NONE, 0, false);
|
||||
}
|
||||
|
||||
LambdaFunctionsTest::LambdaFunctionsTest()
|
||||
: FunctionsTest()
|
||||
{
|
||||
}
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(LambdaFunctionsTest);
|
||||
|
||||
CPPUNIT_PLUGIN_IMPLEMENT();
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
@@ -1811,39 +1811,6 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest, testExpandedArrayCollapsesOnNewBlockerXLSX)
|
||||
CPPUNIT_ASSERT_EQUAL(SCROW(1), nRows);
|
||||
}
|
||||
|
||||
CPPUNIT_TEST_FIXTURE(ScFiltersTest, testLambdaAndRelatedFunctions)
|
||||
{
|
||||
// The document combines a per-formula check of every LAMBDA and
|
||||
// callable-function result into cell B3 of the first sheet, true only when
|
||||
// every check passed. Confirm B3 holds as loaded and after a
|
||||
// recalculation, both before and after a round-trip through the XLSX export.
|
||||
createScDoc("xlsx/LambdaAndRelatedFunctions.xlsx");
|
||||
|
||||
ScDocument* pDoc = getScDoc();
|
||||
// The result as stored in the file, before the engine recomputes anything.
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE("as loaded, a formula did not match its expected result",
|
||||
1.0, pDoc->GetValue(ScAddress(1, 2, 0)), 0.0);
|
||||
|
||||
pDoc->CalcAll();
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
|
||||
"after recalculation, a formula did not match its expected result", 1.0,
|
||||
pDoc->GetValue(ScAddress(1, 2, 0)), 0.0);
|
||||
|
||||
// Write the document back out as XLSX and read it in again.
|
||||
saveAndReload(TestFilter::XLSX);
|
||||
|
||||
pDoc = getScDoc();
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
|
||||
"after save and reload, a formula did not match its expected result", 1.0,
|
||||
pDoc->GetValue(ScAddress(1, 2, 0)), 0.0);
|
||||
|
||||
pDoc->CalcAll();
|
||||
CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
|
||||
"after save, reload and recalculation, a formula did not match its "
|
||||
"expected result",
|
||||
1.0, pDoc->GetValue(ScAddress(1, 2, 0)), 0.0);
|
||||
}
|
||||
|
||||
ScFiltersTest::ScFiltersTest()
|
||||
: ScModelTestBase(u"sc/qa/unit/data"_ustr)
|
||||
{
|
||||
|
||||
@@ -203,77 +203,6 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testFuncIF)
|
||||
m_pDoc->DeleteTab(0);
|
||||
}
|
||||
|
||||
CPPUNIT_TEST_FIXTURE(TestFormula2, testFuncLAMBDA)
|
||||
{
|
||||
sc::AutoCalcSwitch aACSwitch(*m_pDoc, true);
|
||||
|
||||
m_pDoc->InsertTab(0, u"Formula"_ustr);
|
||||
|
||||
// No parameters, constant body.
|
||||
m_pDoc->SetString(ScAddress(0, 0, 0), u"=LAMBDA(1)()"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(1.0, m_pDoc->GetValue(ScAddress(0, 0, 0)));
|
||||
|
||||
// One unused parameter, constant body.
|
||||
m_pDoc->SetString(ScAddress(0, 1, 0), u"=LAMBDA(a; 2)(1)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(2.0, m_pDoc->GetValue(ScAddress(0, 1, 0)));
|
||||
|
||||
// Identity.
|
||||
m_pDoc->SetString(ScAddress(0, 2, 0), u"=LAMBDA(a; a)(3)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(3.0, m_pDoc->GetValue(ScAddress(0, 2, 0)));
|
||||
|
||||
// One parameter, simple expression on it.
|
||||
m_pDoc->SetString(ScAddress(0, 3, 0), u"=LAMBDA(a; a * 2)(2)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(4.0, m_pDoc->GetValue(ScAddress(0, 3, 0)));
|
||||
|
||||
// Two parameters, arithmetic.
|
||||
m_pDoc->SetString(ScAddress(0, 4, 0), u"=LAMBDA(x; y; x + y)(3; 4)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(7.0, m_pDoc->GetValue(ScAddress(0, 4, 0)));
|
||||
|
||||
// Parameter used more than once.
|
||||
m_pDoc->SetString(ScAddress(0, 5, 0), u"=LAMBDA(a; a + a)(5)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(10.0, m_pDoc->GetValue(ScAddress(0, 5, 0)));
|
||||
|
||||
// Operator precedence inside the body.
|
||||
m_pDoc->SetString(ScAddress(0, 6, 0), u"=LAMBDA(x; y; x * y + x)(3; 4)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(15.0, m_pDoc->GetValue(ScAddress(0, 6, 0)));
|
||||
|
||||
// Identifiers are case insensitive.
|
||||
// TODO : should be automatically changed from a to A in
|
||||
// LAMBDA expression when submitting.
|
||||
m_pDoc->SetString(ScAddress(0, 7, 0), u"=LAMBDA(A; a * 2)(3)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0, 7, 0)));
|
||||
|
||||
// Function inside the body.
|
||||
m_pDoc->SetString(ScAddress(0, 8, 0), u"=LAMBDA(a; IF(a > 0; a; -a))(-5)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(5.0, m_pDoc->GetValue(ScAddress(0, 8, 0)));
|
||||
|
||||
// Nested LAMBDA
|
||||
m_pDoc->SetString(ScAddress(0, 9, 0), u"=LAMBDA(x;LAMBDA(y; x + y)(10))(5)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(15.0, m_pDoc->GetValue(ScAddress(0, 9, 0)));
|
||||
|
||||
// String argument flowing through identity body.
|
||||
m_pDoc->SetString(ScAddress(0, 10, 0), u"=LAMBDA(a; a & \"!\")(\"hi\")"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(u"hi!"_ustr, m_pDoc->GetString(ScAddress(0, 10, 0)));
|
||||
|
||||
// Name precedence matches MSO.
|
||||
m_pDoc->SetString(ScAddress(0, 11, 0), u"=LAMBDA(SQRT; SQRT(SQRT))(4)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(2.0, m_pDoc->GetValue(ScAddress(0, 11, 0)));
|
||||
|
||||
// Parameter shadowing: LAMBDA within LAMBDA.
|
||||
m_pDoc->SetString(ScAddress(0, 12, 0), u"=LAMBDA(x; LAMBDA(x; x * 2)(3))(10)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0, 12, 0)));
|
||||
m_pDoc->SetString(ScAddress(0, 13, 0), u"=LAMBDA(x; LAMBDA(y; x; x * 2)(5; 3))(10)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0, 13, 0)));
|
||||
|
||||
// Parameter shadowing: LET within LAMBDA.
|
||||
m_pDoc->SetString(ScAddress(0, 14, 0), u"=LAMBDA(x; LET(x; 3; x * 2))(10)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0, 14, 0)));
|
||||
m_pDoc->SetString(ScAddress(0, 15, 0), u"=LAMBDA(x; LET(y; 5; x; 3; x * 2))(10)"_ustr);
|
||||
CPPUNIT_ASSERT_EQUAL(6.0, m_pDoc->GetValue(ScAddress(0, 15, 0)));
|
||||
|
||||
m_pDoc->DeleteTab(0);
|
||||
}
|
||||
|
||||
CPPUNIT_TEST_FIXTURE(TestFormula2, testLambdaBoundedRecursion)
|
||||
{
|
||||
// A lambda stored in a cell can call itself through a reference to that
|
||||
|
||||
@@ -10531,10 +10531,14 @@ void ScInterpreter::ScCall( FormulaCallableRef rCallable, sal_uInt8 nArgCount )
|
||||
// at this point we're dealing with a built-in function
|
||||
// and the stack is set up with the relevant args
|
||||
// we just need to dispatch the OpCode
|
||||
auto pOldCur = pCur;
|
||||
auto cOldPar = cPar;
|
||||
FormulaTokenRef pTempToken = new FormulaByteToken(eOpCode, nArgCount);
|
||||
pCur = pTempToken.get();
|
||||
cPar = nArgCount;
|
||||
DispatchOpCode( eOpCode );
|
||||
pCur = pOldCur;
|
||||
cPar = cOldPar;
|
||||
}
|
||||
|
||||
/// If pToken contains one or more relative references, they are converted to absolute references
|
||||
@@ -11303,6 +11307,12 @@ void ScInterpreter::ScLet()
|
||||
aCode.Jump(pJump[nJumpCount], pJump[nJumpCount]);
|
||||
return;
|
||||
}
|
||||
else if (GetRawStackType() != svStringName)
|
||||
{
|
||||
PushError(FormulaError::ParameterExpected);
|
||||
aCode.Jump(pJump[nJumpCount], pJump[nJumpCount]);
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<OUString> aParams;
|
||||
std::vector<FormulaConstTokenRef> aArgs;
|
||||
@@ -11329,7 +11339,14 @@ void ScInterpreter::ScLet()
|
||||
aArgs.push_back(PopToken());
|
||||
// the param name is one jump before the current one
|
||||
const FormulaStringNameToken* pToken = GetStringNameToken(pCode[pJump[nJump - 1] + 1]);
|
||||
aParams.push_back(pToken ? pToken->GetString().getString() : OUString());
|
||||
if (pToken)
|
||||
aParams.push_back(pToken->GetString().getString());
|
||||
else
|
||||
{
|
||||
PushError(FormulaError::ParameterExpected);
|
||||
aCode.Jump(pJump[nJumpCount], pJump[nJumpCount]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// the last subformula isn't named
|
||||
|
||||
Reference in New Issue
Block a user