Home » Number Each Character

Number Each Character

Insert 1., 2., and so on before characters of each word and separate these by space. The numbers restart for each word. Hence if word is 1. “ab”, then answer would be 1.a 2.b 2. “Leo Tolstoy”, then answer would be 1.L 2.e 3.o 1.T 2.o 3.l 4.s 5.t 6.o 7.y

📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 209
Challenge Difficulty: ⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn

Solving the challenge of Number Each Character with Power Query

Power Query solution 1 for Number Each Character, proposed by Bo Rydobon 🇹🇭:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Ans = Table.TransformRows(
    Source, 
    each Text.Combine(
      List.Transform(
        Text.Split([Strings], " "), 
        (a) =>
          Text.Combine(
            List.Transform(
              {1 .. Text.Length(a)}, 
              each Text.From(_) & "." & Text.Middle(a, _ - 1, 1)
            ), 
            " "
          )
      ), 
      " "
    )
  )
in
  Ans
Power Query solution 2 for Number Each Character, proposed by Zoran Milokanović:
let
  Source = Excel.CurrentWorkbook(){[Name = "Input"]}[Content], 
  Solution = Table.TransformRows(
    Source, 
    each 
      let
        l = Text.ToList([Strings])
      in
        Text.Replace(
          Text.Combine(
            List.Transform(
              List.Positions(l), 
              each Text.From(_ - List.PositionOf(List.FirstN(l, _ + 1), " ", 1)) & "." & l{_}
            ), 
            " "
          ), 
          "0. ", 
          ""
        )
  )
in
  Solution
Power Query solution 3 for Number Each Character, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
  Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Sol = Table.AddColumn(
    Source, 
    "Answer", 
    each 
      let
        a = Text.Split([Strings], " "), 
        b = List.Transform(a, Text.ToList), 
        c = List.Transform(
          {0 .. List.Count(b) - 1}, 
          (x) => List.Transform({1 .. List.Count(b{x})}, each Text.From(_) & "." & b{x}{_ - 1})
        )
      in
        Text.Combine(List.Combine(c), " ")
  )[[Answer]]
in
  Sol
Power Query solution 4 for Number Each Character, proposed by Luan Rodrigues:
let
  Fonte = Tabela1, 
  rs = Table.AddColumn(
    Fonte, 
    "Personalizar", 
    each [
      a = List.Transform(
        Text.Split([Strings], " "), 
        (x) =>
          List.Transform(List.Transform({1 .. Text.Length(x)}, each Text.From(_)), each _ & ".")
      ), 
      b = List.Transform(Text.Split([Strings], " "), (x) => Text.ToList(x)), 
      c = Text.Replace(
        Text.Combine(
          List.Transform(
            List.Transform(List.Zip({a, b}), each List.Zip(_)), 
            each Text.Combine(List.Combine(_), " ")
          ), 
          " "
        ), 
        ". ", 
        "."
      )
    ][c]
  )
in
  rs
Power Query solution 5 for Number Each Character, proposed by Brian Julius:
let
  Source = Table.DuplicateColumn(
    Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
    "Strings", 
    "Words"
  ), 
  SplitWordsToRows = Table.ExpandListColumn(
    Table.TransformColumns(
      Source, 
      {
        {
          "Words", 
          Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), 
          let
            itemType = (type nullable text) meta [Serialized.Text = true]
          in
            type {itemType}
        }
      }
    ), 
    "Words"
  ), 
  ToLetters = Table.ExpandListColumn(
    Table.AddColumn(SplitWordsToRows, "Letters", each Text.ToList([Words])), 
    "Letters"
  ), 
  Group = Table.Group(
    ToLetters, 
    {"Strings", "Words"}, 
    {{"All", each _, type table [Strings = text, Words = nullable text, Letters = text]}}
  ), 
  AddIndex = Table.SelectColumns(
    Table.AddColumn(Group, "Index", each Table.AddIndexColumn([All], "Index", 1, 1)), 
    "Index"
  ), 
  Expand = Table.ExpandTableColumn(
    AddIndex, 
    "Index", 
    {"Strings", "Letters", "Index"}, 
    {"Strings", "Letters", "Index.1"}
  ), 
  CombineText = Table.SelectColumns(
    Table.AddColumn(Expand, "Custom", each Text.Combine({Text.From([Index.1]), [Letters]}, ".")), 
    {"Strings", "Custom"}
  ), 
  Regroup = Table.Group(CombineText, {"Strings"}, {{"Answer", each [Custom]}}), 
  Extract = Table.TransformColumns(
    Regroup, 
    {"Answer", each Text.Combine(List.Transform(_, Text.From), " "), type text}
  )
