0
votes

Excel / SQL, exclure la dernière "," dans la plage nommée

J'ai une liste de valeurs que j'utilise pour un clause de mon énoncé SQL de feuille Excel.

Cependant, la dernière valeur a toujours cette fin , .

Y a-t-il de toute façon je peux changer ma plage nommée pour exclure la dernière virgule?

ce que j'ai essayé:

"" "& $ a6 &" '" pour remplacer la dernière ligne , avec ce 'AP' . Cependant, mes gammes nommées montrent dans l'ordre alphabétique lorsque je l'utilise dans ma clause Where. Donc, 'ap' ne sera pas la dernière valeur.

J'ai une liste de valeurs comme ci-dessous: xxx

Il s'agit de la formule I utilisée: xxx

Ma clause où: xxx


8 commentaires

Votre question est un peu trompeuse. Utilisez-vous formule ou vba pour cela? Ou peut-être utiliser la formule dans votre vba ?


La liste d'entrée d'origine incluait-elle la virgule ou est-ce que celle-ci est ajoutée par votre code de référence? Si ce dernier, pouvez-vous s'il vous plaît inclus ce code.


Formule pour ma portée nommée. L'instruction SQL est dirigée par VBA.


La liste d'entrée d'origine n'inclut pas la virgule, j'ajoute 'nom', à chacun à l'aide d'une formule. Ensuite, j'ajoute une formule finale à avoir 'nom'


Comment construisez-vous le SQL? Il suffit de le sortir, Strawhere = xyz, Strait = gauche (Straither, Len (Streillle) -1)


Hey @nathan_sav, puis-je faire cet ajustement à ma clause Où? Voir mon édition. J'utilise une formule pour ma clause Where.


GAUCHE (TEXTJOINIFS (CHAR (10), 24,2, NAMEDRANGE), LEN (TEXTJOINIFS (C HAR (10), 24,2, NAMEDRA NGE) & ")") - 1) J'utiliserais une variable pour les résultats de la jointure, puis gauche (Straither, Len (Streight) -1)


Soupir pourquoi je ne peux pas avoir ce travail! Je reçois toujours 'tor', comme ma fin de ma plage. Ceci est ma clause actuelle où, position dans "&" ("et à gauche (Textjoinifs (Char (10), 24,2, Nom de marque2), Len (Textjoinifs (Char (10), 24,2, Bookn Ame2 ) & ")") - 1)


3 Réponses :


0
votes

Ce code très basique coupera toutes les valises de la fin d'une chaîne: xxx


0 commentaires

2
votes

Comme vous utilisez une gamme qui est déjà un tableau, utilisez rejoindre au lieu de la concaténation manuelle. Gardez simplement vos valeurs réelles dans la cellule et n'ajoutez pas , ou ' dans la cellule elle-même.

Voir les commentaires du code pour plus de détails.


xxx

4 commentaires

Salut, merci pour cela. 1) Est-ce que "TestNamedRange" est ma plage nommée avant de l'avoir été appliquée? 2) Où ce code va-t-il émettre les résultats?


1. TestNamedRange est votre gamme nommée avec des valeurs de prédicat SQL. 2. Ceci est juste un sous-test, stresult contiendra la chaîne finale. Contactez-le en une fonction si vous devez le consommer à l'intérieur d'une autre routine.


Pouvons-nous simplement cracher une chaîne résultat d'une cellule spécifique? Je veux la cracher à une cellule et utiliser cela comme ma clause.


Vous pouvez, juste chercher Comment créer un UDF dans VBA .



0
votes
Function RemoveLastComma (InputString as String)
    RemoveLastComma = Application.Worksheetfunction.Left(InputString ,Len(InputString)-1)
End Function

0 commentaires