web-dev-qa-db-fra.com

L'empilement de plusieurs formules de requête génère "un littéral Array manquait pour une ou plusieurs lignes"

J'essaie d'exécuter plusieurs requêtes dans lesquelles des lignes sont ajoutées. Si F est vide, il les ignore, puis réexécute la requête et remplace la ligne F par la ligne G.

J'ai une formule beaucoup plus compliquée qui fait la même chose mais plus de variations, colonnes D (vierges ou non) - E et F (vierges ou non) - G

La formule suivante fonctionne

=SORT(ArrayFormula({
 IFERROR(QUERY('6 Star Gear Sets (Hidden)'!A6:AA,
  "select A, B, C, D, F, H, N, I, J, K, L, M 
   where A != ' ' AND D IS NOT NULL AND F IS NOT NULL order by F desc")); 
 IFERROR(QUERY('6 Star Gear Sets (Hidden)'!A6:AA, 
  "select A, B, C, E, F, H, N, I, J, K, L, M 
   where A != ' ' AND D IS NULL AND F IS NOT NULL order by F desc")); 
 IFERROR(QUERY('6 Star Gear Sets (Hidden)'!A6:AA, 
  "select A, B, C, D, G, H, N, I, J, K, L, M 
   where A != ' ' AND D IS NOT NULL AND F IS NULL order by F desc")); 
 IFERROR(QUERY('6 Star Gear Sets (Hidden)'!A6:AA, 
  "select A, B, C, E, G, H, N, I, J, K, L, M 
   where A != ' ' AND D IS NULL AND F IS NULL order by F desc"))
 }),5,FALSE)

Mais ma version plus simple de la même formule renvoie une erreur

=SORT(ArrayFormula({
 IFERROR(QUERY('5 Star Clubs (Hidden)'!A6:Z, 
  "select A, B, C, D, E, F, H, I 
   where A != ' ' AND F IS NOT NULL")); 
 IFERROR(QUERY('5 Star Gear Clubs (Hidden)'!A6:Z, 
  "select A, B, C, D, E, G, H, I 
   where A != ' ' AND F IS NULL"))
 }),7,FALSE)

L'erreur est la suivante: dans ARRAY_LITERAL, un littéral de tableau manquait des valeurs pour une ou plusieurs lignes.

Un lien vers une copie des feuilles de Google est comme suit:

https://docs.google.com/spreadsheets/d/1s6spmfCVP6P331Zr9xfE9kiei3Wly6FRQCdA8Y3e7tA/edit?usp=drivesdk .


Question supplémentaire

FORMULE MISE À JOUR de la formule de travail d'origine

=SORT( ArrayFormula( { IFERROR( QUERY( '6 Star Gear Sets (Hidden)'!A6:AA, "select A, B, C, D, F, H, N, I, J, K, L, M where A != ' ' AND D IS NOT NULL AND F IS NOT NULL order by F desc"),{"","","","","","","",""}); IFERROR( QUERY( '6 Star Gear Sets (Hidden)'!A6:AA, "select A, B, C, E, F, H, N, I, J, K, L, M where A != ' ' AND D IS NULL AND F IS NOT NULL order by F desc"),{"","","","","","","",""}); IFERROR( QUERY( '6 Star Gear Sets (Hidden)'!A6:AA, "select A, B, C, D, G, H, N, I, J, K, L, M where A != ' ' AND D IS NOT NULL AND F IS NULL order by F desc"),{"","","","","","","",""}); IFERROR( QUERY( '6 Star Gear Sets (Hidden)'!A6:AA, "select A, B, C, E, G, H, N, I, J, K, L, M where A != ' ' AND D IS NULL AND F IS NULL order by F desc"),{"","","","","","","",""}) } ) ,5,FALSE,4,FALSE)

TRAVAILLER AUTOUR

Dans la feuille des 6 formules d'engrenage en étoile (masqué), la formule fait référence à une ligne avec une colonne "zzzzz" et F et G sont vides. Lorsque cette ligne est appelée à l'aide de ArrayFormula ci-dessus, j'utilise un format conditionnel pour masquer toutes les lignes avec "zzzzz".

QUESTION

Si je supprime la ligne avec "zzzzz" dans la colonne A de la feuille masquée, je reçois une erreur .. pourquoi?

INFORMATIONS COMPLEMENTAIRES

Diviser la formule en forumlas QUERY individuels et supprimer IFERROR indique que la 3ème requête est vide et renvoie une erreur # N/A, mais la 4ème requête ne renvoie également aucun résultat et ne génère pas une telle erreur. J'ai pensé que l'instruction IFERROR traiterait cela, mais en vain.

UPDATE

Trouvé la 4ème requête ne retourne pas vide. Il renvoie en fait des cellules vides. Ce qui encore ajoute à la liste des questions. Parce que j'ai la fonction IFERROR supprimée et where A != ' ' je pensais que cela gèrerait cela. N'est-ce pas là que A NE CORRESPOND PAS?

J'ai essayé de l'intégrer dans une formule IF (IFNA ()) mais je suppose que vous ne pouvez pas utiliser IFNA en dehors du formatage conditionnel car il indique que IFNA () n'est pas une fonction connue.

UPDATE 2

Pour une raison quelconque, j'ai immédiatement oublié la partie concernant le nombre d'arguments vides dans l'instruction IFERROR qui doit correspondre au nombre de colonnes référencées.

Cependant, = SORT ne fonctionne plus correctement car il y a maintenant une ligne vide en haut de la nouvelle table et je n'ai toujours pas de bonne explication sur la raison pour laquelle la 4ème requête remplit la table avec des lignes vides.

UPDATE 3

Dans la colonne A de ma feuille "6 Star Gear Sets", j'ai une formule qui numérote tout dans l'ordre dans lequel ils apparaissent sauf si la colonne B est vide. Pour une raison quelconque, la ligne vide insérée en raison de = IFERROR (,) n'est pas traitée comme telle.

De plus, my = SORT ordonne tout dans l'ordre décroissant de la colonne F puis de la colonne E. Cependant, il considère F et E dans la ligne vide insérée comme la ligne de valeur la plus élevée.

FORMULE MISE À JOUR

=SORT( ArrayFormula( { IFERROR( QUERY( '6 Star Gear Sets (Hidden)'!A6:AA, "select A, B, C, D, F, H, N, I, J, K, L, M where A != ' ' AND D IS NOT NULL AND F IS NOT NULL order by F desc"),{"","","","","","","","","","","",""}); IFERROR( QUERY( '6 Star Gear Sets (Hidden)'!A6:AA, "select A, B, C, E, F, H, N, I, J, K, L, M where A != ' ' AND D IS NULL AND F IS NOT NULL order by F desc"),{"","","","","","","","","","","",""}); IFERROR( QUERY( '6 Star Gear Sets (Hidden)'!A6:AA, "select A, B, C, D, G, H, N, I, J, K, L, M where A != ' ' AND D IS NOT NULL AND F IS NULL order by F desc"),{"","","","","","","","","","","",""}); IFERROR( QUERY( '6 Star Gear Sets (Hidden)'!A6:AA, "select A, B, C, E, G, H, N, I, J, K, L, M where A != ' ' AND D IS NULL AND F IS NULL order by F desc"),{"","","","","","","","","","","",""}) } ) ,5,FALSE,4,FALSE)

LIEN MIS À JOUR

Vous trouverez ci-dessous une copie mise à jour de ma feuille de calcul.

https://docs.google.com/spreadsheets/d/17Ev1_Scobnl16H9TuTrHK_es7fZGkMqHyvmpWWWVbow/edit?usp=drivesdk

6
Melly Lilly

Lorsque vous empilez des tableaux verticalement, ils doivent avoir le même nombre de colonnes. En cas d'erreur, query génère un cellule unique avec #REF ou # N/A ou un autre message. Vous mettez iferror wrapper autour de lui, mais cela ne fait que rendre la sortie est une vide cellule. Le problème, c’est une cellule et il vous faut 8 colonnes pour correspondre à l’autre tableau.

Solution: ajoutez une ligne vide de 8 cellules comme second argument de iferror, à utiliser en cas d'erreur.

=SORT(ArrayFormula({
 IFERROR(QUERY('5 Star Clubs (Hidden)'!A6:Z, 
  "select A, B, C, D, E, F, H, I 
   where A != ' ' AND F IS NOT NULL"),  
 {"","","","","","","",""}); 
 IFERROR(QUERY('5 Star Gear Clubs (Hidden)'!A6:Z, 
  "select A, B, C, D, E, G, H, I 
   where A != ' ' AND F IS NULL"),
 {"","","","","","","",""})
 }),7,FALSE)

Plus précisément, l'erreur se produit car il n'y a pas de feuille nommée "Clubs 5 étoiles (caché)". Suggestion: lorsqu'une formule génère une erreur, entrez ses parties dans des cellules séparées (sans wrapper iferror) pour voir ce qu'elles font.

6
user135384

INTRODUCTION

J'ai résolu les problèmes qui se trouvent dans UPDATE 1 à 3 dans la question initiale. Cependant, j'estime que la formule est un peu compliquée et qu'il devrait y avoir une réponse beaucoup plus simple.

EXPLICATION

J'ai ajouté à la formule les fonctions IF et INDEX qui résolvent la formule précédente en ajoutant de nombreuses lignes vides, ainsi que des lignes vierges non vraies qui posent problème avec le tri et d'autres formules permettant de vérifier si la ligne vierge non vraie est réellement vierge. J'ai ajouté 1 fonction IF et INDEX pour chaque interrogation.

J'ai également modifié les instructions IFERROR en créant des cellules vides, mais en faisant référence aux cellules qui sont de véritables blancs.

L'instruction IF utilise une partie de la formule d'origine pour vérifier les résultats de la formule QUERY. La fonction INDEX limite la vérification à la première ligne. La vérification de la requête est ensuite comparée à 12 colonnes vierges et à une seule ligne.

IF TRUE: Il fait simplement référence à une vraie ligne vide au lieu de En créant ses propres lignes vides, la création de lignes vierges ne finissait pas par être de vraies lignes vides, ce qui entraînait tous les problèmes précédents.

IF FALSE: Il exécute la formule d'origine en ajoutant à la table les cellules appropriées de la feuille de référence.

EFFET SECONDAIRE

Ce n'est pas un problème pour mes feuilles, mais quelqu'un qui essaie de reproduire une formule similaire peut remarquer que chaque fois que la requête ajoute une vraie ligne vide, vous ne pourrez rien ajouter dans ces cellules car cette formule génèrera une erreur en essayant d'écrire. la cellule vide dans cette partie de la table.

J'ai essayé d'utiliser la fonction FILTER pour ne renvoyer que le nombre de lignes contenant réellement des données dans la feuille référencée, mais cela a entraîné beaucoup d'erreurs EXPECTED.

FORMULE MISE À JOUR

=SORT(
ArrayFormula(
    {
        IF(
            IFERROR(
                INDEX(
                    QUERY(
                        '6 Star Gear Sets (Hidden)'!A6:AA, 
                        "select A, B, C, D, F, H, N, I, J, K, L, M 
                        where A != ' ' AND D IS NOT NULL AND F IS NOT NULL"
                    ),
                1,0
                ),
                {
                    '6 Star Gear Sets (Hidden)'!A1001,
                    '6 Star Gear Sets (Hidden)'!B1001,
                    '6 Star Gear Sets (Hidden)'!C1001,
                    '6 Star Gear Sets (Hidden)'!D1001,
                    '6 Star Gear Sets (Hidden)'!E1001,
                    '6 Star Gear Sets (Hidden)'!F1001,
                    '6 Star Gear Sets (Hidden)'!G1001,
                    '6 Star Gear Sets (Hidden)'!H1001,
                    '6 Star Gear Sets (Hidden)'!I1001,
                    '6 Star Gear Sets (Hidden)'!J1001,
                    '6 Star Gear Sets (Hidden)'!K1001,
                    '6 Star Gear Sets (Hidden)'!L1001
                }
            )
            ={"","","","","","","","","","","",""},
            {
                '6 Star Gear Sets (Hidden)'!A1001,
                '6 Star Gear Sets (Hidden)'!B1001,
                '6 Star Gear Sets (Hidden)'!C1001,
                '6 Star Gear Sets (Hidden)'!D1001,
                '6 Star Gear Sets (Hidden)'!E1001,
                '6 Star Gear Sets (Hidden)'!F1001,
                '6 Star Gear Sets (Hidden)'!G1001,
                '6 Star Gear Sets (Hidden)'!H1001,
                '6 Star Gear Sets (Hidden)'!I1001,
                '6 Star Gear Sets (Hidden)'!J1001,
                '6 Star Gear Sets (Hidden)'!K1001,
                '6 Star Gear Sets (Hidden)'!L1001
            },
            QUERY(
                '6 Star Gear Sets (Hidden)'!A6:AA, 
                "select A, B, C, D, F, H, N, I, J, K, L, M 
                where A != ' ' AND D IS NOT NULL AND F IS NOT NULL"
            )
        ); 
        IF(
            IFERROR(
                INDEX(
                    QUERY(
                        '6 Star Gear Sets (Hidden)'!A6:AA, 
                        "select A, B, C, E, F, H, N, I, J, K, L, M 
                        where A != ' ' AND D IS NULL AND F IS NOT NULL AND E IS NOT NULL"
                    ),
                1,0
                ),
                {
                    '6 Star Gear Sets (Hidden)'!A1001,
                    '6 Star Gear Sets (Hidden)'!B1001,
                    '6 Star Gear Sets (Hidden)'!C1001,
                    '6 Star Gear Sets (Hidden)'!D1001,
                    '6 Star Gear Sets (Hidden)'!E1001,
                    '6 Star Gear Sets (Hidden)'!F1001,
                    '6 Star Gear Sets (Hidden)'!G1001,
                    '6 Star Gear Sets (Hidden)'!H1001,
                    '6 Star Gear Sets (Hidden)'!I1001,
                    '6 Star Gear Sets (Hidden)'!J1001,
                    '6 Star Gear Sets (Hidden)'!K1001,
                    '6 Star Gear Sets (Hidden)'!L1001
                }
            )
            ={"","","","","","","","","","","",""},
            {
                '6 Star Gear Sets (Hidden)'!A1001,
                '6 Star Gear Sets (Hidden)'!B1001,
                '6 Star Gear Sets (Hidden)'!C1001,
                '6 Star Gear Sets (Hidden)'!D1001,
                '6 Star Gear Sets (Hidden)'!E1001,
                '6 Star Gear Sets (Hidden)'!F1001,
                '6 Star Gear Sets (Hidden)'!G1001,
                '6 Star Gear Sets (Hidden)'!H1001,
                '6 Star Gear Sets (Hidden)'!I1001,
                '6 Star Gear Sets (Hidden)'!J1001,
                '6 Star Gear Sets (Hidden)'!K1001,
                '6 Star Gear Sets (Hidden)'!L1001
            },
            QUERY(
                '6 Star Gear Sets (Hidden)'!A6:AA, 
                "select A, B, C, E, F, H, N, I, J, K, L, M 
                where A != ' ' AND D IS NULL AND F IS NOT NULL AND E IS NOT NULL"
            )
        ); 
        IF(
            IFERROR(
                INDEX(
                    QUERY(
                        '6 Star Gear Sets (Hidden)'!A6:AA, 
                        "select A, B, C, E, F, H, N, I, J, K, L, M 
                        where A != ' ' AND D IS NULL AND F IS NOT NULL AND E IS NULL"
                    ),
                1,0
                ),
                {
                    '6 Star Gear Sets (Hidden)'!A1001,
                    '6 Star Gear Sets (Hidden)'!B1001,
                    '6 Star Gear Sets (Hidden)'!C1001,
                    '6 Star Gear Sets (Hidden)'!D1001,
                    '6 Star Gear Sets (Hidden)'!E1001,
                    '6 Star Gear Sets (Hidden)'!F1001,
                    '6 Star Gear Sets (Hidden)'!G1001,
                    '6 Star Gear Sets (Hidden)'!H1001,
                    '6 Star Gear Sets (Hidden)'!I1001,
                    '6 Star Gear Sets (Hidden)'!J1001,
                    '6 Star Gear Sets (Hidden)'!K1001,
                    '6 Star Gear Sets (Hidden)'!L1001
                }
            )
            ={"","","","","","","","","","","",""},
            {
                '6 Star Gear Sets (Hidden)'!A1001,
                '6 Star Gear Sets (Hidden)'!B1001,
                '6 Star Gear Sets (Hidden)'!C1001,
                '6 Star Gear Sets (Hidden)'!D1001,
                '6 Star Gear Sets (Hidden)'!E1001,
                '6 Star Gear Sets (Hidden)'!F1001,
                '6 Star Gear Sets (Hidden)'!G1001,
                '6 Star Gear Sets (Hidden)'!H1001,
                '6 Star Gear Sets (Hidden)'!I1001,
                '6 Star Gear Sets (Hidden)'!J1001,
                '6 Star Gear Sets (Hidden)'!K1001,
                '6 Star Gear Sets (Hidden)'!L1001
            },
            QUERY(
                '6 Star Gear Sets (Hidden)'!A6:AA, 
                "select A, B, C, E, F, H, N, I, J, K, L, M 
                where A != ' ' AND D IS NULL AND F IS NOT NULL AND E IS NULL"
            )
        );
        IF(
            IFERROR(
                INDEX(
                    QUERY(
                        '6 Star Gear Sets (Hidden)'!A6:AA, 
                        "select A, B, C, D, G, H, N, I, J, K, L, M 
                        where A != ' ' AND D IS NOT NULL AND F IS NULL"
                    ),
                1,0
                ),
                {
                    '6 Star Gear Sets (Hidden)'!A1001,
                    '6 Star Gear Sets (Hidden)'!B1001,
                    '6 Star Gear Sets (Hidden)'!C1001,
                    '6 Star Gear Sets (Hidden)'!D1001,
                    '6 Star Gear Sets (Hidden)'!E1001,
                    '6 Star Gear Sets (Hidden)'!F1001,
                    '6 Star Gear Sets (Hidden)'!G1001,
                    '6 Star Gear Sets (Hidden)'!H1001,
                    '6 Star Gear Sets (Hidden)'!I1001,
                    '6 Star Gear Sets (Hidden)'!J1001,
                    '6 Star Gear Sets (Hidden)'!K1001,
                    '6 Star Gear Sets (Hidden)'!L1001
                }
            )
            ={"","","","","","","","","","","",""},
            {
                '6 Star Gear Sets (Hidden)'!A1001,
                '6 Star Gear Sets (Hidden)'!B1001,
                '6 Star Gear Sets (Hidden)'!C1001,
                '6 Star Gear Sets (Hidden)'!D1001,
                '6 Star Gear Sets (Hidden)'!E1001,
                '6 Star Gear Sets (Hidden)'!F1001,
                '6 Star Gear Sets (Hidden)'!G1001,
                '6 Star Gear Sets (Hidden)'!H1001,
                '6 Star Gear Sets (Hidden)'!I1001,
                '6 Star Gear Sets (Hidden)'!J1001,
                '6 Star Gear Sets (Hidden)'!K1001,
                '6 Star Gear Sets (Hidden)'!L1001
            },
            QUERY(
                '6 Star Gear Sets (Hidden)'!A6:AA, 
                "select A, B, C, D, G, H, N, I, J, K, L, M 
                where A != ' ' AND D IS NOT NULL AND F IS NULL"
            )
        );
        IF(
            IFERROR(
                INDEX(
                    QUERY(
                        '6 Star Gear Sets (Hidden)'!A6:AA, 
                        "select A, B, C, E, G, H, N, I, J, K, L, M 
                        where A != ' ' AND D IS NULL AND F IS NULL"
                    ),
                    1,0
                ),
                {
                    '6 Star Gear Sets (Hidden)'!A1001,
                    '6 Star Gear Sets (Hidden)'!B1001,
                    '6 Star Gear Sets (Hidden)'!C1001,
                    '6 Star Gear Sets (Hidden)'!D1001,
                    '6 Star Gear Sets (Hidden)'!E1001,
                    '6 Star Gear Sets (Hidden)'!F1001,
                    '6 Star Gear Sets (Hidden)'!G1001,
                    '6 Star Gear Sets (Hidden)'!H1001,
                    '6 Star Gear Sets (Hidden)'!I1001,
                    '6 Star Gear Sets (Hidden)'!J1001,
                    '6 Star Gear Sets (Hidden)'!K1001,
                    '6 Star Gear Sets (Hidden)'!L1001
                }
            )
            ={"","","","","","","","","","","",""},
            {
                '6 Star Gear Sets (Hidden)'!A1001,
                '6 Star Gear Sets (Hidden)'!B1001,
                '6 Star Gear Sets (Hidden)'!C1001,
                '6 Star Gear Sets (Hidden)'!D1001,
                '6 Star Gear Sets (Hidden)'!E1001,
                '6 Star Gear Sets (Hidden)'!F1001,
                '6 Star Gear Sets (Hidden)'!G1001,
                '6 Star Gear Sets (Hidden)'!H1001,
                '6 Star Gear Sets (Hidden)'!I1001,
                '6 Star Gear Sets (Hidden)'!J1001,
                '6 Star Gear Sets (Hidden)'!K1001,
                '6 Star Gear Sets (Hidden)'!L1001
            },
            QUERY(
                '6 Star Gear Sets (Hidden)'!A6:AA, 
                "select A, B, C, E, G, H, N, I, J, K, L, M 
                where A != ' ' AND D IS NULL AND F IS NULL"
            )
        )
    }
),
5,FALSE,4,FALSE,3,FALSE
)
1
Melly Lilly