in
  Extract

Solving the challenge of Number Each Character with Excel

Excel solution 1 for Number Each Character, proposed by Bo Rydobon 🇹🇭:
=MAP(A2:A10,LAMBDA(a,TEXTJOIN(" ",,MAP(TEXTSPLIT(a," "),LAMBDA(b,LET(s,SEQUENCE(LEN(b)),TEXTJOIN(" ",,s&"."&MID(b,s,1))))))))
Excel solution 2 for Number Each Character, proposed by Bo Rydobon 🇹🇭:
=MAP(A2:A10,LAMBDA(a,LET(s,SEQUENCE(,20),m,MID(TEXTSPLIT(a,," "),s,1),TEXTJOIN(" ",,REPT(s&"."&m,m>"")))))
Excel solution 3 for Number Each Character, proposed by Rick Rothstein:
=MAP(A2:A10,LAMBDA(a,TRIM(REDUCE("",TEXTSPLIT(a," "),LAMBDA(a,x,LET(s,SEQUENCE(LEN(x)),a&" "&TEXTJOIN(" ",,s&"."&MID(x,s,1))))))))
Excel solution 4 for Number Each Character, proposed by John V.:
=MAP(A2:A10,LAMBDA(x,LET(s,ROW(1:15),c,MID(TEXTSPLIT(x," "),s,1),TEXTJOIN(" ",,TOCOL(REPT(s&"."&c,c>""),,1)))))
Excel solution 5 for Number Each Character, proposed by محمد حلمي:
=MAP(A2:A10,LAMBDA(a,LET(s,SEQUENCE(,20),r,MID(TEXTSPLIT(a,," "),s,1),TEXTJOIN(" ",,IF(r>"",s&"."&r,"")))))
Excel solution 6 for Number Each Character, proposed by محمد حلمي:
=MAP(A2:A10,LAMBDA(a,LET(s,ROW(1:99),r,s&"."&MID(TEXTSPLIT(a," "),s,1),TEXTJOIN(" ",,TOCOL(IFS(ISERR(-r),r),2,2)))))
Excel solution 7 for Number Each Character, proposed by Kris Jaganah:
=MAP(A2:A10,LAMBDA(z,LET(a,MID(z,SEQUENCE(LEN(z)),1),b,SCAN(0,a,LAMBDA(x,y,IF(y=" ",0,x+1))),TEXTJOIN({"."," "},1,FILTER(HSTACK(b,a),a<>" ")))))
Excel solution 8 for Number Each Character, proposed by Julian Poeltl:
=MAP(A2:A10,LAMBDA(S,TRIM(CONCAT(MAP(TEXTSPLIT(S," "),LAMBDA(A,CONCAT(LET(S,SEQUENCE(LEN(A)),S&"."&MID(A,S,1)&" "))))))))
Excel solution 9 for Number Each Character, proposed by Timothée BLIOT:
=TRIM(MAP(A2:A10,LAMBDA(t,TEXTJOIN(" ",,MAP(TEXTSPLIT(t," "),LAMBDA(x,LET(A,MID(x,SEQUENCE(LEN(x)),1)&" ",B,SEQUENCE(LEN(x))&".",CONCAT(TOCOL(HSTACK(B,A))))))))))
Excel solution 10 for Number Each Character, proposed by Oscar Mendez Roca Farell:
=MAP(A2:A10, LAMBDA(a, LET(_t, TEXTSPLIT(a, ," "), TEXTJOIN("", , MAP(_t, LAMBDA(b, LET(_c, SEQUENCE(LEN(b)),_w, MID(b,_c,1), CONCAT(_c&"."&_w&" "))))))))
Excel solution 11 for Number Each Character, proposed by Duy Tùng:
=MAP(A2:A10,LAMBDA(v,LET(a,MID(v,SEQUENCE(LEN(v)),1),b,SCAN(0,a,LAMBDA(x,y,IF(y>" ",x+1,0))),TEXTJOIN(" ",,FILTER(HSTACK(b&"."&a),b)))))
Excel solution 12 for Number Each Character, proposed by Sunny Baggu:
=MAP(
 A2:A10,
 LAMBDA(x,
 LET(
 _m, MID(x, SEQUENCE(LEN(x)), 1),
 _num, TOROW(SCAN(0, _m, LAMBDA(a, v, IF(v = CHAR(32), 0, a + 1)))),
 _tbl, IF(_m <> CHAR(32), _num & "." & _m, NA()),
 _col, TOCOL(IF(MUNIT(LEN(x)), _tbl, NA()), 3),
 TRIM(CONCAT(_col & " "))
 )
 )
)
Excel solution 13 for Number Each Character, proposed by Sunny Baggu:
=MAP(
 A2:A10,
 LAMBDA(str,
 LET(
 _tsplit, TEXTSPLIT(str, , " "),
 _tlen, LEN(_tsplit),
 _num, DROP(REDUCE("", _tlen, LAMBDA(a, v, VSTACK(a, SEQUENCE(, v)))), 1),
 _let, DROP(REDUCE("", _tsplit, LAMBDA(x, y, VSTACK(x, MID(y, SEQUENCE(, LEN(y)), 1)))), 1),
 TRIM(CONCAT(TOCOL(_num & "." & _let, 3) & " "))
 )
 )
)
Excel solution 14 for Number Each Character, proposed by Md. Zohurul Islam:
=MAP(A2:A10,LAMBDA(x,LET(
a,TEXTSPLIT(x," "),
b,MAP(a,LAMBDA(y,LET(sq,SEQUENCE(LEN(y)),p,MID(y,sq,1),q,TEXTJOIN(" ",,sq&"."&p),q))),
d,TEXTJOIN(" ",,b),
d)))
Excel solution 15 for Number Each Character, proposed by Pieter de B.:
=MAP(A2:A10,LAMBDA(a,REDUCE("",TEXTSPLIT(a," "),LAMBDA(x,y,LET(s,SEQUENCE(LEN(y)),m,MID(y,s,1),TEXTJOIN(" ",,x,s&"."&m))))))
Excel solution 16 for Number Each Character, proposed by Charles Roldan:
=LET(M, LAMBDA(f, LAMBDA(x, MAP(x, f))),
 J, LAMBDA(x, TEXTJOIN(" ", , x)),
 S, LAMBDA(x, SEQUENCE(LEN(x))),
 A, M(LAMBDA(x, J(S(x) & "." & MID(x, S(x), 1)))),
 f, M(LAMBDA(x, J(A(TEXTSPLIT(x, , " "))))),    f(A2:A10))
