Home » Blend RGB Colors into Hex

Blend RGB Colors into Hex

To blend hex color, take the average (round to 0) of respective Rs, Gs and Bs of two colors and generate the Hex color for the result. Color1 = 236, 121, 253 Color2 = 140, 21, 171 Average of respective Rs, Gs and Bs = 188, 71, 212

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

Solving the challenge of Blend RGB Colors into Hex with Power Query

Power Query solution 1 for Blend RGB Colors into Hex, proposed by Aditya Kumar Darak 🇮🇳:
let
  Source = Excel.CurrentWorkbook(){[Name = "data"]}[Content], 
  Return = Table.AddColumn(
    Source, 
    "Answer", 
    each [
      C1 = List.Transform(Text.Split([Color1], ", "), Number.From), 
      C2 = List.Transform(Text.Split([Color2], ", "), Number.From), 
      Z  = List.Zip({C1, C2}), 
      O  = List.Transform(Z, (f) => Number.ToText(Number.RoundUp(List.Average(f), 0), "X2")), 
      R  = "#" & Text.Combine(O)
    ][R]
  )
in
  Return
Power Query solution 2 for Blend RGB Colors into Hex, proposed by Ramiro Ayala Chávez:
let
  S = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content], 
  Fx = (x, y) =>
    let
      C1 = x, 
      C2 = y, 
      L  = List.Transform, 
      a  = L(Text.Split(C1, ", "), Number.From), 
      b  = L(Text.Split(C2, ", "), Number.From), 
      c  = L({0 .. List.Count(b) - 1}, each {a{_}} & {b{_}}), 
      d  = L(c, each Number.RoundUp(List.Average(_))), 
      e  = L(d, each Number.ToText(_, "X")), 
      f  = L(e, each if Text.Length(_) = 1 then "0" & _ else _), 
      g  = "#" & Text.Combine(f)
    in
      g, 
  Sol = Table.AddColumn(S, "Answer Expected", each Fx([Color1], [Color2]))
in
  Sol
Power Query solution 3 for Blend RGB Colors into Hex, proposed by Arnaud Duvernois:
let
  Source = Excel.CurrentWorkbook(){[Name = "tSourceXl425"]}[Content], 
  List1 = List.TransformMany(Source[Color1], (s) => Text.Split(s, ", "), (s, y) => Number.From(y)), 
  List2 = List.TransformMany(Source[Color2], (s) => Text.Split(s, ", "), (s, y) => Number.From(y)), 
  ListAverage = List.Transform(List.Zip({List1, List2}), List.Average), 
  Split = List.Split(List.Transform(ListAverage, each Number.ToText(Number.RoundUp(_, 0), "X2")), 3), 
  Combine = Table.FromColumns(
    {List.Transform(Split, each "#" & Text.Combine(_))}, 
    {"Answer expected"}
  )
in
  Combine

Solving the challenge of Blend RGB Colors into Hex with Excel

Excel solution 1 for Blend RGB Colors into Hex, proposed by Bo Rydobon 🇹🇭:
=MAP(A2:A10&"/"&B2:B10,
    LAMBDA(a,
    CONCAT("#",
    DEC2HEX((MMULT(
        {1,
        1},
        --TEXTSPLIT(
            a,
            ", ",
            "/"
        )
    )+1)/2,
    2))))
Excel solution 2 for Blend RGB Colors into Hex, proposed by Rick Rothstein:
=MAP(A2:A10,
    B2:B10,
    LAMBDA(a,
    b,
    "#"&CONCAT(DEC2HEX((1+TEXTSPLIT(
        a,
        ","
    )+TEXTSPLIT(
        b,
        ","
    ))/2,
    2))))
