summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/queryiter.hxx32
-rw-r--r--sc/inc/rangecache.hxx19
-rw-r--r--sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods607
-rw-r--r--sc/source/core/data/queryiter.cxx428
-rw-r--r--sc/source/core/tool/interpr1.cxx41
-rw-r--r--sc/source/core/tool/rangecache.cxx171
6 files changed, 913 insertions, 385 deletions
diff --git a/sc/inc/queryiter.hxx b/sc/inc/queryiter.hxx
index c6cd1906a4fb..9d0ab1cc6aea 100644
--- a/sc/inc/queryiter.hxx
+++ b/sc/inc/queryiter.hxx
@@ -86,9 +86,9 @@ protected:
SCROW nRow;
class NonEmptyCellIndexer;
- typedef std::pair<ScRefCellValue, SCROW> BinarySearchCellType;
- static NonEmptyCellIndexer MakeBinarySearchIndexer(const sc::CellStoreType& rCells,
- SCROW nStartRow, SCROW nEndRow);
+ typedef std::pair<ScRefCellValue, SCCOLROW> BinarySearchCellType;
+ static NonEmptyCellIndexer MakeBinarySearchIndexer(const sc::CellStoreType* pCells,
+ SCCOLROW nStartRow, SCCOLROW nEndRow);
};
// The implementation using ScSortedRangeCache, which allows sorted iteration
@@ -105,6 +105,7 @@ protected:
const ScQueryParam& rParam, bool bReverseSearch );
void InitPosStart(sal_uInt8 nSortedBinarySearch = 0x00);
void InitPosFinish( SCROW beforeRow, SCROW lastRow, bool bFirstMatch );
+ void InitPosColFinish( SCCOL beforeCol, SCCOL lastCol, bool bFirstMatch );
void IncPos() { IncPosImpl<false>(); }
bool IncPosFast() { return IncPosImpl<true>(); }
void IncBlock() { IncPos(); } // Cannot skip entire block, not linear.
@@ -130,9 +131,9 @@ protected:
size_t sortedCachePosLast;
class SortedCacheIndexer;
- typedef std::pair<ScRefCellValue, SCROW> BinarySearchCellType;
- SortedCacheIndexer MakeBinarySearchIndexer(const sc::CellStoreType& rCells,
- SCROW nStartRow, SCROW nEndRow);
+ typedef std::pair<ScRefCellValue, SCCOLROW> BinarySearchCellType;
+ SortedCacheIndexer MakeBinarySearchIndexer(const sc::CellStoreType* pCells,
+ SCCOLROW nStartRow, SCCOLROW nEndRow);
};
// Data and functionality for specific types of query.
@@ -207,16 +208,16 @@ protected:
// and return if HandleItemFound() returns true.
void PerformQuery();
- /* Only works if no regular expression is involved, only searches for rows in one column,
- and only the first query entry is considered with simple conditions SC_LESS,SC_LESS_EQUAL,
- SC_EQUAL (sorted ascending) or SC_GREATER,SC_GREATER_EQUAL (sorted descending). It
- delivers a starting point set to nRow, i.e. the last row that either matches the searched
- for value, or the last row that matches the condition. Continue with e.g. GetThis() and
- GetNext() afterwards. Returns false if the searched for value is not in the search range
- or if the range is not properly sorted, with nRow in that case set to the first row or after
- the last row. In that case use GetFirst().
+ /* Only works if no regular expression is involved, only searches for rows in one column or
+ only searches for cols in one row, and only the first query entry is considered with simple
+ conditions SC_LESS,SC_LESS_EQUAL, SC_EQUAL (sorted ascending) or SC_GREATER,SC_GREATER_EQUAL
+ (sorted descending). It delivers a starting point set to nRow/nCol, i.e. the last row/col that
+ either matches the searched for value, or the last row/col that matches the condition.
+ Continue with e.g. GetThis() and GetNext() afterwards. Returns false if the searched for value
+ is not in the search range or if the range is not properly sorted, with nRow/nCol in that case
+ set to the first row or after the last row. In that case use GetFirst().
*/
- bool BinarySearch( SCCOL col, bool forEqual = false );
+ bool BinarySearch( SCCOLROW col_row, bool forEqual = false );
/** If set, iterator stops on first non-matching cell
content. May be used in SC_LESS_EQUAL queries where a
@@ -266,6 +267,7 @@ public:
void SetAdvanceQueryParamEntryField( bool bVal )
{ bAdvanceQuery = bVal; }
void AdvanceQueryParamEntryField();
+ void AdvanceQueryParamEntryFieldForBinarySearch();
void SetSortedBinarySearchMode( sal_Int8 nSearchMode )
{
diff --git a/sc/inc/rangecache.hxx b/sc/inc/rangecache.hxx
index bca9554a5e6a..5a9553e764ff 100644
--- a/sc/inc/rangecache.hxx
+++ b/sc/inc/rangecache.hxx
@@ -91,8 +91,10 @@ public:
}
};
+ /// Returns if the cache values in rows.
+ bool isRowSearch() const { return mRowSearch; }
+
const std::vector<SCROW>& sortedRows() const { return mSortedRows; }
- size_t size() const { return mSortedRows.size(); }
size_t indexForRow(SCROW row) const
{
assert(row >= maRange.aStart.Row() && row <= maRange.aEnd.Row());
@@ -101,13 +103,24 @@ public:
}
SCROW rowForIndex(size_t index) const { return mSortedRows[index]; }
+ const std::vector<SCCOLROW>& sortedCols() const { return mSortedCols; }
+ size_t indexForCol(SCCOL col) const
+ {
+ assert(col >= maRange.aStart.Col() && col <= maRange.aEnd.Col());
+ assert(mColToIndex[col - maRange.aStart.Col()] != mSortedCols.max_size());
+ return mColToIndex[col - maRange.aStart.Col()];
+ }
+ SCCOL colForIndex(size_t index) const { return mSortedCols[index]; }
+
private:
- // Rows sorted by their value.
- std::vector<SCROW> mSortedRows;
+ std::vector<SCROW> mSortedRows; // Rows sorted by their value.
+ std::vector<SCCOLROW> mSortedCols; // Cols sorted by their value.
std::vector<size_t> mRowToIndex; // indexed by 'SCROW - maRange.aStart.Row()'
+ std::vector<size_t> mColToIndex; // indexed by 'SCCOL - maRange.aStart.Col()'
ScRange maRange;
ScDocument* mpDoc;
bool mValid;
+ bool mRowSearch;
ValueType mValueType;
ScQueryOp mQueryOp;
ScQueryEntry::QueryType mQueryType;
diff --git a/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods b/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods
index 41a5789f73a1..102182932041 100644
--- a/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods
+++ b/sc/qa/unit/data/functions/spreadsheet/fods/xlookup.fods
@@ -1,13 +1,13 @@
<?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>PT1H29M57S</meta:editing-duration><meta:editing-cycles>29</meta:editing-cycles><meta:generator>LibreOfficeDev/24.8.0.0.alpha0$Windows_X86_64 LibreOffice_project/417ff8b00401b1b61dc87a73b053a58e6d63ecc7</meta:generator><dc:date>2024-04-22T15:10:20.637000000</dc:date><meta:document-statistic meta:table-count="2" meta:cell-count="908" meta:object-count="0"/></office:meta>
+ <office:meta><meta:creation-date>2024-01-16T18:30:06.278000000</meta:creation-date><meta:editing-duration>PT1H45M28S</meta:editing-duration><meta:editing-cycles>32</meta:editing-cycles><meta:generator>LibreOfficeDev/24.8.0.0.alpha0$Windows_X86_64 LibreOffice_project/a689a4de60470f75f45b3ed1a5fc3e2ef08daa64</meta:generator><dc:date>2024-04-26T15:55:20.748000000</dc:date><meta:document-statistic meta:table-count="2" meta:cell-count="968" 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>
<config:config-item config:name="VisibleAreaLeft" config:type="int">0</config:config-item>
- <config:config-item config:name="VisibleAreaWidth" config:type="int">15882</config:config-item>
- <config:config-item config:name="VisibleAreaHeight" config:type="int">5013</config:config-item>
+ <config:config-item config:name="VisibleAreaWidth" config:type="int">60486</config:config-item>
+ <config:config-item config:name="VisibleAreaHeight" config:type="int">61863</config:config-item>
<config:config-item-map-indexed config:name="Views">
<config:config-item-map-entry>
<config:config-item config:name="ViewId" config:type="string">view1</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">3</config:config-item>
- <config:config-item config:name="CursorPositionY" config:type="int">133</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">132</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">108</config:config-item>
+ <config:config-item config:name="PositionBottom" config:type="int">105</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">100</config:config-item>
<config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
@@ -47,7 +47,7 @@
<config:config-item config:name="IgnoreBreakAfterMultilineField" config:type="boolean">false</config:config-item>
</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="ActiveTable" config:type="string">Sheet2</config:config-item>
<config:config-item config:name="HorizontalScrollbarWidth" config:type="int">1851</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">100</config:config-item>
@@ -1378,151 +1378,151 @@
<number:text> </number:text>
<number:year/>
</number:date-style>
- <number:number-style style:name="N348P0" style:volatile="true">
+ <number:number-style style:name="N349P0" 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="€1"> </number:text>
</number:number-style>
- <number:number-style style:name="N348">
+ <number:number-style style:name="N349">
<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="€1"> </number:text>
- <style:map style:condition="value()&gt;=0" style:apply-style-name="N348P0"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N349P0"/>
</number:number-style>
- <number:number-style style:name="N349P0" style:volatile="true">
+ <number:number-style style:name="N350P0" 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="€1"> </number:text>
</number:number-style>
- <number:number-style style:name="N349">
+ <number:number-style style:name="N350">
<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="€1"> </number:text>
- <style:map style:condition="value()&gt;=0" style:apply-style-name="N349P0"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N350P0"/>
</number:number-style>
- <number:number-style style:name="N350P0" style:volatile="true">
+ <number:number-style style:name="N352P0" 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="€1"> </number:text>
</number:number-style>
- <number:number-style style:name="N350">
+ <number:number-style style:name="N352">
<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="€1"> </number:text>
- <style:map style:condition="value()&gt;=0" style:apply-style-name="N350P0"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N352P0"/>
</number:number-style>
- <number:number-style style:name="N351P0" style:volatile="true">
+ <number:number-style style:name="N353P0" 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="€1"> </number:text>
</number:number-style>
- <number:number-style style:name="N351">
+ <number:number-style style:name="N353">
<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="€1"> </number:text>
- <style:map style:condition="value()&gt;=0" style:apply-style-name="N351P0"/>
+ <style:map style:condition="value()&gt;=0" style:apply-style-name="N353P0"/>
</number:number-style>
- <number:number-style style:name="N352P0" style:volatile="true">
+ <number:number-style style:name="N357P0" 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="€1_-3"> </number:text>
</number:number-style>
- <number:number-style style:name="N352P1" style:volatile="true">
+ <number:number-style style:name="N357P1" 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="€1_-3"> </number:text>
</number:number-style>
- <number:number-style style:name="N352P2" style:volatile="true">
+ <number:number-style style:name="N357P2" style:volatile="true">
<number:text loext:blank-width-char="-"> </number:text>
<number:fill-character> </number:fill-character>
<number:text loext:blank-width-char="€2_-4">- </number:text>
</number:number-style>
- <number:text-style style:name="N352">
+ <number:text-style style:name="N357">
<number:text loext:blank-width-char="-"> </number:text>
<number:text-content/>
<number:text loext:blank-width-char="-"> </number:text>
- <style:map style:condition="value()&gt;0" style:apply-style-name="N352P0"/>
- <style:map style:condition="value()&lt;0" style:apply-style-name="N352P1"/>
- <style:map style:condition="value()=0" style:apply-style-name="N352P2"/>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N357P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N357P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N357P2"/>
</number:text-style>
- <number:number-style style:name="N353P0" style:volatile="true">
+ <number:number-style style:name="N361P0" 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="-2"> € </number:text>
</number:number-style>
- <number:number-style style:name="N353P1" style:volatile="true">
+ <number:number-style style:name="N361P1" 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="-2"> € </number:text>
</number:number-style>
- <number:number-style style:name="N353P2" style:volatile="true">
+ <number:number-style style:name="N361P2" style:volatile="true">
<number:text loext:blank-width-char="-"> </number:text>
<number:fill-character> </number:fill-character>
<number:text loext:blank-width-char="-3">- € </number:text>
</number:number-style>
- <number:text-style style:name="N353">
+ <number:text-style style:name="N361">
<number:text loext:blank-width-char="-"> </number:text>
<number:text-content/>
<number:text loext:blank-width-char="-"> </number:text>
- <style:map style:condition="value()&gt;0" style:apply-style-name="N353P0"/>
- <style:map style:condition="value()&lt;0" style:apply-style-name="N353P1"/>
- <style:map style:condition="value()=0" style:apply-style-name="N353P2"/>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N361P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N361P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N361P2"/>
</number:text-style>
- <number:number-style style:name="N354P0" style:volatile="true">
+ <number:number-style style:name="N365P0" 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="€1_-3"> </number:text>
</number:number-style>
- <number:number-style style:name="N354P1" style:volatile="true">
+ <number:number-style style:name="N365P1" 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="€1_-3"> </number:text>
</number:number-style>
- <number:number-style style:name="N354P2" style:volatile="true">
+ <number:number-style style:name="N365P2" 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="€1_-3"> </number:text>
</number:number-style>
- <number:text-style style:name="N354">
+ <number:text-style style:name="N365">
<number:text loext:blank-width-char="-"> </number:text>
<number:text-content/>
<number:text loext:blank-width-char="-"> </number:text>
- <style:map style:condition="value()&gt;0" style:apply-style-name="N354P0"/>
- <style:map style:condition="value()&lt;0" style:apply-style-name="N354P1"/>
- <style:map style:condition="value()=0" style:apply-style-name="N354P2"/>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N365P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N365P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N365P2"/>
</number:text-style>
- <number:number-style style:name="N355P0" style:volatile="true">
+ <number:number-style style:name="N369P0" 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="-2"> € </number:text>
</number:number-style>
- <number:number-style style:name="N355P1" style:volatile="true">
+ <number:number-style style:name="N369P1" 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="-2"> € </number:text>
</number:number-style>
- <number:number-style style:name="N355P2" style:volatile="true">
+ <number:number-style style:name="N369P2" 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="-2"> € </number:text>
</number:number-style>
- <number:text-style style:name="N355">
+ <number:text-style style:name="N369">
<number:text loext:blank-width-char="-"> </number:text>
<number:text-content/>
<number:text loext:blank-width-char="-"> </number:text>
- <style:map style:condition="value()&gt;0" style:apply-style-name="N355P0"/>
- <style:map style:condition="value()&lt;0" style:apply-style-name="N355P1"/>
- <style:map style:condition="value()=0" style:apply-style-name="N355P2"/>
+ <style:map style:condition="value()&gt;0" style:apply-style-name="N369P0"/>
+ <style:map style:condition="value()&lt;0" style:apply-style-name="N369P1"/>
+ <style:map style:condition="value()=0" style:apply-style-name="N369P2"/>
</number:text-style>
<number:date-style style:name="N10129" number:language="en" number:country="US">
<number:month/>
@@ -2055,12 +2055,55 @@
<style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B3"/>
<style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B3"/>
</style:style>
+ <style:style style:name="ce24" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/>
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ <style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B3"/>
+ </style:style>
+ <style:style style:name="ce25" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99">
+ <style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B3"/>
+ </style:style>
+ <style:style style:name="ce26" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/>
+ </style:style>
<style:style style:name="ce5" style:family="table-cell" style:parent-style-name="Default">
<style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet1.B3"/>
<style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B3"/>
<style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B3"/>
</style:style>
- <style:style style:name="ce24" style:family="table-cell" style:parent-style-name="Default">
+ <style:style style:name="ce9" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties fo:wrap-option="wrap"/>
+ <style:text-properties fo:font-size="20pt" fo:font-weight="bold" style:font-size-asian="20pt" style:font-weight-asian="bold" style:font-size-complex="20pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce11" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/>
+ <style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce13" style:family="table-cell" style:parent-style-name="Default">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/>
+ <style:text-properties fo:font-size="12pt" fo:font-weight="bold" style:font-size-asian="12pt" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="ce17" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99">
+ <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
+ <style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/>
+ <style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B3"/>
+ </style:style>
+ <style:style style:name="ce22" style:family="table-cell" style:parent-style-name="Default">
+ <style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B3"/>
+ <style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B3"/>
+ </style:style>
+ <style:style style:name="ce23" style:family="table-cell" style:parent-style-name="Default">
<style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
<style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/>
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
@@ -2068,17 +2111,17 @@
<style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B3"/>
<style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B3"/>
</style:style>
- <style:style style:name="ce25" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99">
+ <style:style style:name="ce27" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99">
<style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet1.B3"/>
<style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B3"/>
<style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B3"/>
</style:style>
- <style:style style:name="ce26" style:family="table-cell" style:parent-style-name="Default">
+ <style:style style:name="ce28" style:family="table-cell" style:parent-style-name="Default">
<style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
<style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/>
</style:style>
<style:style style:name="ce10" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99"/>
- <style:style style:name="ce11" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99">
+ <style:style style:name="ce30" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99">
<style:map style:condition="cell-content()=&quot;&quot;" style:apply-style-name="Default" style:base-cell-address="Sheet2.C2"/>
<style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet2.C2"/>
<style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet2.C2"/>
@@ -2139,7 +2182,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-04-22">0000.00.00</text:date>, <text:time style:data-style-name="N2" text:time-value="15:04:55.201000000">00:00:00</text:time></text:p>
+ <text:p><text:date style:data-style-name="N2" text:date-value="2024-04-26">0000.00.00</text:date>, <text:time style:data-style-name="N2" text:time-value="15:43:04.970000000">00:00:00</text:time></text:p>
</style:region-right>
</style:header>
<style:header-left style:display="false"/>
@@ -2156,10 +2199,10 @@
<table:calculation-settings table:automatic-find-labels="false" table:use-regular-expressions="false" table:use-wildcards="true"/>
<table:table table:name="Sheet1" table:style-name="ta1">
<table:table-column table:style-name="co1" table:default-cell-style-name="Default"/>
- <table:table-column table:style-name="co2" table:default-cell-style-name="ce5"/>
+ <table:table-column table:style-name="co2" table:default-cell-style-name="ce22"/>
<table:table-column table:style-name="co3" table:default-cell-style-name="Default"/>
<table:table-row table:style-name="ro1">
- <table:table-cell table:style-name="ce15" office:value-type="string" calcext:value-type="string">
+ <table:table-cell table:style-name="ce9" office:value-type="string" calcext:value-type="string">
<text:p>XLOOKUP Function</text:p>
</table:table-cell>
<table:table-cell table:style-name="Default"/>
@@ -2171,10 +2214,10 @@
<table:table-cell/>
</table:table-row>
<table:table-row table:style-name="ro3">
- <table:table-cell table:style-name="ce18" office:value-type="string" calcext:value-type="string">
+ <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string">
<text:p>Result</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce21" table:formula="of:=AND([.B8:.B95])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce17" table:formula="of:=AND([.B8:.B95])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>IGAZ</text:p>
</table:table-cell>
<table:table-cell/>
@@ -2183,13 +2226,13 @@
<table:table-cell table:number-columns-repeated="3"/>
</table:table-row>
<table:table-row table:style-name="ro4">
- <table:table-cell table:style-name="ce19" office:value-type="string" calcext:value-type="string">
+ <table:table-cell table:style-name="ce13" office:value-type="string" calcext:value-type="string">
<text:p>Sheet</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce24" office:value-type="string" calcext:value-type="string">
+ <table:table-cell table:style-name="ce23" office:value-type="string" calcext:value-type="string">
<text:p>Result</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce19" office:value-type="string" calcext:value-type="string">
+ <table:table-cell table:style-name="ce13" office:value-type="string" calcext:value-type="string">
<text:p>Description</text:p>
</table:table-cell>
</table:table-row>
@@ -2197,16 +2240,16 @@
<table:table-cell office:value-type="float" office:value="2" calcext:value-type="float">
<text:p>2</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce21" table:formula="of:=AND([Sheet2.C2:.C202])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce17" table:formula="of:=AND([Sheet2.C2:.C202])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
<text:p>IGAZ</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce26" office:value-type="string" calcext:value-type="string">
+ <table:table-cell table:style-name="ce28" office:value-type="string" calcext:value-type="string">
<text:p>Simple XLOOKUP formulas with local references and values</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name="ro2" table:number-rows-repeated="20">
<table:table-cell/>
- <table:table-cell table:style-name="ce25"/>
+ <table:table-cell table:style-name="ce27"/>
<table:table-cell/>
</table:table-row>
<table:table-row table:style-name="ro2" table:number-rows-repeated="21">
@@ -2297,7 +2340,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>+55</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A2]=[.B2]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A2]=[.B2]" 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([.A2])" office:value-type="string" office:string-value="=XLOOKUP(G2;H2:H11;J2:J11)" calcext:value-type="string">
@@ -2340,7 +2383,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>+91</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A3]=[.B3]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A3]=[.B3]" 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([.A3])" office:value-type="string" office:string-value="=XLOOKUP(&quot;India&quot;;H2:H11;J2:J11)" calcext:value-type="string">
@@ -2380,7 +2423,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>+91</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A4]=[.B4]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A4]=[.B4]" 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([.A4])" office:value-type="string" office:string-value="=XLOOKUP(&quot;INDIA&quot;;H2:H11;J2:J11)" calcext:value-type="string">
@@ -2423,7 +2466,7 @@
<table:table-cell table:formula="of:=#N/A" office:value-type="string" office:string-value="" calcext:value-type="error">
<text:p>#N/A</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISNA([.A5])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISNA([.A5])" 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([.A5])" office:value-type="string" office:string-value="=XLOOKUP(&quot;Ireland&quot;;H2:H11;J2:J11)" calcext:value-type="string">
@@ -2466,7 +2509,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p/>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A6]=[.B6]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A6]=[.B6]" 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([.A6])" office:value-type="string" office:string-value="=XLOOKUP(&quot;Ireland&quot;;H2:H11;J2:J11;&quot;&quot;)" calcext:value-type="string">
@@ -2506,7 +2549,7 @@
<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:style-name="ce11" table:formula="of:=[.A7]=[.B7]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A7]=[.B7]" 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([.A7])" office:value-type="string" office:string-value="=XLOOKUP(&quot;Ireland&quot;;H2:H11;J2:J11;-99)" calcext:value-type="string">
@@ -2543,7 +2586,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Not here</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A8]=[.B8]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A8]=[.B8]" 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([.A8])" office:value-type="string" office:string-value="=XLOOKUP(&quot;Ireland&quot;;H2:H11;J2:J11;&quot;Not here&quot;)" calcext:value-type="string">
@@ -2586,7 +2629,7 @@
<table:table-cell table:formula="of:=#N/A" office:value-type="string" office:string-value="" calcext:value-type="error">
<text:p>#N/A</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISNA([.A9])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISNA([.A9])" 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([.A9])" office:value-type="string" office:string-value="=XLOOKUP(&quot;&quot;;H2:H11;J2:J11)" calcext:value-type="string">
@@ -2629,7 +2672,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>00234</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A10]=[.B10]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A10]=[.B10]" 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([.A10])" office:value-type="string" office:string-value="=XLOOKUP(&quot;Nigeria&quot;;H2:H11;J2:J11;;;1)" calcext:value-type="string">
@@ -2669,7 +2712,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>+234</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A11]=[.B11]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A11]=[.B11]" 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([.A11])" office:value-type="string" office:string-value="=XLOOKUP(&quot;Nigeria&quot;;H2:H11;J2:J11;;;-1)" calcext:value-type="string">
@@ -2704,7 +2747,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="4"/>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Mexico</text:p>
@@ -2725,7 +2768,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2">
@@ -2735,7 +2778,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Ned Lanning</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A14]=[.B14]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A14]=[.B14]" 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([.A14])" office:value-type="string" office:string-value="{=XLOOKUP(4390;I14:R14;I15:R16)}" calcext:value-type="string">
@@ -2787,7 +2830,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Marketing</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A15]=[.B15]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A15]=[.B15]" 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([.A15])" office:value-type="string" office:string-value="{=XLOOKUP(4390;I14:R14;I15:R16)}" calcext:value-type="string">
@@ -2836,7 +2879,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Mia Arnold</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A16]=[.B16]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A16]=[.B16]" 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([.A16])" office:value-type="string" office:string-value="{=XLOOKUP(G14;I14:R14;I15:R16)}" calcext:value-type="string">
@@ -2885,7 +2928,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Operations</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A17]=[.B17]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A17]=[.B17]" 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([.A17])" office:value-type="string" office:string-value="{=XLOOKUP(G14;I14:R14;I15:R16)}" calcext:value-type="string">
@@ -2900,7 +2943,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>ID not found</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A18]=[.B18]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A18]=[.B18]" 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([.A18])" office:value-type="string" office:string-value="{=XLOOKUP(G18;I14:R14;I15:R16;&quot;ID not found&quot;)}" calcext:value-type="string">
@@ -2919,7 +2962,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>ID not found</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A19]=[.B19]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A19]=[.B19]" 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([.A19])" office:value-type="string" office:string-value="{=XLOOKUP(G18;I14:R14;I15:R16;&quot;ID not found&quot;)}" calcext:value-type="string">
@@ -2934,7 +2977,7 @@
<table:table-cell table:formula="of:=#N/A" office:value-type="string" office:string-value="" calcext:value-type="error">
<text:p>#N/A</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISNA([.A20])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISNA([.A20])" 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([.A20])" office:value-type="string" office:string-value="{=XLOOKUP(&quot;&quot;;I14:R14;I15:R16)}" calcext:value-type="string">
@@ -2949,7 +2992,7 @@
<table:table-cell table:formula="of:=#N/A" office:value-type="string" office:string-value="" calcext:value-type="error">
<text:p>#N/A</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISNA([.A21])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISNA([.A21])" 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([.A21])" office:value-type="string" office:string-value="{=XLOOKUP(&quot;&quot;;I14:R14;I15:R16)}" calcext:value-type="string">
@@ -2964,7 +3007,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Earlene McCartney</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A22]=[.B22]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A22]=[.B22]" 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([.A22])" office:value-type="string" office:string-value="{=XLOOKUP(4937;I14:R14;I15:R16;;1)}" calcext:value-type="string">
@@ -2996,7 +3039,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Accounting</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A23]=[.B23]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A23]=[.B23]" 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([.A23])" office:value-type="string" office:string-value="{=XLOOKUP(4937;I14:R14;I15:R16;;1)}" calcext:value-type="string">
@@ -3028,7 +3071,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Earlene McCartney</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A24]=[.B24]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A24]=[.B24]" 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([.A24])" office:value-type="string" office:string-value="{=XLOOKUP(4937;I14:R14;I15:R16;;-1)}" calcext:value-type="string">
@@ -3057,7 +3100,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Accounting</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A25]=[.B25]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A25]=[.B25]" 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([.A25])" office:value-type="string" office:string-value="{=XLOOKUP(4937;I14:R14;I15:R16;;-1)}" calcext:value-type="string">
@@ -3090,7 +3133,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Earlene McCartney</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A26]=[.B26]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A26]=[.B26]" 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([.A26])" office:value-type="string" office:string-value="{=XLOOKUP(4937;I14:R14;I15:R16)}" calcext:value-type="string">
@@ -3123,7 +3166,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Accounting</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A27]=[.B27]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A27]=[.B27]" 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([.A27])" office:value-type="string" office:string-value="{=XLOOKUP(4937;I14:R14;I15:R16)}" calcext:value-type="string">
@@ -3133,7 +3176,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2">
@@ -3143,7 +3186,7 @@
<table:table-cell office:value-type="float" office:value="0.24" calcext:value-type="float">
<text:p>0,24</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A29]=[.B29]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A29]=[.B29]" 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([.A29])" office:value-type="string" office:string-value="=XLOOKUP(G29;I30:I35;H30:H35;;1;1)" calcext:value-type="string">
@@ -3168,7 +3211,7 @@
<table:table-cell office:value-type="float" office:value="0.24" calcext:value-type="float">
<text:p>0,24</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A30]=[.B30]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A30]=[.B30]" 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([.A30])" office:value-type="string" office:string-value="=XLOOKUP(G29;I30:I35;H30:H35;;1;2)" calcext:value-type="string">
@@ -3190,7 +3233,7 @@
<table:table-cell office:value-type="float" office:value="0.22" calcext:value-type="float">
<text:p>0,22</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A31]=[.B31]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A31]=[.B31]" 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([.A31])" office:value-type="string" office:string-value="=XLOOKUP(G29;I30:I35;H30:H35;;-1;2)" calcext:value-type="string">
@@ -3215,7 +3258,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>#N/A</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A32])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISERROR([.A32])" 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([.A32])" office:value-type="string" office:string-value="=XLOOKUP(G29;I30:I35;H30:H35;;2;2)" calcext:value-type="string">
@@ -3232,7 +3275,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="4"/>
<table:table-cell office:value-type="float" office:value="0.32" calcext:value-type="float">
<text:p>0,32</text:p>
@@ -3244,7 +3287,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="4"/>
<table:table-cell office:value-type="float" office:value="0.35" calcext:value-type="float">
<text:p>0,35</text:p>
@@ -3256,7 +3299,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="4"/>
<table:table-cell office:value-type="float" office:value="0.37" calcext:value-type="float">
<text:p>0,37</text:p>
@@ -3268,7 +3311,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2">
@@ -3278,7 +3321,7 @@
<table:table-cell office:value-type="float" office:value="25000" calcext:value-type="float">
<text:p>25000</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A37]=[.B37]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A37]=[.B37]" 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([.A37])" office:value-type="string" office:string-value="=XLOOKUP(K37;$I37:$T37;XLOOKUP($G37;$H38:$H42;$I38:$T42))" calcext:value-type="string">
@@ -3329,7 +3372,7 @@
<table:table-cell office:value-type="float" office:value="19342" calcext:value-type="float">
<text:p>19342</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A38]=[.B38]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A38]=[.B38]" 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([.A38])" office:value-type="string" office:string-value="=XLOOKUP(S37;$I37:$T37;XLOOKUP($G37;$H38:$H42;$I38:$T42))" calcext:value-type="string">
@@ -3377,7 +3420,7 @@
<table:table-cell office:value-type="float" office:value="0.293" calcext:value-type="float">
<text:p>0,293</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A39]=[.B39]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A39]=[.B39]" 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([.A39])" office:value-type="string" office:string-value="=XLOOKUP(T37;$I37:$T37;XLOOKUP($G37;$H38:$H42;$I38:$T42))" calcext:value-type="string">
@@ -3420,7 +3463,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="4"/>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Q3</text:p>
@@ -3463,7 +3506,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Mia Arnold</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A41]=[.B41]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A41]=[.B41]" 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([.A41])" office:value-type="string" office:string-value="{=XLOOKUP(G14;$H14:$R14;$H$15:$R$16)}" calcext:value-type="string">
@@ -3511,7 +3554,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Operations</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A42]=[.B42]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A42]=[.B42]" 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([.A42])" office:value-type="string" office:string-value="{=XLOOKUP(G14;$H14:$R14;$H$15:$R$16)}" calcext:value-type="string">
@@ -3554,7 +3597,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2">
@@ -3564,7 +3607,7 @@
<table:table-cell office:value-type="float" office:value="110.56" calcext:value-type="float">
<text:p>110,56</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A44]=[.B44]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A44]=[.B44]" 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([.A44])" office:value-type="string" office:string-value="=SUM(XLOOKUP(G44;H45:H49;K45:K49):XLOOKUP(G45;H45:H49;K45:K49))" calcext:value-type="string">
@@ -3591,7 +3634,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="3"/>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Banana</text:p>
@@ -3612,7 +3655,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="4"/>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Grape</text:p>
@@ -3630,7 +3673,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="4"/>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Pear</text:p>
@@ -3648,7 +3691,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="4"/>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Banana</text:p>
@@ -3666,7 +3709,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="4"/>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Cherry</text:p>
@@ -3684,7 +3727,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2">
@@ -3694,7 +3737,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>err:504</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A51])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISERROR([.A51])" 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([.A51])" office:value-type="string" office:string-value="=XLOOKUP(&quot;B&quot;;H51:H53;K51:K52)" calcext:value-type="string">
@@ -3727,7 +3770,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>err:504</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A52])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISERROR([.A52])" 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([.A52])" office:value-type="string" office:string-value="=XLOOKUP(&quot;C&quot;;H51:H53;K51:K52)" calcext:value-type="string">
@@ -3760,7 +3803,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>err:504</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A53])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISERROR([.A53])" 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([.A53])" office:value-type="string" office:string-value="=XLOOKUP(&quot;E&quot;;H51:I53;K51:L53)" calcext:value-type="string">
@@ -3793,7 +3836,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>err:504</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A54])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISERROR([.A54])" 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([.A54])" office:value-type="string" office:string-value="=XLOOKUP(&quot;E&quot;;H51:I53;K51:K53)" calcext:value-type="string">
@@ -3812,7 +3855,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>err:504</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A55])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISERROR([.A55])" 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="=XLOOKUP(&quot;C&quot;;H51:I53;K51:K53)" calcext:value-type="string">
@@ -3826,7 +3869,7 @@
</table:table-row>
<table:table-row table:style-name="ro2" table:number-rows-repeated="2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2">
@@ -3836,7 +3879,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A58]=[.B58]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A58]=[.B58]" 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="=XLOOKUP(3;I$58:I$62;L$58:L$62;;0;1)" calcext:value-type="string">
@@ -3874,7 +3917,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A59]=[.B59]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A59]=[.B59]" 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="=XLOOKUP(4;I$58:I$62;L$58:L$62;;-1;1)" calcext:value-type="string">
@@ -3912,7 +3955,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>a5</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A60]=[.B60]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A60]=[.B60]" 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="=XLOOKUP(4;I$58:I$62;L$58:L$62;;1;1)" calcext:value-type="string">
@@ -3950,7 +3993,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A61]=[.B61]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A61]=[.B61]" 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="=XLOOKUP(3;I$58:I$62;L$58:L$62;;2;1)" calcext:value-type="string">
@@ -3984,7 +4027,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A62]=[.B62]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A62]=[.B62]" 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="=XLOOKUP(3;I$58:I$62;L$58:L$62;;0;-1)" calcext:value-type="string">
@@ -4022,7 +4065,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A63]=[.B63]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A63]=[.B63]" 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="=XLOOKUP(4;I$58:I$62;L$58:L$62;;-1;-1)" calcext:value-type="string">
@@ -4041,7 +4084,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>a5</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A64]=[.B64]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A64]=[.B64]" 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="=XLOOKUP(4;I$58:I$62;L$58:L$62;;1;-1)" calcext:value-type="string">
@@ -4060,7 +4103,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A65]=[.B65]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A65]=[.B65]" 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="=XLOOKUP(3;I$58:I$62;L$58:L$62;;2;-1)" calcext:value-type="string">
@@ -4075,7 +4118,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>c3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A66]=[.B66]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A66]=[.B66]" 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="=XLOOKUP(3;H$58:H$62;K$58:K$62;;0;2)" calcext:value-type="string">
@@ -4094,7 +4137,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>c3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A67]=[.B67]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A67]=[.B67]" 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="=XLOOKUP(4;H$58:H$62;K$58:K$62;;-1;2)" calcext:value-type="string">
@@ -4113,7 +4156,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>D5.2</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A68]=[.B68]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A68]=[.B68]" 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="=XLOOKUP(4;H$58:H$62;K$58:K$62;;1;2)" calcext:value-type="string">
@@ -4132,7 +4175,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>c3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A69]=[.B69]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A69]=[.B69]" 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="=XLOOKUP(3;H$58:H$62;K$58:K$62;;2;2)" calcext:value-type="string">
@@ -4147,7 +4190,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>c3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A70]=[.B70]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A70]=[.B70]" 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="=XLOOKUP(3;J$58:J$62;M$58:M$62;;0;-2)" calcext:value-type="string">
@@ -4166,7 +4209,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>c3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A71]=[.B71]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A71]=[.B71]" 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="=XLOOKUP(4;J$58:J$62;M$58:M$62;;-1;-2)" calcext:value-type="string">
@@ -4185,7 +4228,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b5</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A72]=[.B72]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A72]=[.B72]" 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="=XLOOKUP(4;J$58:J$62;M$58:M$62;;1;-2)" calcext:value-type="string">
@@ -4204,7 +4247,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>c3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A73]=[.B73]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A73]=[.B73]" 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="=XLOOKUP(3;J$58:J$62;M$58:M$62;;2;-2)" calcext:value-type="string">
@@ -4219,7 +4262,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A74]=[.B74]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A74]=[.B74]" 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="=XLOOKUP(3;H$74:L$74;H$75:L$75;;0;1)" calcext:value-type="string">
@@ -4254,7 +4297,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A75]=[.B75]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A75]=[.B75]" 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="=XLOOKUP(4;H$74:L$74;H$75:L$75;;-1;1)" calcext:value-type="string">
@@ -4289,7 +4332,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>a5</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A76]=[.B76]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A76]=[.B76]" 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="=XLOOKUP(4;H$74:L$74;H$75:L$75;;1;1)" calcext:value-type="string">
@@ -4308,7 +4351,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b3</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A77]=[.B77]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A77]=[.B77]" 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="=XLOOKUP(3;H$74:L$74;H$75:L$75;;2;1)" calcext:value-type="string">
@@ -4322,7 +4365,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2">
@@ -4332,7 +4375,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>bC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A79]=[.B79]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A79]=[.B79]" 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="=XLOOKUP(&quot;C&quot;;I$79:I$83;L$79:L$83;;0;1)" calcext:value-type="string">
@@ -4370,7 +4413,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>bC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A80]=[.B80]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A80]=[.B80]" 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="=XLOOKUP(&quot;D&quot;;I$79:I$83;L$79:L$83;;-1;1)" calcext:value-type="string">
@@ -4408,7 +4451,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>aE</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A81]=[.B81]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A81]=[.B81]" 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="=XLOOKUP(&quot;D&quot;;I$79:I$83;L$79:L$83;;1;1)" calcext:value-type="string">
@@ -4446,7 +4489,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>eB</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A82]=[.B82]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A82]=[.B82]" 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="=XLOOKUP(&quot;b?b&quot;;I$84:I$88;L$79:L$83;;2;1)" calcext:value-type="string">
@@ -4480,7 +4523,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>bC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A83]=[.B83]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A83]=[.B83]" 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="=XLOOKUP(&quot;C&quot;;I$79:I$83;L$79:L$83;;0;-1)" calcext:value-type="string">
@@ -4518,7 +4561,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>bC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A84]=[.B84]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A84]=[.B84]" 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="=XLOOKUP(&quot;D&quot;;I$79:I$83;L$79:L$83;;-1;-1)" calcext:value-type="string">
@@ -4541,7 +4584,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>aE</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A85]=[.B85]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A85]=[.B85]" 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="=XLOOKUP(&quot;D&quot;;I$79:I$83;L$79:L$83;;1;-1)" calcext:value-type="string">
@@ -4564,7 +4607,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>bC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A86]=[.B86]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A86]=[.B86]" 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="=XLOOKUP(&quot;C&quot;;I$79:I$83;L$79:L$83;;2;-1)" calcext:value-type="string">
@@ -4583,7 +4626,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>cC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A87]=[.B87]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A87]=[.B87]" 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="=XLOOKUP(&quot;C&quot;;H$79:H$83;K$79:K$83;;0;2)" calcext:value-type="string">
@@ -4606,7 +4649,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>cC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A88]=[.B88]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A88]=[.B88]" 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="=XLOOKUP(&quot;D&quot;;H$79:H$83;K$79:K$83;;-1;2)" calcext:value-type="string">
@@ -4629,7 +4672,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>eE</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A89]=[.B89]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A89]=[.B89]" 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="=XLOOKUP(&quot;D&quot;;H$79:H$83;K$79:K$83;;1;2)" calcext:value-type="string">
@@ -4648,7 +4691,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>cC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A90]=[.B90]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A90]=[.B90]" 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="=XLOOKUP(&quot;C&quot;;H$79:H$83;K$79:K$83;;2;2)" calcext:value-type="string">
@@ -4663,7 +4706,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>cC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A91]=[.B91]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A91]=[.B91]" 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="=XLOOKUP(&quot;C&quot;;J$79:J$83;M$79:M$83;;0;-2)" calcext:value-type="string">
@@ -4682,7 +4725,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>cC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A92]=[.B92]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A92]=[.B92]" 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="=XLOOKUP(&quot;D&quot;;J$79:J$83;M$79:M$83;;-1;-2)" calcext:value-type="string">
@@ -4701,7 +4744,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>eE</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A93]=[.B93]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A93]=[.B93]" 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="=XLOOKUP(&quot;D&quot;;J$79:J$83;M$79:M$83;;1;-2)" calcext:value-type="string">
@@ -4720,7 +4763,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>cC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A94]=[.B94]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A94]=[.B94]" 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="=XLOOKUP(&quot;C&quot;;J$79:J$83;M$79:M$83;;2;-2)" calcext:value-type="string">
@@ -4735,7 +4778,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>bC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A95]=[.B95]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A95]=[.B95]" 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="=XLOOKUP(&quot;C&quot;;H$95:L$95;H$96:L$96;;0;1)" calcext:value-type="string">
@@ -4770,7 +4813,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>bC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A96]=[.B96]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A96]=[.B96]" 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="=XLOOKUP(&quot;D&quot;;H$95:L$95;H$96:L$96;;-1;1)" calcext:value-type="string">
@@ -4805,7 +4848,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>aE</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A97]=[.B97]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A97]=[.B97]" 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="=XLOOKUP(&quot;D&quot;;H$95:L$95;H$96:L$96;;1;1)" calcext:value-type="string">
@@ -4824,7 +4867,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>#N/A</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A98])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" 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="=XLOOKUP(&quot;C?&quot;;H$95:L$95;H$96:L$96;;2;1)" calcext:value-type="string">
@@ -4834,7 +4877,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="4"/>
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>LookCol</text:p>
@@ -4876,7 +4919,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>bC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A100]=[.B100]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A100]=[.B100]" 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="=XLOOKUP(&quot;c&quot;;I$79:I$83;L$79:L$83;;0;1)" calcext:value-type="string">
@@ -4921,7 +4964,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>bC</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A101]=[.B101]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A101]=[.B101]" 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([.A101])" office:value-type="string" office:string-value="=XLOOKUP(&quot;d&quot;;I$79:I$83;L$79:L$83;;-1;1)" calcext:value-type="string">
@@ -4947,7 +4990,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>aE</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A102]=[.B102]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A102]=[.B102]" 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([.A102])" office:value-type="string" office:string-value="=XLOOKUP(&quot;d&quot;;I$79:I$83;L$79:L$83;;1;1)" calcext:value-type="string">
@@ -4973,7 +5016,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>#N/A</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A103])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISERROR([.A103])" 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([.A103])" office:value-type="string" office:string-value="=XLOOKUP(&quot;f?&quot;;I$79:I$83;L$79:L$83;;2;1)" calcext:value-type="string">
@@ -4995,7 +5038,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>g</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A104]=[.B104]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A104]=[.B104]" 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([.A104])" office:value-type="string" office:string-value="=XLOOKUP(K99;H$99:H$109;I$99:I$109;;-1;-1)" calcext:value-type="string">
@@ -5017,7 +5060,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>a</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A105]=[.B105]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A105]=[.B105]" 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([.A105])" office:value-type="string" office:string-value="=XLOOKUP(K99;N$99:R$99;N$100:R$100;;-1;-1)" calcext:value-type="string">
@@ -5039,7 +5082,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>BR</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A106]=[.B106]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A106]=[.B106]" 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([.A106])" office:value-type="string" office:string-value="=XLOOKUP($M$1;K$1:K$12;I$1:I$12;0;1;2)" calcext:value-type="string">
@@ -5061,7 +5104,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>BR</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A107]=[.B107]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A107]=[.B107]" 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([.A107])" office:value-type="string" office:string-value="=XLOOKUP($M$1;L$1:L$12;I$1:I$12;0;1;-2)" calcext:value-type="string">
@@ -5083,7 +5126,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>ID</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A108]=[.B108]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A108]=[.B108]" 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([.A108])" office:value-type="string" office:string-value="=XLOOKUP($M$1;K$1:K$12;I$1:I$12;0;-1;2)" calcext:value-type="string">
@@ -5105,7 +5148,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>PK</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A109]=[.B109]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A109]=[.B109]" 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([.A109])" office:value-type="string" office:string-value="=XLOOKUP(M1;L$1:L$12;I$1:I$12;0;-1;-2)" calcext:value-type="string">
@@ -5127,7 +5170,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>PK</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A110]=[.B110]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A110]=[.B110]" 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([.A110])" office:value-type="string" office:string-value="=XLOOKUP(N1;L$1:L$12;I$1:I$12;0;0;-2)" calcext:value-type="string">
@@ -5142,7 +5185,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>#N/A</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A111])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISERROR([.A111])" 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([.A111])" office:value-type="string" office:string-value="=XLOOKUP(M1;K$1:K$12;I$1:I$12;;0;2)" calcext:value-type="string">
@@ -5152,7 +5195,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2">
@@ -5162,7 +5205,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>#N/A</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A113])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISERROR([.A113])" 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([.A113])" office:value-type="string" office:string-value="=XLOOKUP($O$1;P$1:P$11;T$1:T$11;;0;2)" calcext:value-type="string">
@@ -5177,7 +5220,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>c</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A114]=[.B114]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A114]=[.B114]" 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([.A114])" office:value-type="string" office:string-value="=XLOOKUP($O$1;P$1:P$11;T$1:T$11;;-1;2)" calcext:value-type="string">
@@ -5192,7 +5235,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>d</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A115]=[.B115]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A115]=[.B115]" 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([.A115])" office:value-type="string" office:string-value="=XLOOKUP($O$1;P$1:P$11;T$1:T$11;;1;2)" calcext:value-type="string">
@@ -5207,7 +5250,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>c</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A116]=[.B116]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A116]=[.B116]" 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([.A116])" office:value-type="string" office:string-value="=XLOOKUP($O$1;Q$1:Q$11;T$1:T$11;;0;2)" calcext:value-type="string">
@@ -5222,7 +5265,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>c</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A117]=[.B117]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A117]=[.B117]" 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([.A117])" office:value-type="string" office:string-value="=XLOOKUP($O$1;Q$1:Q$11;T$1:T$11;;-1;2)" calcext:value-type="string">
@@ -5237,7 +5280,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>c</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A118]=[.B118]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A118]=[.B118]" 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([.A118])" office:value-type="string" office:string-value="=XLOOKUP($O$1;Q$1:Q$11;T$1:T$11;;1;2)" calcext:value-type="string">
@@ -5247,7 +5290,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2">
@@ -5257,7 +5300,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>#N/A</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=ISERROR([.A120])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=ISERROR([.A120])" 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([.A120])" office:value-type="string" office:string-value="=XLOOKUP($O$1;R$1:R$11;T$1:T$11;;0;-2)" calcext:value-type="string">
@@ -5272,7 +5315,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>h</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A121]=[.B121]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A121]=[.B121]" 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([.A121])" office:value-type="string" office:string-value="=XLOOKUP($O$1;R$1:R$11;T$1:T$11;;-1;-2)" calcext:value-type="string">
@@ -5294,7 +5337,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>g</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A122]=[.B122]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A122]=[.B122]" 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([.A122])" office:value-type="string" office:string-value="=XLOOKUP($O$1;R$1:R$11;T$1:T$11;;1;-2)" calcext:value-type="string">
@@ -5316,7 +5359,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>h</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A123]=[.B123]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A123]=[.B123]" 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([.A123])" office:value-type="string" office:string-value="=XLOOKUP($O$1;S$1:S$11;T$1:T$11;;0;-2)" calcext:value-type="string">
@@ -5338,7 +5381,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>h</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A124]=[.B124]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A124]=[.B124]" 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([.A124])" office:value-type="string" office:string-value="=XLOOKUP($O$1;S$1:S$11;T$1:T$11;;-1;-2)" calcext:value-type="string">
@@ -5360,7 +5403,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>h</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A125]=[.B125]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A125]=[.B125]" 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([.A125])" office:value-type="string" office:string-value="=XLOOKUP($O$1;S$1:S$11;T$1:T$11;;1;-2)" calcext:value-type="string">
@@ -5377,7 +5420,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="3"/>
<table:table-cell table:style-name="ce16" office:value-type="string" calcext:value-type="string">
<text:p>Klein</text:p>
@@ -5394,7 +5437,7 @@
<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="ce11" table:formula="of:=[.A127]=[.B127]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" 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">
@@ -5416,7 +5459,7 @@
<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="ce11" table:formula="of:=[.A128]=[.B128]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" 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">
@@ -5433,7 +5476,7 @@
</table:table-row>
<table:table-row table:style-name="ro2">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2">
@@ -5443,7 +5486,7 @@
<table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>Susanne</text:p>
</table:table-cell>
- <table:table-cell table:style-name="ce11" table:formula="of:=[.A130]=[.B130]" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean">
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A130]=[.B130]" 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([.A130])" office:value-type="string" office:string-value="=XLOOKUP(&quot;Luchs&quot;;G$121:G$128;H$121:H$128; ;-1;-2)" calcext:value-type="string">
@@ -5451,9 +5494,189 @@
</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="72">
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="ce30"/>
+ <table:table-cell table:number-columns-repeated="3"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>Country Asc1</text:p>
+ </table:table-cell>
+ <table:table-cell 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="2" 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="2" office:value-type="float" office:value="3" calcext:value-type="float">
+ <text:p>3</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="4" calcext:value-type="float">
+ <text:p>4</text:p>
+ </table:table-cell>
+ <table:table-cell 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="2" office:value-type="float" office:value="7" calcext:value-type="float">
+ <text:p>7</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="8" calcext:value-type="float">
+ <text:p>8</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-columns-repeated="2"/>
+ <table:table-cell table:style-name="ce30"/>
+ <table:table-cell table:number-columns-repeated="3"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>Country Asc2</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="0" calcext:value-type="float">
+ <text:p>0</text:p>
+ </table:table-cell>
+ <table:table-cell 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="2" office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="3" calcext:value-type="float">
+ <text:p>3</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="4" calcext:value-type="float">
+ <text:p>4</text:p>
+ </table:table-cell>
+ <table:table-cell 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="2" office:value-type="float" office:value="7" calcext:value-type="float">
+ <text:p>7</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="8" calcext:value-type="float">
+ <text:p>8</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:formula="of:=COM.MICROSOFT.XLOOKUP([.G137];[.G132:.Q132];[.G135:.Q135];;1;2)" office:value-type="string" office:string-value="c" calcext:value-type="string">
+ <text:p>c</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>c</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce30" table:formula="of:=[.A133]=[.B133]" 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([.A133])" office:value-type="string" office:string-value="=XLOOKUP(G137;G132:Q132;G135:Q135;;1;2)" calcext:value-type="string">
+ <text:p>=XLOOKUP(G137;G132:Q132;G135:Q135;;1;2)</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>Country Desc1</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="8" calcext:value-type="float">
+ <text:p>8</text:p>
+ </table:table-cell>
+ <table:table-cell 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" 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="5" 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-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="ce30"/>
+ <table:table-cell table:number-columns-repeated="3"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>Country Desc2</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="8" calcext:value-type="float">
+ <text:p>8</text:p>
+ </table:table-cell>
+ <table:table-cell table:number-columns-repeated="2" office:value-type="float" office:value="7" calcext:value-type="float">
+ <text:p>7</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="6" calcext:value-type="float">
+ <text:p>6</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="4" calcext:value-type="float">
+ <text:p>4</text:p>
+ </table:table-cell>
+ <table:table-cell 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="2" office:value-type="float" office:value="2" calcext:value-type="float">
+ <text:p>2</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="float" office:value="1" calcext:value-type="float">
+ <text:p>1</text:p>
+ </table:table-cell>
+ <table:table-cell 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-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="ce30"/>
+ <table:table-cell table:number-columns-repeated="3"/>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>Prefix</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>a</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>b</text:p>
+ </table:table-cell>
+ <table:table-cell table:style-name="ce20" office:value-type="string" calcext:value-type="string">
+ <text:p>c</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>d</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>e</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>f</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>g</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>h</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>I</text:p>
+ </table:table-cell>
+ <table:table-cell office:value-type="string" calcext:value-type="string">
+ <text:p>j</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-columns-repeated="2"/>
+ <table:table-cell table:style-name="ce30"/>
+ <table:table-cell table:number-columns-repeated="17"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2">
+ <table:table-cell table:number-columns-repeated="2"/>
+ <table:table-cell table:style-name="ce30"/>
+ <table:table-cell table:number-columns-repeated="3"/>
+ <table:table-cell 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="13"/>
+ </table:table-row>
+ <table:table-row table:style-name="ro2" table:number-rows-repeated="65">
<table:table-cell table:number-columns-repeated="2"/>
- <table:table-cell table:style-name="ce11"/>
+ <table:table-cell table:style-name="ce30"/>
<table:table-cell table:number-columns-repeated="17"/>
</table:table-row>
<table:table-row table:style-name="ro2" table:number-rows-repeated="1048373">
diff --git a/sc/source/core/data/queryiter.cxx b/sc/source/core/data/queryiter.cxx
index 3913761a55ae..1cccedd59dc5 100644
--- a/sc/source/core/data/queryiter.cxx
+++ b/sc/source/core/data/queryiter.cxx
@@ -127,7 +127,8 @@ void ScQueryCellIteratorBase< accessType, queryType >::PerformQuery()
if (!mbReverseSearch)
{
++nCol;
- if (nCol > maParam.nCol2 || nCol >= rDoc.maTabs[nTab]->GetAllocatedColumnsCount())
+ SCCOL nAlloCols = rDoc.maTabs[nTab]->GetAllocatedColumnsCount();
+ if (nCol > maParam.nCol2 || nCol >= nAlloCols || (!maParam.bByRow && maParam.nCol2 >= nAlloCols))
return;
}
else
@@ -289,59 +290,74 @@ void ScQueryCellIteratorBase< accessType, queryType >::InitPos()
// BinarySearch(), so do it this way instead.
AccessBase::InitPosStart(nSortedBinarySearch);
ScQueryOp& op = maParam.GetEntry(0).eOp;
- SCROW beforeRow = -1;
- SCROW lastRow = -1;
+ SCCOLROW beforeColRow = -1;
+ SCCOLROW lastColRow = -1;
if( op == SC_EQUAL )
{
- if( BinarySearch( nCol ))
+ if( BinarySearch( maParam.bByRow ? nCol : nRow) )
{
// BinarySearch() searches for the last item that matches. Now we
// also need to find the first item where to start. Find the last
// non-matching position using SC_LESS and the start position
// is the one after it.
- lastRow = nRow;
+ lastColRow = maParam.bByRow ? nRow : nCol;
ScQueryOp saveOp = op;
op = SC_LESS;
- if( BinarySearch( nCol, true ))
- beforeRow = nRow;
+ if( BinarySearch(maParam.bByRow ? nCol : nRow, true) )
+ beforeColRow = maParam.bByRow ? nRow : nCol;
// If BinarySearch() returns false, there was no match, which means
// there's no value smaller. In that case BinarySearch() has set
// the position to the first row in the range.
op = saveOp; // back to SC_EQUAL
}
else if( maParam.GetEntry(0).GetQueryItem().mbMatchEmpty
- && rDoc.IsEmptyData(nCol, maParam.nRow1, nCol, maParam.nRow2, nTab))
+ && rDoc.IsEmptyData(maParam.nCol1, maParam.nRow1, maParam.nCol2, maParam.nRow2, nTab))
{
// BinarySearch() returns false in case it's all empty data,
// handle that specially.
- beforeRow = -1;
- lastRow = maParam.nRow2;
+ beforeColRow = -1;
+ lastColRow = maParam.nRow2;
}
- AccessBase::InitPosFinish(beforeRow, lastRow, false/*bFirstMatch*/);
+ if (maParam.bByRow)
+ AccessBase::InitPosFinish(beforeColRow, lastColRow, false/*bFirstMatch*/);
+ else
+ AccessBase::InitPosColFinish(beforeColRow, lastColRow, false/*bFirstMatch*/);
}
else
{ // The range is from the start up to and including the last matching.
- if (BinarySearch(nCol))
+ if( BinarySearch( maParam.bByRow ? nCol : nRow) )
{
- lastRow = nRow;
+ lastColRow = maParam.bByRow ? nRow : nCol;
if (nSearchOpCode == SC_OPCODE_X_LOOKUP || nSearchOpCode == SC_OPCODE_X_MATCH)
{
ScQueryOp saveOp = op;
op = SC_LESS;
- if (BinarySearch(nCol, true))
- beforeRow = nRow;
+ if( BinarySearch(maParam.bByRow ? nCol : nRow, true) )
+ beforeColRow = maParam.bByRow ? nRow : nCol;
op = saveOp;
}
}
if ((nSearchOpCode == SC_OPCODE_X_LOOKUP || nSearchOpCode == SC_OPCODE_X_MATCH) &&
- (lastRow == beforeRow || beforeRow == -1))
+ (lastColRow == beforeColRow || beforeColRow == -1))
{
- beforeRow = -1;
- AccessBase::InitPosFinish(beforeRow, lastRow, true/*bFirstMatch*/);
+ beforeColRow = -1;
+ if (maParam.bByRow)
+ AccessBase::InitPosFinish(beforeColRow, lastColRow, true/*bFirstMatch*/);
+ else
+ {
+ AccessBase::InitPosColFinish(beforeColRow, lastColRow, true/*bFirstMatch*/);
+ AdvanceQueryParamEntryFieldForBinarySearch();
+ }
}
else
{
- AccessBase::InitPosFinish(beforeRow, lastRow, false/*bFirstMatch*/);
+ if (maParam.bByRow)
+ AccessBase::InitPosFinish(beforeColRow, lastColRow, false/*bFirstMatch*/);
+ else
+ {
+ AccessBase::InitPosColFinish(beforeColRow, lastColRow, false/*bFirstMatch*/);
+ AdvanceQueryParamEntryFieldForBinarySearch();
+ }
}
}
}
@@ -370,6 +386,27 @@ void ScQueryCellIteratorBase< accessType, queryType >::AdvanceQueryParamEntryFie
}
}
+template< ScQueryCellIteratorAccess accessType, ScQueryCellIteratorType queryType >
+void ScQueryCellIteratorBase< accessType, queryType >::AdvanceQueryParamEntryFieldForBinarySearch()
+{
+ SCSIZE nEntries = maParam.GetEntryCount();
+ for ( SCSIZE j = 0; j < nEntries; j++ )
+ {
+ ScQueryEntry& rEntry = maParam.GetEntry( j );
+ if ( rEntry.bDoQuery )
+ {
+ if (rEntry.nField < rDoc.MaxCol())
+ rEntry.nField = nCol;
+ else
+ {
+ assert(!"AdvanceQueryParamEntryFieldForBinarySearch: rEntry.nField >= MAXCOL");
+ }
+ }
+ else
+ break; // for
+ }
+}
+
namespace {
template<typename Iter>
@@ -391,14 +428,13 @@ void decBlock(std::pair<Iter, size_t>& rPos)
}
template< ScQueryCellIteratorAccess accessType, ScQueryCellIteratorType queryType >
-bool ScQueryCellIteratorBase< accessType, queryType >::BinarySearch( SCCOL col, bool forEqual )
+bool ScQueryCellIteratorBase< accessType, queryType >::BinarySearch( SCCOLROW col_row, bool forEqual )
{
assert(maParam.GetEntry(0).bDoQuery && !maParam.GetEntry(1).bDoQuery
&& maParam.GetEntry(0).GetQueryItems().size() == 1 );
assert(maParam.eSearchType == utl::SearchParam::SearchType::Normal);
assert(maParam.GetEntry(0).GetQueryItem().meType == ScQueryEntry::ByString
|| maParam.GetEntry(0).GetQueryItem().meType == ScQueryEntry::ByValue);
- assert(maParam.bByRow);
assert(maParam.GetEntry(0).eOp == SC_LESS || maParam.GetEntry(0).eOp == SC_LESS_EQUAL
|| maParam.GetEntry(0).eOp == SC_GREATER || maParam.GetEntry(0).eOp == SC_GREATER_EQUAL
|| maParam.GetEntry(0).eOp == SC_EQUAL);
@@ -406,15 +442,31 @@ bool ScQueryCellIteratorBase< accessType, queryType >::BinarySearch( SCCOL col,
// TODO: This will be extremely slow with mdds::multi_type_vector.
assert(nTab < rDoc.GetTableCount() && "index out of bounds, FIX IT");
- nCol = col;
- nRow = maParam.nRow1;
+ nCol = maParam.bByRow ? col_row : maParam.nCol1;
+ nRow = maParam.bByRow ? maParam.nRow1 : col_row;
- if (nCol >= rDoc.maTabs[nTab]->GetAllocatedColumnsCount())
- return false;
+ if (maParam.bByRow)
+ {
+ if (nCol >= rDoc.maTabs[nTab]->GetAllocatedColumnsCount())
+ return false;
+ }
+ else
+ {
+ if (maParam.nCol2 >= rDoc.maTabs[nTab]->GetAllocatedColumnsCount())
+ return false;
+ }
- const ScColumn* pCol = &(rDoc.maTabs[nTab])->aCol[nCol];
- if (pCol->IsEmptyData())
- return false;
+ const ScColumn* pCol = nullptr;
+ if (maParam.bByRow)
+ {
+ pCol = &(rDoc.maTabs[nTab])->aCol[nCol];
+ if (pCol->IsEmptyData())
+ return false;
+ }
+ else
+ {
+ pCol = &(rDoc.maTabs[nTab])->aCol[nCol];
+ }
CollatorWrapper& rCollator = ScGlobal::GetCollator(maParam.bCaseSens);
const ScQueryEntry& rEntry = maParam.GetEntry(0);
@@ -427,10 +479,14 @@ bool ScQueryCellIteratorBase< accessType, queryType >::BinarySearch( SCCOL col,
!maParam.bHasHeader && bByString;
if (maParam.bHasHeader)
- ++nRow;
+ maParam.bByRow ? ++nRow : ++nCol;
if (bFirstStringIgnore)
{
+ // move to next col if necessary
+ if (!maParam.bByRow && maParam.nCol1 != nCol)
+ pCol = &(rDoc.maTabs[nTab])->aCol[nCol];
+
sc::CellStoreType::const_position_type aPos = pCol->maCells.position(nRow);
if (aPos.first->type == sc::element_type_string || aPos.first->type == sc::element_type_edittext)
{
@@ -443,32 +499,81 @@ bool ScQueryCellIteratorBase< accessType, queryType >::BinarySearch( SCCOL col,
(rEntry.eOp == SC_EQUAL && nTmp != 0) ||
(rEntry.eOp == SC_LESS && nTmp >= 0) ||
(rEntry.eOp == SC_GREATER && nTmp <= 0))
- ++nRow;
+ maParam.bByRow ? ++nRow : ++nCol;
}
}
+ sc::CellStoreType::const_position_type startPos;
// Skip leading empty block, if any.
- sc::CellStoreType::const_position_type startPos = pCol->maCells.position(nRow);
- if (startPos.first->type == sc::element_type_empty)
- incBlock(startPos);
+ if (maParam.bByRow)
+ {
+ startPos = pCol->maCells.position(nRow);
+ if (startPos.first->type == sc::element_type_empty)
+ incBlock(startPos);
+ }
+ else
+ {
+ bool bNonEmpty = false;
+ while (nCol != maParam.nCol2 && !bNonEmpty)
+ {
+ if (maParam.nCol1 != nCol)
+ pCol = &(rDoc.maTabs[nTab])->aCol[nCol];
+ startPos = pCol->maCells.position(nRow);
+ if (startPos.first->type == sc::element_type_empty)
+ ++nCol;
+ else
+ bNonEmpty = true;
+ }
+ }
+
if(bAllStringIgnore)
{
// Skip all leading string or empty blocks.
- while (startPos.first != pCol->maCells.end()
- && (startPos.first->type == sc::element_type_string ||
- startPos.first->type == sc::element_type_edittext ||
- startPos.first->type == sc::element_type_empty))
+ if (maParam.bByRow)
{
- incBlock(startPos);
+ while (startPos.first != pCol->maCells.end()
+ && (startPos.first->type == sc::element_type_string ||
+ startPos.first->type == sc::element_type_edittext ||
+ startPos.first->type == sc::element_type_empty))
+ {
+ incBlock(startPos);
+ }
+ }
+ else
+ {
+ bool bSkipped = false;
+ while (nCol != maParam.nCol2 && !bSkipped)
+ {
+ if (maParam.nCol1 != nCol)
+ pCol = &(rDoc.maTabs[nTab])->aCol[nCol];
+ startPos = pCol->maCells.position(nRow);
+ if (startPos.first->type == sc::element_type_string ||
+ startPos.first->type == sc::element_type_edittext ||
+ startPos.first->type == sc::element_type_empty)
+ ++nCol;
+ else
+ bSkipped = true;
+ }
}
}
- if(startPos.first == pCol->maCells.end())
- return false;
- nRow = startPos.first->position + startPos.second;
- if (nRow > maParam.nRow2)
- return false;
- auto aIndexer = MakeBinarySearchIndexer(pCol->maCells, nRow, maParam.nRow2);
+ if (maParam.bByRow)
+ {
+ if (startPos.first == pCol->maCells.end())
+ return false;
+ nRow = startPos.first->position + startPos.second;
+ if (nRow > maParam.nRow2)
+ return false;
+ }
+ else
+ {
+ if (nCol > maParam.nCol2)
+ return false;
+ }
+
+ auto aIndexer = maParam.bByRow ? MakeBinarySearchIndexer(&pCol->maCells, nRow, maParam.nRow2) :
+ MakeBinarySearchIndexer(nullptr, nCol, maParam.nCol2);
+
if (!aIndexer.isValid())
return false;
@@ -486,11 +591,15 @@ bool ScQueryCellIteratorBase< accessType, queryType >::BinarySearch( SCCOL col,
if (!bAscending)
aLastInRangeString = OUString(u'\xFFFF');
- aCellData = aIndexer.getCell(nLastInRange);
+ if (maParam.bByRow)
+ aCellData = aIndexer.getCell(nLastInRange);
+ else
+ aCellData = aIndexer.getColCell(nLastInRange, nRow);
+
ScRefCellValue aCell = aCellData.first;
if (bForceStr || aCell.hasString())
{
- sal_uInt32 nFormat = pCol->GetNumberFormat(mrContext, aCellData.second);
+ sal_uInt32 nFormat = pCol->GetNumberFormat(mrContext, maParam.bByRow ? aCellData.second : nRow);
aLastInRangeString = ScCellFormat::GetInputString(aCell, nFormat, &mrContext, rDoc);
}
else
@@ -519,7 +628,10 @@ bool ScQueryCellIteratorBase< accessType, queryType >::BinarySearch( SCCOL col,
size_t nMid = (nLo+nHi)/2;
size_t i = nMid;
- aCellData = aIndexer.getCell(i);
+ if (maParam.bByRow)
+ aCellData = aIndexer.getCell(i);
+ else
+ aCellData = aIndexer.getColCell(i, nRow);
aCell = aCellData.first;
bool bStr = bForceStr || aCell.hasString();
nRes = 0;
@@ -579,7 +691,9 @@ bool ScQueryCellIteratorBase< accessType, queryType >::BinarySearch( SCCOL col,
}
else if (bStr && bByString)
{
- sal_uInt32 nFormat = pCol->GetNumberFormat(mrContext, aCellData.second);
+ if (!maParam.bByRow)
+ pCol = &(rDoc.maTabs[nTab])->aCol[aCellData.second];
+ sal_uInt32 nFormat = pCol->GetNumberFormat(mrContext, maParam.bByRow ? aCellData.second : nRow);
OUString aCellStr = ScCellFormat::GetInputString(aCell, nFormat, &mrContext, rDoc);
nRes = rCollator.compareString(aCellStr, rEntry.GetQueryItem().maString.getString());
@@ -706,21 +820,44 @@ bool ScQueryCellIteratorBase< accessType, queryType >::BinarySearch( SCCOL col,
nLo = nLastInRange;
}
- aCellData = aIndexer.getCell(nLo);
- if (nLo <= nHi && aCellData.second <= maParam.nRow2)
+ if (maParam.bByRow)
{
- nRow = aCellData.second;
- maCurPos = aIndexer.getPosition(nLo);
- return isInRange;
+ aCellData = aIndexer.getCell(nLo);
+ if (nLo <= nHi && aCellData.second <= maParam.nRow2)
+ {
+ nRow = aCellData.second;
+ maCurPos = aIndexer.getPosition(nLo);
+ return isInRange;
+ }
+ else
+ {
+ nRow = maParam.nRow2 + 1;
+ // Set current position to the last possible row.
+ maCurPos.first = pCol->maCells.end();
+ --maCurPos.first;
+ maCurPos.second = maCurPos.first->size - 1;
+ return false;
+ }
}
else
{
- nRow = maParam.nRow2 + 1;
- // Set current position to the last possible row.
- maCurPos.first = pCol->maCells.end();
- --maCurPos.first;
- maCurPos.second = maCurPos.first->size - 1;
- return false;
+ aCellData = aIndexer.getColCell(nLo, nRow);
+ if (nLo <= nHi && aCellData.second <= maParam.nCol2)
+ {
+ nCol = aCellData.second;
+ maCurPos = aIndexer.getColPosition(nLo, nRow);
+ return isInRange;
+ }
+ else
+ {
+ nCol = maParam.nCol2 + 1;
+ // Set current position to the last possible col.
+ pCol = &(rDoc.maTabs[nTab])->aCol[maParam.nCol2];
+ maCurPos.first = pCol->maCells.end();
+ --maCurPos.first;
+ maCurPos.second = maCurPos.first->size - 1;
+ return false;
+ }
}
}
@@ -1034,7 +1171,7 @@ class ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::Direct >::No
BlockMapType maBlockMap;
- const sc::CellStoreType& mrCells;
+ const sc::CellStoreType* mpCells;
size_t mnLowIndex;
size_t mnHighIndex;
@@ -1048,14 +1185,14 @@ public:
* @param nEndRow logical end row position, inclusive.
*/
NonEmptyCellIndexer(
- const sc::CellStoreType& rCells, SCROW nStartRow, SCROW nEndRow) :
- mrCells(rCells), mnLowIndex(0), mnHighIndex(0), mbValid(true)
+ const sc::CellStoreType* pCells, SCROW nStartRow, SCROW nEndRow) :
+ mpCells(pCells), mnLowIndex(0), mnHighIndex(0), mbValid(true)
{
// Find the low position.
- sc::CellStoreType::const_position_type aLoPos = mrCells.position(nStartRow);
+ sc::CellStoreType::const_position_type aLoPos = mpCells->position(nStartRow);
assert(aLoPos.first->type != sc::element_type_empty);
- assert(aLoPos.first != rCells.end());
+ assert(aLoPos.first != mpCells->end());
SCROW nFirstRow = aLoPos.first->position;
SCROW nLastRow = aLoPos.first->position + aLoPos.first->size - 1;
@@ -1089,7 +1226,7 @@ public:
// Find the high position.
- sc::CellStoreType::const_position_type aHiPos = mrCells.position(aLoPos.first, nEndRow);
+ sc::CellStoreType::const_position_type aHiPos = mpCells->position(aLoPos.first, nEndRow);
if (aHiPos.first->type == sc::element_type_empty)
{
// Move to the last position of the previous block.
@@ -1124,7 +1261,7 @@ public:
if (itBlk->type == sc::element_type_empty)
++itBlk;
- assert(itBlk != mrCells.end());
+ assert(itBlk != mpCells->end());
}
assert(itBlk == aHiPos.first);
@@ -1144,7 +1281,7 @@ public:
assert(mnLowIndex <= nIndex);
assert(nIndex <= mnHighIndex);
- sc::CellStoreType::const_position_type aRet(mrCells.end(), 0);
+ sc::CellStoreType::const_position_type aRet(mpCells->end(), 0);
BlockMapType::const_iterator it = maBlockMap.upper_bound(nIndex);
if (it == maBlockMap.end())
@@ -1167,7 +1304,7 @@ public:
aRet.second = -1;
sc::CellStoreType::const_position_type aPos = getPosition(nIndex);
- if (aPos.first == mrCells.end())
+ if (aPos.first == mpCells->end())
return aRet;
aRet.first = sc::toRefCell(aPos.first, aPos.second);
@@ -1175,6 +1312,19 @@ public:
return aRet;
}
+ // TODO: NonEmptyCellIndexer for columns search
+ static sc::CellStoreType::const_position_type getColPosition(size_t /*nIndex*/, SCROW /*nRow*/)
+ {
+ return sc::CellStoreType::const_position_type();
+ }
+
+ // TODO: NonEmptyCellIndexer for columns search
+ static BinarySearchCellType getColCell(size_t /*nIndex*/, SCROW /*nRow*/)
+ {
+ BinarySearchCellType aRet;
+ return aRet;
+ }
+
size_t getLowIndex() const { return mnLowIndex; }
size_t getHighIndex() const { return mnHighIndex; }
@@ -1184,9 +1334,9 @@ public:
ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::Direct >::NonEmptyCellIndexer
ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::Direct >::MakeBinarySearchIndexer(
- const sc::CellStoreType& rCells, SCROW nStartRow, SCROW nEndRow )
+ const sc::CellStoreType* pCells, SCCOLROW nStartRow, SCCOLROW nEndRow)
{
- return NonEmptyCellIndexer(rCells, nStartRow, nEndRow);
+ return NonEmptyCellIndexer(pCells, nStartRow, nEndRow);
}
// Sorted access using ScSortedRangeCache.
@@ -1214,7 +1364,7 @@ void ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >
// over only matching rows in their sorted order (and for equal rows in their row order).
void ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >::InitPosStart(sal_uInt8 nSortedBinarySearch)
{
- ScRange aSortedRangeRange( nCol, maParam.nRow1, nTab, nCol, maParam.nRow2, nTab );
+ ScRange aSortedRangeRange( maParam.nCol1, maParam.nRow1, nTab, maParam.nCol2, maParam.nRow2, nTab );
// We want all matching values first in the sort order,
SetSortedRangeCache( rDoc.GetSortedRangeCache( aSortedRangeRange, maParam, &mrContext, nSortedBinarySearch ));
// InitPosFinish() needs to be called after this, ScQueryCellIteratorBase::InitPos()
@@ -1245,23 +1395,54 @@ void ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >
maCurPos.second = 0;
}
+void ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >::InitPosColFinish(
+ SCCOL beforeCol, SCCOL lastCol, bool bFirstMatch)
+{
+ pColumn = &rDoc.maTabs[nTab]->CreateColumnIfNotExists(nCol);
+ if (lastCol >= 0)
+ {
+ sortedCachePos = beforeCol >= 0 ? sortedCache->indexForCol(beforeCol) + 1 : 0;
+ sortedCachePosLast = sortedCache->indexForCol(lastCol);
+ if (sortedCachePos <= sortedCachePosLast)
+ {
+ if (!bFirstMatch)
+ nCol = sortedCache->colForIndex(sortedCachePos);
+ else
+ nCol = sortedCache->colForIndex(sortedCachePosLast);
+ pColumn = &rDoc.maTabs[nTab]->CreateColumnIfNotExists(nCol);
+ maCurPos = pColumn->maCells.position(nRow);
+ return;
+ }
+ }
+ // No cols, set to end.
+ sortedCachePos = sortedCachePosLast = 0;
+ maCurPos.first = pColumn->maCells.end();
+ maCurPos.second = 0;
+}
+
template<bool fast>
bool ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >::IncPosImpl()
{
if(sortedCachePos < sortedCachePosLast)
{
++sortedCachePos;
- nRow = sortedCache->rowForIndex(sortedCachePos);
+ if (maParam.bByRow)
+ nRow = sortedCache->rowForIndex(sortedCachePos);
+ else
+ nCol = sortedCache->colForIndex(sortedCachePos);
#ifndef DBG_UTIL
if constexpr (!fast)
#endif
{
- // Avoid mdds position() call if row is in the same block.
- if(maCurPos.first != pColumn->maCells.end() && o3tl::make_unsigned(nRow) >= maCurPos.first->position
- && o3tl::make_unsigned(nRow) < maCurPos.first->position + maCurPos.first->size)
- maCurPos.second = nRow - maCurPos.first->position;
- else
- maCurPos = pColumn->maCells.position(nRow);
+ if (maParam.bByRow)
+ {
+ // Avoid mdds position() call if row is in the same block.
+ if (maCurPos.first != pColumn->maCells.end() && o3tl::make_unsigned(nRow) >= maCurPos.first->position
+ && o3tl::make_unsigned(nRow) < maCurPos.first->position + maCurPos.first->size)
+ maCurPos.second = nRow - maCurPos.first->position;
+ else
+ maCurPos = pColumn->maCells.position(nRow);
+ }
}
return true;
}
@@ -1269,6 +1450,8 @@ bool ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >
{
// This will make PerformQuery() go to next column.
// Necessary even in fast mode, as GetNext() will call GetThis() in this case.
+ if (!maParam.bByRow)
+ ++nRow;
maCurPos.first = pColumn->maCells.end();
maCurPos.second = 0;
return false;
@@ -1284,50 +1467,71 @@ bool ScQueryCellIteratorAccessSpecific<ScQueryCellIteratorAccess::SortedCache>::
// Rows in the given range are kept in a sorted vector and that vector is binary-searched.
class ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >::SortedCacheIndexer
{
- std::vector<SCROW> mSortedRowsCopy;
- const std::vector<SCROW>& mSortedRows;
- const sc::CellStoreType& mCells;
+ std::vector<SCCOLROW> mSortedColsRowsCopy;
+ const std::vector<SCCOLROW>& mSortedColsRows;
+ ScDocument& mrDoc;
+ const sc::CellStoreType* mpCells;
size_t mLowIndex;
size_t mHighIndex;
bool mValid;
+ SCTAB mnTab;
- const std::vector<SCROW>& makeSortedRows( const ScSortedRangeCache* cache, SCROW startRow, SCROW endRow )
+ const std::vector<SCCOLROW>& makeSortedColsRows( const ScSortedRangeCache* cache, SCCOLROW startColRow, SCCOLROW endColRow )
{
- // Keep a reference to rows from the cache if equal, otherwise make a copy.
- if(startRow == cache->getRange().aStart.Row() && endRow == cache->getRange().aEnd.Row())
- return cache->sortedRows();
+ // Keep a reference to cols/rows from the cache if equal, otherwise make a copy.
+ if (cache->isRowSearch())
+ {
+ if (startColRow == cache->getRange().aStart.Row() && endColRow == cache->getRange().aEnd.Row())
+ return cache->sortedRows();
+ else
+ {
+ mSortedColsRowsCopy.reserve(cache->sortedRows().size());
+ for (SCROW row : cache->sortedRows())
+ if (row >= startColRow && row <= endColRow)
+ mSortedColsRowsCopy.emplace_back(row);
+ return mSortedColsRowsCopy;
+ }
+ }
else
{
- mSortedRowsCopy.reserve( cache->sortedRows().size());
- for( SCROW row : cache->sortedRows())
- if( row >= startRow && row <= endRow )
- mSortedRowsCopy.emplace_back( row );
- return mSortedRowsCopy;
+ if (startColRow == cache->getRange().aStart.Col() && endColRow == cache->getRange().aEnd.Col())
+ return cache->sortedCols();
+ else
+ {
+ mSortedColsRowsCopy.reserve(cache->sortedCols().size());
+ for (SCCOL col : cache->sortedCols())
+ if (col >= startColRow && col <= endColRow)
+ mSortedColsRowsCopy.emplace_back(col);
+ return mSortedColsRowsCopy;
+ }
}
}
public:
- SortedCacheIndexer( const sc::CellStoreType& cells, SCROW startRow, SCROW endRow,
+ SortedCacheIndexer( ScDocument& rDoc, const sc::CellStoreType* cells,
+ SCCOLROW startColRow, SCCOLROW endColRow, SCTAB nTab,
const ScSortedRangeCache* cache )
- : mSortedRows( makeSortedRows( cache, startRow, endRow ))
- , mCells( cells )
+ : mSortedColsRows( makeSortedColsRows( cache, startColRow, endColRow))
+ , mrDoc( rDoc )
+ , mpCells( cells )
, mValid( false )
+ , mnTab( nTab )
{
- if(mSortedRows.empty())
+ if(mSortedColsRows.empty())
{
// coverity[uninit_member] - these are initialized only if valid
return;
}
mLowIndex = 0;
- mHighIndex = mSortedRows.size() - 1;
+ mHighIndex = mSortedColsRows.size() - 1;
mValid = true;
}
sc::CellStoreType::const_position_type getPosition( size_t nIndex ) const
{
// TODO optimize?
- SCROW row = mSortedRows[ nIndex ];
- return mCells.position(row);
+ SCROW row = mSortedColsRows[ nIndex ];
+ return mpCells->position(row);
}
BinarySearchCellType getCell( size_t nIndex ) const
@@ -1336,7 +1540,7 @@ public:
aRet.second = -1;
sc::CellStoreType::const_position_type aPos = getPosition(nIndex);
- if (aPos.first == mCells.end())
+ if (aPos.first == mpCells->end())
return aRet;
aRet.first = sc::toRefCell(aPos.first, aPos.second);
@@ -1344,6 +1548,30 @@ public:
return aRet;
}
+ sc::CellStoreType::const_position_type getColPosition( size_t nColIndex, SCROW nRowPos ) const
+ {
+ // TODO optimize?
+ SCCOL col = mSortedColsRows[nColIndex];
+ if (col >= mrDoc.maTabs[mnTab]->GetAllocatedColumnsCount())
+ return sc::CellStoreType::const_position_type();
+
+ const ScColumn& rCol = mrDoc.maTabs[mnTab]->aCol[col];
+ return rCol.maCells.position(nRowPos);
+ }
+
+ BinarySearchCellType getColCell( size_t nColIndex, SCROW nRowPos) const
+ {
+ BinarySearchCellType aRet;
+ aRet.second = -1;
+
+ sc::CellStoreType::const_position_type aPos = getColPosition(nColIndex, nRowPos);
+
+ aRet.first = sc::toRefCell(aPos.first, aPos.second);
+ aRet.second = mSortedColsRows[nColIndex];
+
+ return aRet;
+ }
+
size_t getLowIndex() const { return mLowIndex; }
size_t getHighIndex() const { return mHighIndex; }
@@ -1353,9 +1581,9 @@ public:
ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >::SortedCacheIndexer
ScQueryCellIteratorAccessSpecific< ScQueryCellIteratorAccess::SortedCache >::MakeBinarySearchIndexer(
- const sc::CellStoreType& rCells, SCROW nStartRow, SCROW nEndRow)
+ const sc::CellStoreType* pCells, SCCOLROW nStartRow, SCCOLROW nEndRow)
{
- return SortedCacheIndexer(rCells, nStartRow, nEndRow, sortedCache);
+ return SortedCacheIndexer(rDoc, pCells, nStartRow, nEndRow, nTab, sortedCache);
}
static bool CanBeUsedForSorterCache(ScDocument& /*rDoc*/, const ScQueryParam& /*rParam*/,
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index df0e56ab6bb0..d9f78695cbd8 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -11385,26 +11385,41 @@ bool ScInterpreter::SearchRangeForValue( VectorSearchArguments& vsa, ScQueryPara
}
else
{
- // search of columns in row
rParam.bByRow = false;
- bool bReverseSearch = (vsa.eSearchMode == searchrev);
- ScQueryCellIteratorDirect aCellIter(mrDoc, mrContext, vsa.nTab1, rParam, false, bReverseSearch);
- // Advance Entry.nField in Iterator if column changed
- aCellIter.SetAdvanceQueryParamEntryField(true);
- aCellIter.SetLookupMode(vsa.nSearchOpCode);
- // TODO: no binary search for column (horizontal) search (use linear)
- aCellIter.SetSortedBinarySearchMode(vsa.eSearchMode);
- if (rEntry.eOp == SC_EQUAL)
+ bool bBinarySearch = vsa.eSearchMode == searchbasc || vsa.eSearchMode == searchbdesc;
+ if (bBinarySearch && (vsa.nSearchOpCode == SC_OPCODE_X_LOOKUP || vsa.nSearchOpCode == SC_OPCODE_X_MATCH))
{
+ ScQueryCellIteratorSortedCache aCellIter(mrDoc, mrContext, rParam.nTab, rParam, false, false);
+ // Advance Entry.nField in Iterator if column changed
+ aCellIter.SetAdvanceQueryParamEntryField(true);
+ aCellIter.SetSortedBinarySearchMode(vsa.eSearchMode);
+ aCellIter.SetLookupMode(vsa.nSearchOpCode);
if (aCellIter.GetFirst())
+ {
vsa.nHitIndex = aCellIter.GetCol() - vsa.nCol1 + 1;
+ }
}
else
{
- SCCOL nC;
- SCROW nR;
- if (aCellIter.FindEqualOrSortedLastInRange(nC, nR))
- vsa.nHitIndex = nC - vsa.nCol1 + 1;
+ // search of columns in row
+ bool bReverseSearch = (vsa.eSearchMode == searchrev);
+ ScQueryCellIteratorDirect aCellIter(mrDoc, mrContext, vsa.nTab1, rParam, false, bReverseSearch);
+ // Advance Entry.nField in Iterator if column changed
+ aCellIter.SetAdvanceQueryParamEntryField(true);
+ aCellIter.SetLookupMode(vsa.nSearchOpCode);
+ aCellIter.SetSortedBinarySearchMode(vsa.eSearchMode);
+ if (rEntry.eOp == SC_EQUAL)
+ {
+ if (aCellIter.GetFirst())
+ vsa.nHitIndex = aCellIter.GetCol() - vsa.nCol1 + 1;
+ }
+ else
+ {
+ SCCOL nC;
+ SCROW nR;
+ if (aCellIter.FindEqualOrSortedLastInRange(nC, nR))
+ vsa.nHitIndex = nC - vsa.nCol1 + 1;
+ }
}
}
}
diff --git a/sc/source/core/tool/rangecache.cxx b/sc/source/core/tool/rangecache.cxx
index 2e1ab5519148..e18dbace0f31 100644
--- a/sc/source/core/tool/rangecache.cxx
+++ b/sc/source/core/tool/rangecache.cxx
@@ -55,12 +55,15 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange,
: maRange(rRange)
, mpDoc(pDoc)
, mValid(false)
+ , mRowSearch(param.bByRow)
, mValueType(toValueType(param))
{
- assert(maRange.aStart.Col() == maRange.aEnd.Col());
+ if (mRowSearch)
+ assert(maRange.aStart.Col() == maRange.aEnd.Col());
+ else
+ assert(maRange.aStart.Row() == maRange.aEnd.Row());
assert(maRange.aStart.Tab() == maRange.aEnd.Tab());
SCTAB nTab = maRange.aStart.Tab();
- SCTAB nCol = maRange.aStart.Col();
assert(param.GetEntry(0).bDoQuery && !param.GetEntry(1).bDoQuery
&& param.GetEntry(0).GetQueryItems().size() == 1);
const ScQueryEntry& entry = param.GetEntry(0);
@@ -81,44 +84,48 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange,
if (mValueType == ValueType::Values)
{
- struct RowData
+ struct ColRowData
{
- SCROW row;
+ SCCOLROW col_row;
double value;
};
- std::vector<RowData> rowData;
- for (SCROW nRow = startRow; nRow <= endRow; ++nRow)
+
+ std::vector<ColRowData> colrowData;
+ for (SCCOL nCol = startCol; nCol <= endCol; ++nCol)
{
- ScRefCellValue cell(pDoc->GetRefCellValue(ScAddress(nCol, nRow, nTab)));
- if (ScQueryEvaluator::isQueryByValue(mQueryOp, mQueryType, cell))
- rowData.push_back(RowData{ nRow, cell.getValue() });
- else if (ScQueryEvaluator::isQueryByString(mQueryOp, mQueryType, cell))
+ for (SCROW nRow = startRow; nRow <= endRow; ++nRow)
{
- // Make sure that other possibilities in the generic handling
- // in ScQueryEvaluator::processEntry() do not alter the results.
- // (ByTextColor/ByBackgroundColor are blocked by CanBeUsedForSorterCache(),
- // but isQueryByString() is possible if the cell content is a string.
- // And including strings here would be tricky, as the string comparison
- // may possibly(?) be different than a numeric one. So check if the string
- // may possibly match a number, by converting it to one. If it can't match,
- // then it's fine to ignore it (and it can happen e.g. if the query uses
- // the whole column which includes a textual header). But if it can possibly
- // match, then bail out and leave it to the unoptimized case.
- // TODO Maybe it would actually work to use the numeric value obtained here?
- if (!ScQueryEvaluator::isMatchWholeCell(*pDoc, mQueryOp))
- return; // substring matching cannot be sorted
- sal_uInt32 format = 0;
- double value;
- if (context->NFIsNumberFormat(cell.getString(pDoc), format, value))
- return;
+ ScRefCellValue cell(pDoc->GetRefCellValue(ScAddress(nCol, nRow, nTab)));
+ if (ScQueryEvaluator::isQueryByValue(mQueryOp, mQueryType, cell))
+ colrowData.push_back(ColRowData{ mRowSearch ? nRow : nCol, cell.getValue() });
+ else if (ScQueryEvaluator::isQueryByString(mQueryOp, mQueryType, cell))
+ {
+ // Make sure that other possibilities in the generic handling
+ // in ScQueryEvaluator::processEntry() do not alter the results.
+ // (ByTextColor/ByBackgroundColor are blocked by CanBeUsedForSorterCache(),
+ // but isQueryByString() is possible if the cell content is a string.
+ // And including strings here would be tricky, as the string comparison
+ // may possibly(?) be different than a numeric one. So check if the string
+ // may possibly match a number, by converting it to one. If it can't match,
+ // then it's fine to ignore it (and it can happen e.g. if the query uses
+ // the whole column which includes a textual header). But if it can possibly
+ // match, then bail out and leave it to the unoptimized case.
+ // TODO Maybe it would actually work to use the numeric value obtained here?
+ if (!ScQueryEvaluator::isMatchWholeCell(*pDoc, mQueryOp))
+ return; // substring matching cannot be sorted
+ sal_uInt32 format = 0;
+ double value;
+ if (context->NFIsNumberFormat(cell.getString(pDoc), format, value))
+ return;
+ }
}
}
if (nSortedBinarySearch == 0x00) //nBinarySearchDisabled = 0x00
{
std::stable_sort(
- rowData.begin(), rowData.end(),
- [](const RowData& d1, const RowData& d2) { return d1.value < d2.value; });
+ colrowData.begin(), colrowData.end(),
+ [](const ColRowData& d1, const ColRowData& d2) { return d1.value < d2.value; });
}
else if (nSortedBinarySearch == 0x01) //nSearchbAscd
{
@@ -127,45 +134,62 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange,
else /*(nSortedBinarySearch == 0x02) nSearchbDesc*/
{
// expected it is already sorted properly in Desc mode, just need to reverse.
- std::reverse(rowData.begin(), rowData.end());
+ std::reverse(colrowData.begin(), colrowData.end());
}
if (needsDescending(entry.eOp))
- for (auto it = rowData.rbegin(); it != rowData.rend(); ++it)
- mSortedRows.emplace_back(it->row);
+ {
+ for (auto it = colrowData.rbegin(); it != colrowData.rend(); ++it)
+ {
+ if (mRowSearch)
+ mSortedRows.emplace_back(it->col_row);
+ else
+ mSortedCols.emplace_back(it->col_row);
+ }
+ }
else
- for (const RowData& d : rowData)
- mSortedRows.emplace_back(d.row);
+ {
+ for (const ColRowData& d : colrowData)
+ {
+ if (mRowSearch)
+ mSortedRows.emplace_back(d.col_row);
+ else
+ mSortedCols.emplace_back(d.col_row);
+ }
+ }
}
else
{
- struct RowData
+ struct ColRowData
{
- SCROW row;
+ SCCOLROW col_row;
OUString string;
};
- std::vector<RowData> rowData;
+ std::vector<ColRowData> colrowData;
// Try to reuse as much ScQueryEvaluator code as possible, this should
// basically do the same comparisons.
assert(pDoc->FetchTable(nTab) != nullptr);
ScQueryEvaluator evaluator(*pDoc, *pDoc->FetchTable(nTab), param, context);
- for (SCROW nRow = startRow; nRow <= endRow; ++nRow)
+ for (SCCOL nCol = startCol; nCol <= endCol; ++nCol)
{
- ScRefCellValue cell(pDoc->GetRefCellValue(ScAddress(nCol, nRow, nTab)));
- // This should be used only with ScQueryEntry::ByString, and that
- // means that ScQueryEvaluator::isQueryByString() should be the only
- // possibility in the generic handling in ScQueryEvaluator::processEntry()
- // (ByTextColor/ByBackgroundColor are blocked by CanBeUsedForSorterCache(),
- // and isQueryByValue() is blocked by ScQueryEntry::ByString).
- assert(mQueryType == ScQueryEntry::ByString);
- assert(!ScQueryEvaluator::isQueryByValue(mQueryOp, mQueryType, cell));
- if (ScQueryEvaluator::isQueryByString(mQueryOp, mQueryType, cell))
+ for (SCROW nRow = startRow; nRow <= endRow; ++nRow)
{
- const svl::SharedString* sharedString = nullptr;
- OUString string = evaluator.getCellString(cell, nRow, nCol, &sharedString);
- if (sharedString)
- string = sharedString->getString();
- rowData.push_back(RowData{ nRow, string });
+ ScRefCellValue cell(pDoc->GetRefCellValue(ScAddress(nCol, nRow, nTab)));
+ // This should be used only with ScQueryEntry::ByString, and that
+ // means that ScQueryEvaluator::isQueryByString() should be the only
+ // possibility in the generic handling in ScQueryEvaluator::processEntry()
+ // (ByTextColor/ByBackgroundColor are blocked by CanBeUsedForSorterCache(),
+ // and isQueryByValue() is blocked by ScQueryEntry::ByString).
+ assert(mQueryType == ScQueryEntry::ByString);
+ assert(!ScQueryEvaluator::isQueryByValue(mQueryOp, mQueryType, cell));
+ if (ScQueryEvaluator::isQueryByString(mQueryOp, mQueryType, cell))
+ {
+ const svl::SharedString* sharedString = nullptr;
+ OUString string = evaluator.getCellString(cell, nRow, nCol, &sharedString);
+ if (sharedString)
+ string = sharedString->getString();
+ colrowData.push_back(ColRowData{ mRowSearch ? nRow : nCol, string });
+ }
}
}
CollatorWrapper& collator
@@ -173,8 +197,8 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange,
if (nSortedBinarySearch == 0x00) //nBinarySearchDisabled = 0x00
{
- std::stable_sort(rowData.begin(), rowData.end(),
- [&collator](const RowData& d1, const RowData& d2) {
+ std::stable_sort(colrowData.begin(), colrowData.end(),
+ [&collator](const ColRowData& d1, const ColRowData& d2) {
return collator.compareString(d1.string, d2.string) < 0;
});
}
@@ -185,20 +209,43 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange,
else /*(nSortedBinarySearch == 0x02) nSearchbDesc*/
{
// expected it is already sorted properly in Desc mode, just need to reverse.
- std::reverse(rowData.begin(), rowData.end());
+ std::reverse(colrowData.begin(), colrowData.end());
}
if (needsDescending(entry.eOp))
- for (auto it = rowData.rbegin(); it != rowData.rend(); ++it)
- mSortedRows.emplace_back(it->row);
+ {
+ for (auto it = colrowData.rbegin(); it != colrowData.rend(); ++it)
+ {
+ if (mRowSearch)
+ mSortedRows.emplace_back(it->col_row);
+ else
+ mSortedCols.emplace_back(it->col_row);
+ }
+ }
else
- for (const RowData& d : rowData)
- mSortedRows.emplace_back(d.row);
+ {
+ for (const ColRowData& d : colrowData)
+ {
+ if (mRowSearch)
+ mSortedRows.emplace_back(d.col_row);
+ else
+ mSortedCols.emplace_back(d.col_row);
+ }
+ }
}
- mRowToIndex.resize(maRange.aEnd.Row() - maRange.aStart.Row() + 1, mSortedRows.max_size());
- for (size_t i = 0; i < mSortedRows.size(); ++i)
- mRowToIndex[mSortedRows[i] - maRange.aStart.Row()] = i;
+ if (mRowSearch)
+ {
+ mRowToIndex.resize(maRange.aEnd.Row() - maRange.aStart.Row() + 1, mSortedRows.max_size());
+ for (size_t i = 0; i < mSortedRows.size(); ++i)
+ mRowToIndex[mSortedRows[i] - maRange.aStart.Row()] = i;
+ }
+ else
+ {
+ mColToIndex.resize(maRange.aEnd.Col() - maRange.aStart.Col() + 1, mSortedCols.max_size());
+ for (size_t i = 0; i < mSortedCols.size(); ++i)
+ mColToIndex[mSortedCols[i] - maRange.aStart.Col()] = i;
+ }
mValid = true;
}