0
votes

Concaténate variable avec des zéros de premier plan avec une autre chaîne

scénario

J'ai une cellule Excel contenant de la valeur avec des zéros de premier plan (par exemple: 0002). Ma macro est la copie de cette valeur à une variable appelée runnumber et la collant dans un autre fichier en concaténant ce exécutant avec une autre chaîne. Mais quand cela le fait, il me manque les principaux zéros de runnumber

codes

yeininyy = "19"

CINOMBE = "PFTPA-" & Anninyy & "-" & RunNumber

cellule de sortie montrant comme PFTPA-19-2

ce dont j'ai besoin

J'ai besoin de la cellule de sortie pour montrer

PFTPA-19-0002

Quelqu'un sait comment faire?


0 commentaires

3 Réponses :


1
votes

En supposant que le champ contenant le 0002 est formaté comme champ de texte puis travaille avec des cordes. Ici, je lis la lecture de la cellule A1. Cela signifie que vous pouvez traiter un nombre variable de zéros de premier plan.

Option Explicit
Public Sub test()
    Dim runNumber As String, yearInYy As String, ciNumber As String
    yearInYy = "19"
    runNumber = [A1]
    ciNumber = "PFTPA-" & yearInYy & "-" & runNumber
    Debug.Print ciNumber
End Sub


8 commentaires

Le problème avec votre méthode est que j'ai besoin de préférer des cellules de la source comme texte que je ne souhaite pas. La réponse d'une autre personne ci-dessus ne formera pas les cellules du texte de la source et ne formatera pas la variable de la variable dans la forme 0000. Je préfère faire de cette façon. Merci pour votre effort. Au fait, juste curieux de savoir ce que [A1] signifie? Ça veut dire plage ("A1"). Valeur?


J'essayais de répondre au fait que vous pouvez avoir un nombre variable de zéros et il n'y a aucune déclaration que ce nombre sera toujours la même longueur. De plus, si cette cellule n'est pas formatée de texte comment avez-vous les 000 à l'avant selon votre description? [] C'est une notation alternative pour la portée de la portée A1.


Il est toujours possible sans formater la cellule. Je suis capable de le faire avec l'aide d'une autre personne ici à Stackoverflow. Il fonctionne en suivant ce code CINAND = "PFTPA-" & Ternininy & "-" & Format (Runnumber, "0000")


Ce que je dis, c'est que vous avez dit que vous avez 0002 dans la cellule. Comment les zéros sont-ils présents si la cellule n'est pas formatée? Si vous n'aviez que 2 dans la cellule et que vous vouliez 0002, ce serait différent. Vous pouvez également utiliser le format $ plutôt que le format pour des gains d'efficacité mineurs.


Oh oui..Correct. Ma faute. J'ai demandé de cette façon dans la question. Mais quand je vois une méthode sans formatage pré-cellule, j'ai préféré de cette façon.


Ça va bien :-) Notez mon point sur le format de fonction dactylographié $


Bien sûr fera. Format $ est une réduction légèrement du temps de calcul, n'est-ce pas?


Dans ce cas, vous ne remarquerez pas mais en principe oui. Certainement si vous utilisez dans une longue boucle par exemple. Mérite juste d'être conscient de.



1
votes

Pour ajouter des zéros de tête à une chaîne, vous n'avez pas besoin de VBA, vous pouvez utiliser la formule Excel suivant pour ceci: xxx

Ça fonctionne comme suit: < ul>

  • Prenez la longueur de votre chaîne et soustrayez ceci à partir de 4 (cela vous donnera le nombre de caractères "0" dont vous avez besoin).
  • Créez une chaîne, qui consiste en une répétition de caractères "0".
  • concaténer cette répétition de chaînes à votre chaîne d'origine.

  • 0 commentaires

    2
    votes
    ciNumber = "PFTPA-" & yearInYy & "-" & Format(runNumber, "0000")
    Using the Format function, you can convert a date or number to a string with a specific format.  All we do here is require 4 digits, with leading zeros.The equivalent in Excel itself is the TEXT function

    0 commentaires