Excel solution 3 for Blend RGB Colors into Hex, proposed by John V.:
=MAP(
    A2:A10,
    B2:B10,
    LAMBDA(
        a,
        b,
        CONCAT(
            "#",
            DEC2HEX(
                -INT(
                    BYCOL(
                        -TEXTSPLIT(
                            a&"-"&b,
                            ", ",
                            "-"
                        ),
                        SUM
                    )/2
                ),
                2
            )
        )
    )
)
Excel solution 4 for Blend RGB Colors into Hex, proposed by محمد حلمي:
=MAP(
    A2:A10,
    B2:B10,
    LAMBDA(
        a,
        b,
        
        CONCAT(
            "#",
            RIGHT(
                0&DEC2HEX(
                    -BYCOL(
                        VSTACK(
                            -TEXTSPLIT(
                                a,
                                ","
                            ),
                            -TEXTSPLIT(
                                b,
                                ","
                            )
                        ),
                        LAMBDA(
                            a,
                            ROUNDUP(
                                AVERAGE(
                                    a
                                ),
                                
                            )
                        )
                    )
                ),
                2
            )
        )
    )
)
Excel solution 5 for Blend RGB Colors into Hex, proposed by Kris Jaganah:
=MAP(
    A2:A10,
    B2:B10,
    LAMBDA(
        v,
        w,
        "#"&CONCAT(
            MAP(
                ROUND(
                    MMULT(
                        {1,
                        1},
                        --TEXTSPLIT(
                            v&"."&w,
                            ",",
                            "." 
                        )
                    )/2,
                    0
                ),
                LAMBDA(
                    x,
                    DEC2HEX(
                        x,
                        2
                    )
                )
            )
        )
    )
)
Excel solution 6 for Blend RGB Colors into Hex, proposed by Julian Poeltl:
=BYROW(A2:B10,
    LAMBDA(c,
    LET(O,
    TEXTSPLIT(
        TAKE(
            c,
            ,
            1
        ),
        ", "
    ),
    T,
     TEXTSPLIT(
         TAKE(
             c,
             ,
             -1
         ),
         ", "
     ),
    CONCAT("#",
    DEC2HEX(ROUNDUP((O+T)/2,
    0),
    2)))))
Shorter and unstructured:
=BYROW(A2:B10,
    LAMBDA(A,
    CONCAT("#",
    DEC2HEX(ROUNDUP((TEXTSPLIT(
        TAKE(
            A,
            ,
            1
        );", "
    )+TEXTSPLIT(
        TAKE(
            A,
            ,
            -1
        ),
        ", "
    ))/2,
    0),
    2))))
Excel solution 7 for Blend RGB Colors into Hex, proposed by Aditya Kumar Darak 🇮🇳:
=MAP(A2:A10,
     B2:B10,
     LAMBDA(a,
    b,
     CONCAT("#",
     DEC2HEX(ROUNDUP((TEXTSPLIT(
         a,
          ", "
     ) + TEXTSPLIT(
         b,
          ", "
     )) / 2,
     0),
     2))))
Excel solution 8 for Blend RGB Colors into Hex, proposed by Timothée BLIOT:
=MAP(A2:A10,
    B2:B10,
    LAMBDA(a,
    b,
    "#"&CONCAT(DEC2HEX(ROUND((--TEXTSPLIT(
        a,
        ", "
    )+--TEXTSPLIT(
        b,
        ", "
    ))/2,
    0),
    2))))
Excel solution 9 for Blend RGB Colors into Hex, proposed by Hussein SATOUR:
=MAP(A2:A10,
    B2:B10,
    LAMBDA(x,
    y,
    CONCAT("#",
    DEC2HEX(ROUND((TEXTSPLIT(
        x,
        ","
    )+TEXTSPLIT(
        y,
        ","
    ))/2,
    0),
    2))))
