sc/source/core/data/formulacell.cxx         |    2 +-
 sc/source/core/data/grouptokenconverter.cxx |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

New commits:
commit 502b26b8f9a3d6e1252ff142fd00a3096ce95962
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Jan 26 10:46:33 2023 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Jan 27 08:49:37 2023 +0000

    crashtesting: assert seen in forum-mso-en4-192558.xlsx
    
    assert is assert(rRange.aStart.Tab() == rRange.aEnd.Tab());
    
    sheel 1 cell E6 contains =IFERROR(VLOOKUP(D6,a6:'sheet1'!b495,3,FALSE()),"")
    note: sheel 1 E7 is      
=IFERROR(VLOOKUP(D7,$Sheet1.A7:Search.B499,3,FALSE()),"")
    
    aRef.Ref1.Tab() and aRef.Ref2.Tab() are the same, but IsTabRel differs,
    so the input address with a tab 1 results in an output range with start
    and end of different tabs.
    
    do the comparison with the result range, by analogy do the same
    adjustment in ScGroupTokenConverter where the comparison was introduced
    for
    
    commit ca1f051972946b24cb6658143fb0d0ac3587a988
    Date:   Fri Mar 10 18:32:27 2017 +0100
    
        Resolves: tdf#106459 3D reference can't be handled as vector reference
    
    and basically copied and pasted here.
    
    FWIW in forum-mso-en4-192558.xlsx the original formulas in xlsx are:
    IFERROR(VLOOKUP(D6,A6:'Sheet1'!B495,3,FALSE),"")
    IFERROR(VLOOKUP(D7,A7:B499:'Sheet1'!B496,3,FALSE),"")
    
    Change-Id: I69e3ca2f89008b81500789b1bca39b35685de8d5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146166
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sc/source/core/data/formulacell.cxx 
b/sc/source/core/data/formulacell.cxx
index 023a4214bd93..143b27579a83 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -4508,7 +4508,7 @@ struct ScDependantsCalculator
                     ScRange aAbs = aRef.toAbs(mrDoc, mrPos);
 
                     // Multiple sheet
-                    if (aRef.Ref1.Tab() != aRef.Ref2.Tab())
+                    if (aAbs.aStart.Tab() != aAbs.aEnd.Tab())
                         return false;
 
                     bool bIsRef1RowRel = aRef.Ref1.IsRowRel();
diff --git a/sc/source/core/data/grouptokenconverter.cxx 
b/sc/source/core/data/grouptokenconverter.cxx
index 07fefbccbb55..4d427fc32bab 100644
--- a/sc/source/core/data/grouptokenconverter.cxx
+++ b/sc/source/core/data/grouptokenconverter.cxx
@@ -195,7 +195,7 @@ bool ScGroupTokenConverter::convert( const ScTokenArray& 
rCode, sc::FormulaLogge
                 ScRange aAbs = aRef.toAbs(mrDoc, mrPos);
 
                 // Multiple sheets not handled by vector/matrix.
-                if (aRef.Ref1.Tab() != aRef.Ref2.Tab())
+                if (aAbs.aStart.Tab() != aAbs.aEnd.Tab())
                     return false;
 
                 // Check for self reference.

Reply via email to