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 textArgumentos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| pNumero | any | Sim | Número ou texto a formatar. O sinal negativo é descartado. |
| pNumeroDeCaracteres | nullable number | Sim | Tamanho 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.