Excel solution 10 for Blend RGB Colors into Hex, proposed by Sunny Baggu:
=MAP(
    
     A2:A10 & ", " & B2:B10,
    
     LAMBDA(
         x,
         
          LET(
              
               _a,
               BYROW(
                   WRAPCOLS(
                       TEXTSPLIT(
                           x,
                            ", "
                       ),
                        3
                   ) + 0,
                    LAMBDA(
                        a,
                         ROUND(
                             AVERAGE(
                                 a
                             ),
                              0
                         )
                    )
               ),
              
               _b,
               DEC2HEX(
                   "" & _a
               ),
              
               "#" & CONCAT(
                   IF(
                       LEN(
                           _b
                       ) < 2,
                        0 & _b,
                        _b
                   )
               )
               
          )
          
     )
    
)
Excel solution 11 for Blend RGB Colors into Hex, proposed by Anshu Bantra:
=MAP(
 Color1,
    
 Color2,
    
 LAMBDA(C_1,
     C_2,
    
 LET(
 nums_1,
     TEXTSPLIT(
         C_1,
          ", "
     ),
    
 nums_2,
     TEXTSPLIT(
         C_2,
          ", "
     ),
    
 avg_,
     ROUND((nums_1 + nums_2) / 2,
     0),
    
 hex_,
     DEC2HEX(
         avg_
     ),
    
 "#" & TEXTJOIN(
     ,
      ,
      IF(
          LEN(
              hex_
          ) = 1,
           "0" & hex_,
           hex_
      )
 )
 )
 )
)
Excel solution 12 for Blend RGB Colors into Hex, proposed by Charles Roldan:
=BYROW(
    A2:B10,
     LAMBDA(
         x,
          "#" & CONCAT(
              DEC2HEX(
                  ROUND(
                      MMULT(
                          {1,
                          1},
                           --TEXTSPLIT(
                               TEXTJOIN(
                                   "; ",
                                    ,
                                    x
                               ),
                                ", ",
                                "; "
                           )
                      ) / 2,
                       
                  ),
                   2
              )
          )
     )
)
Excel solution 13 for Blend RGB Colors into Hex, proposed by Andy Heybruch:
=MAP(A2:A10,
    B2:B10,
    LAMBDA(_a,
    _b,
    
LET(
 _c1,
    --TEXTSPLIT(
        _a,
        ","
    ),
    
 _c2,
    --TEXTSPLIT(
        _b,
        ","
    ),
    
 _rgb,
    ROUND((_c1+_c2)/2,
    0),
    
 _hex,
    DEC2HEX(
        _rgb
    ),
    
 "#"&CONCAT(
     IF(
         LEN(
             _hex
         )=1,
         "0"&_hex,
         _hex
     )
 ))))
Excel solution 14 for Blend RGB Colors into Hex, proposed by Pieter de Bruijn:
=MAP(A2:A10,
    B2:B10,
    LAMBDA(a,
    b,
    CONCAT("#",
    DEC2HEX(ROUND((TEXTSPLIT(
        a,
        ","
    )+TEXTSPLIT(
        b,
        ","
    ))/2,
    ),
    2))))
Excel solution 15 for Blend RGB Colors into Hex, proposed by Ziad A.:
=BYROW(
    A2:B10,
    LAMBDA(
        r,
        "#"&SORT(
            JOIN(
                ,
                DEC2HEX(
                    ROUND(
                        REDUCE(
                            ,
                            r,
                            LAMBDA(
                                a,
                                c,
                                a+SPLIT(
                                    c,
                                    ","
                                )
                            )
                        )/2
                    ),
                    2
                )
            )
        )
    )
)
Excel solution 16 for Blend RGB Colors into Hex, proposed by Edwin Tisnado:
=MAP(A2:A10,
    B2:B10,
    LAMBDA(x,
    y,
    "#"&CONCAT(DEC2HEX(ROUND((TEXTSPLIT(
        x,
        ,
        ", "
    )+TEXTSPLIT(
        y,
        ,
        ", "
    ))/2,
    ),
    2))))
