Resolves: tdf#109409 TEXTJOIN() CONCAT() handle array/matrix row-wise

... like references, instead of column-wise.

Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101034
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit ff3955db7161b8644699d7a0128ec4a6e7e525ec)

 merge conflicts: sc/source/core/tool/interpr8.cxx

Change-Id: If3ada9b197dd15c95b0da50464c70844fb7685ee
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101058
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sc/source/core/tool/interpr8.cxx b/sc/source/core/tool/interpr8.cxx
index 9fc1e79..92ea9ab 100644
--- a/sc/source/core/tool/interpr8.cxx
+++ b/sc/source/core/tool/interpr8.cxx
@@ -1474,9 +1474,9 @@ void ScInterpreter::ScConcat_MS()
                        SetError(FormulaError::IllegalArgument);
                    else
                    {
                        for ( SCSIZE j = 0; j < nC; j++ )
                        for (SCSIZE k = 0; k < nR; ++k)
                        {
                            for (SCSIZE k = 0; k < nR; k++ )
                            for (SCSIZE j = 0; j < nC; ++j)
                            {
                                if ( pMat->IsStringOrEmpty( j, k ) )
                                {
@@ -1602,9 +1602,9 @@ void ScInterpreter::ScTextJoin_MS()
                        SetError(FormulaError::IllegalArgument);
                    else
                    {
                        for ( SCSIZE j = 0; j < nC; j++ )
                        for (SCSIZE k = 0; k < nR; ++k)
                        {
                            for (SCSIZE k = 0; k < nR; k++ )
                            for (SCSIZE j = 0; j < nC; ++j)
                            {
                                if ( !pMat->IsEmpty( j, k ) )
                                {
@@ -1782,9 +1782,9 @@ void ScInterpreter::ScTextJoin_MS()
                        else
                        {
                            OUString aStr;
                            for ( SCSIZE j = 0; j < nC; j++ )
                            for (SCSIZE k = 0; k < nR; ++k)
                            {
                                for (SCSIZE k = 0; k < nR; k++ )
                                for (SCSIZE j = 0; j < nC; ++j)
                                {
                                    if ( !pMat->IsEmpty( j, k ) )
                                    {