Code Library

M · UDF

fnFormatWithLeadingZeros

Completa um número ou texto com zeros à esquerda até o tamanho informado.

Categoria: FormataçãoTipo: UDFVersão: v1.4Fonte: Paulo André Jesus — OfficeTuningAtualizado em: 25/09/2026
Documentação completa na Function Library →

Sintaxe

fnFormatWithLeadingZeros(pNumero as any, pNumeroDeCaracteres as nullable number) as nullable text

Argumentos

NomeTipoObrigatórioDescrição
pNumeroanySimNúmero ou texto a formatar. O sinal negativo é descartado.
pNumeroDeCaracteresnullable numberSimTamanho final do texto. Mínimo 1; null vale 1.

Retorno

nullable text

Código completo

let
    fnFormatWithLeadingZeros = (pNumero as any, pNumeroDeCaracteres as nullable number) as nullable text =>
        let
            // Tamanho mínimo 1, sempre inteiro
            vTamanho = Int64.From(Number.RoundDown(List.Max({1, Number.Abs(pNumeroDeCaracteres ?? 1)}))),
            // Número vira texto sem sinal (cultura fixa: 1.5 não vira "1,5"); o resto vira texto sem espaços
            vTexto =
                if pNumero = null then null
                else if pNumero is number then Text.From(Number.Abs(pNumero), "en-US")
                else if pNumero is text then Text.Trim(pNumero)
                else Text.Trim(Text.From(pNumero)),
            // Texto vazio ou "#" vira null; "-" inicial é removido
            vLimpo =
                if vTexto = null or vTexto = "" or vTexto = "#" then null
                else if Text.StartsWith(vTexto, "-") then Text.End(vTexto, Text.Length(vTexto) - 1)
                else vTexto
        in
            if vLimpo = null then null else Text.PadStart(vLimpo, vTamanho, "0"),

    Documentacao = [
        Documentation.Name = "fnFormatWithLeadingZeros",
        Documentation.Description = "Completa um número ou texto com zeros à esquerda.",
        Documentation.LongDescription = "Recebe um número ou texto e o tamanho desejado. Descarta o sinal negativo. Tamanho mínimo 1. Valor nulo, vazio ou ""#"" retorna null.",
        Documentation.Category = "Formatação",
        Documentation.Author = "Paulo André Jesus",
        Documentation.Version = "1.4",
        Documentation.Examples = {
            [Description = "Número", Code = "fnFormatWithLeadingZeros(25, 5)", Result = """00025"""],
            [Description = "Número negativo", Code = "fnFormatWithLeadingZeros(-7, 3)", Result = """007"""],
            [Description = "Texto já com zeros", Code = "fnFormatWithLeadingZeros(""0012"", 6)", Result = """000012"""],
            [Description = "Maior que o tamanho", Code = "fnFormatWithLeadingZeros(12345, 3)", Result = """12345"""]
        }
    ]
in
    Value.ReplaceType(fnFormatWithLeadingZeros, Value.ReplaceMetadata(Value.Type(fnFormatWithLeadingZeros), Documentacao))

Exemplos

fnFormatWithLeadingZeros(25, 5)
// "00025"

fnFormatWithLeadingZeros(-7, 3)
// "007"

fnFormatWithLeadingZeros(12345, 3)
// "12345"  (maior que o tamanho: volta inteiro)

Dicas e observações

⚠️ O sinal é descartado de propósito: -7 vira "007". 💡 Número vira texto com cultura fixa (en-US): 1.5 não vira "1,5". 💡 Valor nulo, vazio ou "#" retorna null.