Excel solution 17 for Blend RGB Colors into Hex, proposed by Songglod P.:
=CONCAT(
    "#",
    DEC2HEX(
        LET(
            col_deli,
            ", ",
            color1,
            --TEXTSPLIT(
                A2,
                col_deli
            ),
            color2,
            --TEXTSPLIT(
                B2,
                col_deli
            ),
            nums,
            color1+color2,
            MAP(
                nums,
                LAMBDA(
                    num,
                    ROUNDUP(
                        num/2,
                        0
                    )
                )
            )
        ),
        2
    )
)
Excel solution 18 for Blend RGB Colors into Hex, proposed by Ernesto Vega Castillo:
=MAP(A2:A10,
    B2:B10,
    LAMBDA(_c1,
    _c2,
    TEXTJOIN("",
    1,
    ,
    CHAR(
        35
    ),
    REDUCE("",
    LET(x,
    TEXTSPLIT(
        _c1,
        ,
        ","
    ),
    y,
    TEXTSPLIT(
        _c2,
        ,
        ","
    ),
    DEC2HEX(ROUNDUP((x+y)/2,
    0),
    2)),
    LAMBDA(
        g,
        c,
        g&c
    )))))
Excel solution 19 for Blend RGB Colors into Hex, proposed by Gabriel Raigosa:
="#"&MAP(A2:A10,B2:B10,LAMBDA(a,b,CONCAT(DEC2HEX(ROUND((TEXTSPLIT(a,",")+TEXTSPLIT(b,","))/2,0),2)))) 

=MAP(A2:A10,B2:B10,LAMBDA(a,b,CONCAT("#",DEC2HEX(ROUND((TEXTSPLIT(a,",")+TEXTSPLIT(b,","))/2,0),2)))) 

🔹ES:
="#"&MAP(A2:A10,B2:B10,LAMBDA(a,b,CONCAT(DEC.A.HEX(REDONDEAR((DIVIDIRTEXTO(a,",")+DIVIDIRTEXTO(b,","))/2,0),2)))) 

=MAP(A2:A10,B2:B10,LAMBDA(a,b,CONCAT("#",DEC.A.HEX(REDONDEAR((DIVIDIRTEXTO(a,",")+DIVIDIRTEXTO(b,","))/2,0),2))))
Excel solution 20 for Blend RGB Colors into Hex, proposed by Hussain Ali Nasser:
=MAP(A2:A10,B2:B10,LAMBDA(a,b,"#"&CONCAT(BYCOL(--TEXTSPLIT(a&"|"&b,",","|"),LAMBDA(x,DEC2HEX(ROUND(SUM(x)/2,),2))))))
Excel solution 21 for Blend RGB Colors into Hex, proposed by Hussain Ali Nasser:
="#"&MAP(A2:A10,
     B2:B10,
     LAMBDA(a,
    b,
     TEXTJOIN(,
    ,
    DEC2HEX(ROUND((TEXTSPLIT(
        a,
         ", "
    ) + TEXTSPLIT(
        b,
         ", "
    )) / 2,
     ),
     2))))
Excel solution 22 for Blend RGB Colors into Hex, proposed by Tyler Cameron:
=LET(
    a,
    DROP(
        REDUCE(
            "",
            A2:A10,
            LAMBDA(
                x,
                y,
                VSTACK(
                    x,
                    TEXTSPLIT(
                        y,
                        ", "
                    )
               & )
            )
        ),
        1
    ),
    b,
    DROP(
        REDUCE(
            "",
            B2:B10,
            LAMBDA(
                x,
                y,
                VSTACK(
                    x,
                    TEXTSPLIT(
                        y,
                        ", "
                    )
                )
            )
        ),
        1
    ),
    f,
    DEC2HEX(
        MAKEARRAY(
            ROWS(
                a
            ),
            COLUMNS(
                a
            ),
            LAMBDA(
                r,
                c,
                ROUND(
                    AVERAGE(
                        INDEX(
                            a,
                            r,
                            c
                        ),
                        INDEX(
                            b,
                            r,
                            c
                        )
                    ),
                    0
                )
            )
        ),
        2
    ),
    BYROW(
        f,
        LAMBDA(
            z,
            CONCAT(
                "#",
                z
            )
        )
    )
)
Excel solution 23 for Blend RGB Colors into Hex, proposed by Alexandra Popoff:
= LAMBDA(Color_1,
    [Color_2],
    
MAP(Color_1,
    if(
        ISOMITTED(
            Color_2
        ),
        Color_1,
        Color_2
    ),
    
 LAMBDA(z_C1,
     z_C2,
    LET(
 z_Col_Arr,
     ROUND((VALUE(
         TRIM(
             TEXTSPLIT(
                 INDEX(
                     z_C1,
                      1,
                      1
                 ),
                  ,
                  ","
             )
         )
     ) + VALUE(
         TRIM(
             TEXTSPLIT(
                 INDEX(
                     z_C2,
                      1,
                      1
                 ),
                  ,
                  ","
             )
         )
     )) / 2,
     0),
    
 z_Hex_Arr,
     DEC2HEX(
         z_Col_Arr
     ),
    
 z_Hex_Arr_Cor,
     IF(
         LEN(
             z_Hex_Arr
         ) = 1,
          "0" & z_Hex_Arr,
          z_Hex_Arr
     ),
    
 "#" & TEXTJOIN(
     "",
      TRUE,
      z_Hex_Arr_Cor
 )
 )))
)