Excel solution 17 for Number Each Character, proposed by Tolga Demirci, PMP, PMI-ACP, MOS-Expert:
=MAP(A2:A10;LAMBDA(b;TEXTJOIN(;;TEXTSPLIT(CONCAT(MAP(TOCOL(TEXTSPLIT(b;" "));LAMBDA(a;TEXTJOIN(;;VSTACK(TEXTJOIN(;;SEQUENCE(LEN(a))&"/");"?")))));"?";"/";TRUE;0;1)&"."&LET(x;MID(b;SEQUENCE(LEN(b));1);FILTER(x;x<>" "))&" ")))
Excel solution 18 for Number Each Character, proposed by Stefan Olsson:
=BYROW(A2:A10, 
LAMBDA(string, 
REDUCE("", SPLIT(string, " ", 1, 1), 
LAMBDA(ans, word, 
ans®EXREPLACE(word, REPT("(.)", LEN(word)), REDUCE("", SEQUENCE(LEN(word)), LAMBDA(c, n, c&n&".$"&n&" ")))
))))
Excel solution 19 for Number Each Character, proposed by Julien Lacaze:
=MAP(A2:A10,LAMBDA(a,TEXTJOIN(" ",1,MAP(TEXTSPLIT(a," "),LAMBDA(b,TEXTJOIN(" ",1,SEQUENCE(LEN(b))&"."&MID(b,SEQUENCE(LEN(b)),1)))))))
Excel solution 20 for Number Each Character, proposed by Giorgi Goderdzishvili:
=LET(
string,A2,
seq, SEQUENCE(,LEN(string)),
chars,MID(string,SEQUENCE(,LEN(string)),1),
scanning, SCAN(0,chars, LAMBDA(x,y, IF(y=" ",0,x+1))),
maping, MAP(scanning,chars, LAMBDA(s,c, IF(c=" ", "", s&"."&c&" "))),
REPLACE(CONCAT(maping),LEN(CONCAT(maping)),1,""))
Excel solution 21 for Number Each Character, proposed by Guillermo Arroyo:
=MAP(A2:A10;LAMBDA(a;TEXTJOIN(" ";;MAP(TEXTSPLIT(a;" ");LAMBDA(b;LET(l;SEQUENCE(LEN(b));TEXTJOIN(" ";;l&"."&MID(b;l;1))))))))
Excel solution 22 for Number Each Character, proposed by Daniel Garzia:
=MAP(A2:A10,LAMBDA(w,TEXTJOIN(" ",,MAP(TEXTSPLIT(w," "),LAMBDA(x,LET(s,SEQUENCE(LEN(x)),TEXTJOIN(" ",,s&"."&MID(x,s,1))))))))
Excel solution 23 for Number Each Character, proposed by Quadri Olayinka Atharu:
=MAP(A2:A10,LAMBDA(x,
LET(_sp,TEXTSPLIT(x," "),
_l,LEN(_sp),
_c,DROP(REDUCE(0,_l,LAMBDA(a,b,VSTACK(a,SEQUENCE(b)))),1)&".",
_ns,CONCAT(_sp),
_t,MID(_ns,SEQUENCE(LEN(_ns)),1),
TEXTJOIN(" ",1,_c&_t))))

