diff options
author | Balazs Varga <balazs.varga.extern@allotropia.de> | 2024-02-27 14:33:53 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2024-04-15 11:23:18 +0200 |
commit | 576634db31b51b8e5f5172660b6b7a0cfbd2a2ca (patch) | |
tree | 9ad9ff8b7f77df28a6527ac1da4835017f19b6e4 /sc | |
parent | af9f37828a95e1509aa04046b85be7b3b7985e77 (diff) |
tdf#159467 XLOOKUP propagate error only for active paths
because XLOOKUP have [if_not_found] optional attribute where
a valid match is not found, return the [if_not_found] value
you supply. Which can also return an error as a result from
another function.
If a valid match is not found, and [if_not_found] is missing, #N/A is returned.
follow-up for tdf#127293: d9635e9bb42cf2b744b8d2f74633e2a209a8e3fd
Change-Id: Ic8727c6b51e947ef767397c29095b93286bc7bd2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164042
Tested-by: Jenkins
Tested-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods | 380 | ||||
-rw-r--r-- | sc/source/core/tool/interpr1.cxx | 10 | ||||
-rw-r--r-- | sc/source/core/tool/interpr4.cxx | 1 |
3 files changed, 375 insertions, 16 deletions
diff --git a/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods b/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods index fb464e08d008..f6cfb74b24c5 100644 --- a/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods +++ b/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" office:version="1.3" office:mimetype="application/vnd.oasis.opendocument.spreadsheet"> - <office:meta><meta:creation-date>2024-01-16T18:30:06.278000000</meta:creation-date><meta:editing-duration>PT1H14M20S</meta:editing-duration><meta:editing-cycles>23</meta:editing-cycles><meta:generator>LibreOfficeDev/24.8.0.0.alpha0$Windows_X86_64 LibreOffice_project/578d9be50413a4bdc809f8b5f58cc177458f8325</meta:generator><dc:date>2024-02-08T21:37:48.969000000</dc:date><meta:document-statistic meta:table-count="2" meta:cell-count="858" meta:object-count="0"/></office:meta> + <office:meta><meta:creation-date>2024-01-16T18:30:06.278000000</meta:creation-date><meta:editing-duration>PT1H22M11S</meta:editing-duration><meta:editing-cycles>26</meta:editing-cycles><meta:generator>LibreOfficeDev/24.8.0.0.alpha0$Windows_X86_64 LibreOffice_project/3f63df475b9c7039d93d0d66c74c4d0ad7989486</meta:generator><dc:date>2024-02-27T14:15:45.125000000</dc:date><meta:document-statistic meta:table-count="2" meta:cell-count="888" meta:object-count="0"/></office:meta> <office:settings> <config:config-item-set config:name="ooo:view-settings"> <config:config-item config:name="VisibleAreaTop" config:type="int">0</config:config-item> @@ -13,8 +13,8 @@ <config:config-item config:name="ViewId" config:type="string">view1</config:config-item> <config:config-item-map-named config:name="Tables"> <config:config-item-map-entry config:name="Sheet1"> - <config:config-item config:name="CursorPositionX" config:type="int">4</config:config-item> - <config:config-item config:name="CursorPositionY" config:type="int">17</config:config-item> + <config:config-item config:name="CursorPositionX" config:type="int">2</config:config-item> + <config:config-item config:name="CursorPositionY" config:type="int">4</config:config-item> <config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item> <config:config-item config:name="PositionLeft" config:type="int">0</config:config-item> <config:config-item config:name="PositionRight" config:type="int">0</config:config-item> @@ -30,13 +30,13 @@ <config:config-item config:name="IgnoreBreakAfterMultilineField" config:type="boolean">false</config:config-item> </config:config-item-map-entry> <config:config-item-map-entry config:name="Sheet2"> - <config:config-item config:name="CursorPositionX" config:type="int">4</config:config-item> - <config:config-item config:name="CursorPositionY" config:type="int">43</config:config-item> + <config:config-item config:name="CursorPositionX" config:type="int">0</config:config-item> + <config:config-item config:name="CursorPositionY" config:type="int">128</config:config-item> <config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item> <config:config-item config:name="PositionLeft" config:type="int">0</config:config-item> <config:config-item config:name="PositionRight" config:type="int">0</config:config-item> <config:config-item config:name="PositionTop" config:type="int">0</config:config-item> - <config:config-item config:name="PositionBottom" config:type="int">24</config:config-item> + <config:config-item config:name="PositionBottom" config:type="int">46</config:config-item> <config:config-item config:name="ZoomType" config:type="short">0</config:config-item> <config:config-item config:name="ZoomValue" config:type="int">65</config:config-item> <config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item> @@ -48,7 +48,7 @@ </config:config-item-map-entry> </config:config-item-map-named> <config:config-item config:name="ActiveTable" config:type="string">Sheet1</config:config-item> - <config:config-item config:name="HorizontalScrollbarWidth" config:type="int">1851</config:config-item> + <config:config-item config:name="HorizontalScrollbarWidth" config:type="int">2479</config:config-item> <config:config-item config:name="ZoomType" config:type="short">0</config:config-item> <config:config-item config:name="ZoomValue" config:type="int">65</config:config-item> <config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item> @@ -1114,6 +1114,245 @@ <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> <style:map style:condition="value()>=0" style:apply-style-name="N309P0"/> </number:number-style> + <number:number-style style:name="N311P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + </number:number-style> + <number:number-style style:name="N311"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N311P0"/> + </number:number-style> + <number:number-style style:name="N312P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + </number:number-style> + <number:number-style style:name="N312"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N312P0"/> + </number:number-style> + <number:number-style style:name="N314P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + </number:number-style> + <number:number-style style:name="N314"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N314P0"/> + </number:number-style> + <number:number-style style:name="N315P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + </number:number-style> + <number:number-style style:name="N315"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N315P0"/> + </number:number-style> + <number:date-style style:name="N316"> + <number:year number:style="long"/> + <number:text>.</number:text> + <number:month number:style="long"/> + <number:text>.</number:text> + <number:day number:style="long"/> + </number:date-style> + <number:date-style style:name="N317"> + <number:day number:style="long"/> + <number:text>.</number:text> + <number:month number:textual="true"/> + <number:text>.</number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N318"> + <number:day number:style="long"/> + <number:text>.</number:text> + <number:month number:textual="true"/> + </number:date-style> + <number:date-style style:name="N319"> + <number:month number:textual="true"/> + <number:text>.</number:text> + <number:year/> + </number:date-style> + <number:time-style style:name="N320"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text> </number:text> + <number:am-pm/> + </number:time-style> + <number:time-style style:name="N321"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + <number:text> </number:text> + <number:am-pm/> + </number:time-style> + <number:date-style style:name="N322"> + <number:year number:style="long"/> + <number:text>.</number:text> + <number:month number:style="long"/> + <number:text>.</number:text> + <number:day number:style="long"/> + <number:text> </number:text> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + </number:date-style> + <number:number-style style:name="N324P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + </number:number-style> + <number:number-style style:name="N324"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N324P0"/> + </number:number-style> + <number:number-style style:name="N325P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + </number:number-style> + <number:number-style style:name="N325"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N325P0"/> + </number:number-style> + <number:number-style style:name="N327P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + </number:number-style> + <number:number-style style:name="N327"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N327P0"/> + </number:number-style> + <number:number-style style:name="N328P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + </number:number-style> + <number:number-style style:name="N328"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N328P0"/> + </number:number-style> + <number:number-style style:name="N332P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3_-4"> </number:text> + </number:number-style> + <number:number-style style:name="N332P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3_-4"> </number:text> + </number:number-style> + <number:number-style style:name="N332P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text loext:blank-width-char="F2_t4_-5">- </number:text> + </number:number-style> + <number:text-style style:name="N332"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N332P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N332P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N332P2"/> + </number:text-style> + <number:number-style style:name="N336P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-3"> Ft </number:text> + </number:number-style> + <number:number-style style:name="N336P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-3"> Ft </number:text> + </number:number-style> + <number:number-style style:name="N336P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text loext:blank-width-char="-4">- Ft </number:text> + </number:number-style> + <number:text-style style:name="N336"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N336P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N336P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N336P2"/> + </number:text-style> + <number:number-style style:name="N340P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3_-4"> </number:text> + </number:number-style> + <number:number-style style:name="N340P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3_-4"> </number:text> + </number:number-style> + <number:number-style style:name="N340P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="2" loext:max-blank-integer-digits="2"/> + <number:text loext:blank-width-char="F1_t3_-4"> </number:text> + </number:number-style> + <number:text-style style:name="N340"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N340P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N340P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N340P2"/> + </number:text-style> + <number:number-style style:name="N344P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-3"> Ft </number:text> + </number:number-style> + <number:number-style style:name="N344P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-3"> Ft </number:text> + </number:number-style> + <number:number-style style:name="N344P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="2" loext:max-blank-integer-digits="2"/> + <number:text loext:blank-width-char="-3"> Ft </number:text> + </number:number-style> + <number:text-style style:name="N344"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N344P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N344P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N344P2"/> + </number:text-style> <number:date-style style:name="N10129" number:language="en" number:country="US"> <number:month/> <number:text>/</number:text> @@ -1716,7 +1955,7 @@ <text:p><text:sheet-name>???</text:sheet-name><text:s/>(<text:title>???</text:title>)</text:p> </style:region-left> <style:region-right> - <text:p><text:date style:data-style-name="N2" text:date-value="2024-02-08">0000.00.00</text:date>, <text:time style:data-style-name="N2" text:time-value="21:35:29.191000000">00:00:00</text:time></text:p> + <text:p><text:date style:data-style-name="N2" text:date-value="2024-02-27">0000.00.00</text:date>, <text:time style:data-style-name="N2" text:time-value="14:14:04.231000000">00:00:00</text:time></text:p> </style:region-right> </style:header> <style:header-left style:display="false"/> @@ -2550,7 +2789,21 @@ <table:table-cell office:value-type="string" calcext:value-type="string"> <text:p/> </table:table-cell> - <table:table-cell table:number-columns-repeated="15"/> + <table:table-cell table:number-columns-repeated="5"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Mark</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="87" calcext:value-type="float"> + <text:p>87</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Jenny</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="19" calcext:value-type="float"> + <text:p>19</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> </table:table-row> <table:table-row table:style-name="ro2"> <table:table-cell office:value-type="string" office:string-value="Accounting" calcext:value-type="string"> @@ -2568,7 +2821,21 @@ <table:table-cell office:value-type="string" calcext:value-type="string"> <text:p/> </table:table-cell> - <table:table-cell table:number-columns-repeated="15"/> + <table:table-cell table:number-columns-repeated="5"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Ned</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="67" calcext:value-type="float"> + <text:p>67</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Donna</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="14" calcext:value-type="float"> + <text:p>14</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> </table:table-row> <table:table-row table:style-name="ro2"> <table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="2" table:formula="of:=COM.MICROSOFT.XLOOKUP(4937;[.I14:.R14];[.I15:.R16];;-1)" office:value-type="string" office:string-value="Earlene McCartney" calcext:value-type="string"> @@ -2583,7 +2850,21 @@ <table:table-cell table:formula="of:=FORMULA([.A24])" office:value-type="string" office:string-value="{=XLOOKUP(4937;I14:R14;I15:R16;;-1)}" calcext:value-type="string"> <text:p>{=XLOOKUP(4937;I14:R14;I15:R16;;-1)}</text:p> </table:table-cell> - <table:table-cell table:number-columns-repeated="16"/> + <table:table-cell table:number-columns-repeated="6"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Hans</text:p> + </table:table-cell> + <table:table-cell 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 office:value-type="string" calcext:value-type="string"> + <text:p>Stan</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="76" calcext:value-type="float"> + <text:p>76</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> </table:table-row> <table:table-row table:style-name="ro2"> <table:table-cell office:value-type="string" office:string-value="Accounting" calcext:value-type="string"> @@ -2598,7 +2879,25 @@ <table:table-cell table:formula="of:=FORMULA([.A25])" office:value-type="string" office:string-value="{=XLOOKUP(4937;I14:R14;I15:R16;;-1)}" calcext:value-type="string"> <text:p>{=XLOOKUP(4937;I14:R14;I15:R16;;-1)}</text:p> </table:table-cell> - <table:table-cell table:number-columns-repeated="16"/> + <table:table-cell table:number-columns-repeated="6"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Martha</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="68" calcext:value-type="float"> + <text:p>68</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Hans</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Amy</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="86" calcext:value-type="float"> + <text:p>86</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> </table:table-row> <table:table-row table:style-name="ro2"> <table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="2" table:formula="of:=COM.MICROSOFT.XLOOKUP(4937;[.I14:.R14];[.I15:.R16])" office:value-type="string" office:string-value="Earlene McCartney" calcext:value-type="string"> @@ -2613,7 +2912,25 @@ <table:table-cell table:formula="of:=FORMULA([.A26])" office:value-type="string" office:string-value="{=XLOOKUP(4937;I14:R14;I15:R16)}" calcext:value-type="string"> <text:p>{=XLOOKUP(4937;I14:R14;I15:R16)}</text:p> </table:table-cell> - <table:table-cell table:number-columns-repeated="16"/> + <table:table-cell table:number-columns-repeated="6"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Greg</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="21" calcext:value-type="float"> + <text:p>21</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Amy</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Pam</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="99" calcext:value-type="float"> + <text:p>99</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> </table:table-row> <table:table-row table:style-name="ro2"> <table:table-cell office:value-type="string" office:string-value="Accounting" calcext:value-type="string"> @@ -4839,7 +5156,42 @@ </table:table-cell> <table:table-cell table:number-columns-repeated="16"/> </table:table-row> - <table:table-row table:style-name="ro2" table:number-rows-repeated="77"> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce18"/> + <table:table-cell table:number-columns-repeated="17"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:formula="of:=COM.MICROSOFT.XLOOKUP([.N25];[.K22:.K26];[.L22:.L26];COM.MICROSOFT.XLOOKUP([.N25];[.P22:.P26];[.Q22:.Q26]))" office:value-type="float" office:value="16" calcext:value-type="float"> + <text:p>16</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="16" calcext:value-type="float"> + <text:p>16</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce18" table:formula="of:=[.A127]=[.B127]" 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([.A127])" office:value-type="string" office:string-value="=XLOOKUP(N25;K22:K26;L22:L26;XLOOKUP(N25;P22:P26;Q22:Q26))" calcext:value-type="string"> + <text:p>=XLOOKUP(N25;K22:K26;L22:L26;XLOOKUP(N25;P22:P26;Q22:Q26))</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:formula="of:=COM.MICROSOFT.XLOOKUP([.N26];[.K22:.K26];[.L22:.L26];COM.MICROSOFT.XLOOKUP([.N26];[.P22:.P26];[.Q22:.Q26]))" office:value-type="float" office:value="86" calcext:value-type="float"> + <text:p>86</text:p> + </table:table-cell> + <table:table-cell office:value-type="float" office:value="86" calcext:value-type="float"> + <text:p>86</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce18" table:formula="of:=[.A128]=[.B128]" 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([.A128])" office:value-type="string" office:string-value="=XLOOKUP(N26;K22:K26;L22:L26;XLOOKUP(N26;P22:P26;Q22:Q26))" calcext:value-type="string"> + <text:p>=XLOOKUP(N26;K22:K26;L22:L26;XLOOKUP(N26;P22:P26;Q22:Q26))</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="16"/> + </table:table-row> + <table:table-row table:style-name="ro2" table:number-rows-repeated="74"> <table:table-cell table:number-columns-repeated="2"/> <table:table-cell table:style-name="ce18"/> <table:table-cell table:number-columns-repeated="17"/> diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index fbd67e46d00b..699d25870e70 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -7843,8 +7843,13 @@ void ScInterpreter::ScXLookup() // Optional 4th argument to set return values if not found (default is #N/A) formula::FormulaConstTokenRef xNotFound; + FormulaError nFirstMatchError = FormulaError::NONE; if ( nParamCount >= 4 && GetStackType() != svEmptyCell ) + { xNotFound = PopToken(); + nFirstMatchError = xNotFound->GetError(); + nGlobalError = FormulaError::NONE; // propagate only for match or active result path + } // 3rd argument is return value array ScMatrixRef prMat = nullptr; @@ -8115,13 +8120,14 @@ void ScInterpreter::ScXLookup() if ( vsa.isResultNA ) { if ( xNotFound && ( xNotFound->GetType() != svMissing ) ) + { + nGlobalError = nFirstMatchError; PushTokenRef(xNotFound); + } else PushNA(); } } - - return; } void ScInterpreter::ScSubTotal() diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index 2069bedbb763..d85ba1c144fe 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -3981,6 +3981,7 @@ bool IsErrFunc(OpCode oc) case ocAggregate: // may ignore errors depending on option case ocIfs_MS: case ocSwitch_MS: + case ocXLookup: return true; default: return false; |