Solving the challenge of Blend RGB Colors into Hex with Python

Python solution 1 for Blend RGB Colors into Hex, proposed by Konrad Gryczan, PhD:
import pandas as pd
input = pd.read_excel("425 Hex Color Blending.xlsx",usecols="A:B", nrows = 10)
test = pd.read_excel("425 Hex Color Blending.xlsx", usecols="C", nrows = 10)
def split_and_convert_colors(color):
 return [int(c) for c in color.split(", ")]
input['Color1'] = input['Color1'].apply(split_and_convert_colors)
input['Color2'] = input['Color2'].apply(split_and_convert_colors)
input['FinalColor'] = input.apply(lambda row: [(c1 + c2 + 1) // 2 for c1, c2 in zip(row['Color1'], row['Color2'])], axis=1)
input['Answer Expected'] = input['FinalColor'].apply(lambda color: '#' + ''.join([hex(c)[2:].zfill(2).upper() for c in color]))
input = input.drop(columns=['Color1', 'Color2', 'FinalColor'])
print(input.equals(test)) # True
                    
                  

Solving the challenge of Blend RGB Colors into Hex with Python in Excel

Python in Excel solution 1 for Blend RGB Colors into Hex, proposed by ferhat CK:
import math
al=xl("A1:B10", headers=True)
hex = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"]
j = [] 
for i in range(len(al)):
 x1 = al.Color1[i].split(",")
 x2 = al.Color2[i].split(",")
 x3 = "" 
 for n in range(len(x1)):
 ort = math.ceil((int(x1[n]) + int(x2[n])) / 2)
 x3 += str(hex[ort // 16]) + str(hex[ort % 16]) 
 j.append("#"+x3)
pd.DataFrame({"Answer Expected":j})
                    
                  

Solving the challenge of Blend RGB Colors into Hex with R

R solution 1 for Blend RGB Colors into Hex, proposed by Konrad Gryczan, PhD:
library(tidyverse)
library(readxl)
input = read_excel("Excel/425 Hex Color Blending.xlsx", range = "A1:B10")
test = read_excel("Excel/425 Hex Color Blending.xlsx", range = "C1:C10")
result = input %>%
 mutate(Color1 = strsplit(as.character(input$Color1), ", ") %>%
 map(., ~as.numeric(.x)),
 Color2 = strsplit(as.character(input$Color2), ", ") %>%
 map(., ~as.numeric(.x))) %>%
 mutate(FinalColor = map2(Color1, Color2, ~ceiling((.x + .y) / 2))) %>%
 mutate(`Answer Expected` = map_chr(FinalColor, ~rgb(.x[1], .x[2], .x[3], maxColorValue = 255))) %>%
 select(-Color1, -Color2, -FinalColor)
                    
                  

&&

Leave a Reply