WHERE 
_sp, SPLITTED TEXT BY SPACES,
_l,    LENGHT OF SPLITTED TEXT(_sp)
Excel solution 24 for Number Each Character, proposed by Anup Kumar:
=BYROW(A2:A10,LAMBDA(a, LET(
txt,a,
splttxt,TEXTSPLIT(txt,," "),
TEXTJOIN(" ",,MAP(splttxt,
LAMBDA(arr,
TEXTJOIN(" ",,SEQUENCE(LEN(arr))&"."&MID(arr,SEQUENCE(LEN(arr)),1)))))
)))
Excel solution 25 for Number Each Character, proposed by Rayan S.:
=MAP(A2:A10,LAMBDA(arr,LET(split, TRANSPOSE(TEXTSPLIT(arr, " ")), TEXTJOIN(" ",,MAP(split, LAMBDA(x, TEXTJOIN(" ",,SEQUENCE(LEN(x))&"."&MID(x, SEQUENCE(LEN(x)), 1))))))))
Excel solution 26 for Number Each Character, proposed by Henriette Hamer:
=MAP(A2:A10;LAMBDA(_data;TEXTJOIN(" ";TRUE;MAP(TEXTSPLIT(_data;;" ");LAMBDA(_split;TEXTJOIN(" ";TRUE;SEQUENCE(;LEN(_split))&"."&MID(_split;SEQUENCE(;LEN(_split));1)))))))
Excel solution 27 for Number Each Character, proposed by Vinay BN:
=LET(
 val, A2,
 sp, MID(val, SEQUENCE(LEN(val)), 1),
 num, SCAN(
 0,
 sp,
 LAMBDA(x, y, IF(y = " ", 0, x + 1))
 ),
 fsp, FILTER(sp, sp <> " "),
 fnum, FILTER(num, num <> 0),
 stack, HSTACK(fnum, fsp),
 join, TEXTJOIN(".", TRUE, stack),
 join
)

&&&

Leave a Reply